CSS表单[action]不使用Query Strings

时间:2010-07-09 13:35:27

标签: css css-selectors

大家好我的CSS都有一些问题 我试图根据用户所在的页面突出显示导航链接。

我有这种风格可以按照我的意愿工作,但是当我将查询字符串传递给pcisHPprofile.aspx时,CSS无效。有谁知道我如何使用这种样式来处理查询字符串?

 body form[action="pcisHPprofile.aspx"] #btnuser

{
    padding: 18px 4px 5px 4px;
    background-image: url(../images/tabbluleft.gif) ;
    background-repeat:no-repeat; 
    color: #fff;

}



<div id="nav" class="nav" >

      <ul>
       <li id="tab1">
       <a id="btnsession" href="pcissessionlist.aspx" > <span >Session</span></a>
         </li>
          <li id="tab2">
              <a id="btnsystem" href="pcissystemsettings.aspx" > <span >System Settings</span></a>
            </li>
          <li id="tab3">
          </li>
          <li id="tab4">
                            <a id="btnuser" href="pcisuserlist.aspx" > <span >User Logins</span></a>
              </li>
          <li id="tab5">
                                          <a id="btninterpreter" href="pcisinterpreterlist.aspx" > <span >Interpreter Profile</span></a>

              </li>
       <li id="tab6"><asp:LinkButton ID="btnreports" runat="server" Visible="false" cssid="cssreports" PostBackUrl="#"><span>Reports</span></asp:LinkButton></li>
      </ul> 

    </div>

3 个答案:

答案 0 :(得分:2)

我假设#btnuser在某些表单中有一些按钮,其中一个表单有action =“pcisHPprofile.aspx”?

如果这是正确的,那么您的错误就是您有许多具有相同ID的按钮attirbute id =“btnuser”。 ID attibute必须在页面上独一无二。将id =“btnuser”更改为按钮和选择器上的class =“btnuser”:

body form[action="pcisHPprofile.aspx"] #btnuser {
}

body form[action="pcisHPprofile.aspx"] .btnuser {
}

然后它应该工作。

在第一种形式中,只有当id =“btnuser”的FIRST按钮实际位于具有action =“pcisHPprofile.aspx”的表单内时,它才有效。如果它在任何其他形式内,那么它将无法工作。

祝你好运, SWilk

更新:

在OP更新问题之后,我认为这种形式的选择器应该有效:

body form[action^="pcisHPprofile.aspx"] #btnuser {
...
}

表单中有id = btnuser的元素,“pcisHPprofile.aspx”开头。如果acutal action attibute只包含“pcisHPprofile.aspx”或“pcisHPprofile.aspx?any-parameters&amp; and = some-values”,那就无所谓了。

祝你好运, SWilk

答案 1 :(得分:0)

使用动作属性进行样式化是一种不好的做法。只需给你的表单一个名称,类或ID,如&lt; form class =“pcisHPprofile”action =“pcisHPprofile.aspx”&gt;然后将CSS样式应用于该名称/ class / id。

form.pcisHPprofile { 
     padding: ...

答案 2 :(得分:0)

找到了一个有效的解决方案有点hacky,我不是100%热衷于它,但它的工作原理。

我将查询字符串更改为这样

profile.aspx?-&username=

来自这个

 profile.aspx?username=

我将样式更改为

Form[action|="pcisinterpreterprofile.aspx?"] #tab5


{
background-image: url(../images/tabbluright.gif);
  background-repeat:no-repeat; 

}

不同之处在于我已将=更改为| =。

  

[ATT | = VAL]       表示具有att属性的元素,其值为   完全是“val”或以“val”开头   紧接着是“ - ”(U + 002D)。   这主要是为了允许   语言子码匹配(例如,   h元素中的hreflang属性   HTML),如RFC 3066中所述   ([RFC3066])或其继任者。对于郎   (或xml:lang)语言子代码   匹配,请看:朗   伪类。

通过执行此操作,css选择器适用于具有查询字符串的页面。你只需要确保查询字符串至少有? - 一开始。正如我在最后所说的那样,它不是很好但是有效。