JSF正在将输入字段的ID设置为search_form:expression
。我需要在该元素上指定一些样式,但该冒号看起来像浏览器的伪元素的开头,因此它被标记为无效并被忽略。反正有没有逃过冒号或什么?
input#search_form:expression {
///...
}
答案 0 :(得分:106)
答案 1 :(得分:90)
在冒号之前使用反斜杠在许多版本的IE中都不起作用(特别是6和7;可能还有其他版本)。
解决方法是使用冒号的十六进制代码 - 即<3A
示例:
input#search_form\3A expression { }
这适用于所有浏览器:包括IE6 +(可能更早?),Firefox,Chrome,Opera等。它是CSS2 standard的一部分。
答案 2 :(得分:7)
This article将告诉您如何转义CSS中的任何字符。
现在,甚至还有一个工具:http://mothereff.in/css-escapes#0search%5fform%3Aexpression
TL; DR此问题的所有其他答案都不正确。您需要转义下划线(以防止IE6在某些边缘情况下完全忽略规则)和冒号选择器在不同浏览器中正常工作。
从技术上讲,冒号字符可以转义为\:
,但这在IE&lt; 1中不起作用。 8,所以你必须使用\3a
:
#search\_form\3a expression {}
答案 3 :(得分:5)
你可以用反斜杠
来逃避它input#search_form\:expression {
///...
}
来自CSS Spec
4.1.3字符和案例
以下规则始终有效:
除了不受CSS控制的部分外,所有CSS样式表都不区分大小写。例如,HTML属性“id”和“class”,字体名称和URI的值的区分大小写超出了本规范的范围。请特别注意,元素名称在HTML中不区分大小写,但在XML中区分大小写。 在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-z0-9]和ISO 10646字符U + 00A1和更高,加上连字符( - )和下划线(_) ;它们不能以数字开头,也不能以数字后跟连字符开头。标识符还可以包含转义字符和任何ISO 10646字符作为数字代码(请参阅下一项)。例如,标识符“B&amp; W?”可以写成“B \&amp; W \?”或“B \ 26 W \ 3F”。 请注意,Unicode是代码相当于ISO 10646的代码(参见[UNICODE]和[ISO10646])。
在CSS 2.1中,反斜杠()字符表示三种类型的字符转义。 首先,在字符串内部,将忽略后跟换行符的反斜杠(即,该字符串被视为不包含反斜杠或换行符。)
其次,它取消了特殊CSS字符的含义。任何字符(十六进制数字除外)都可以使用反斜杠进行转义,以消除其特殊含义。例如,“\”“是由一个双引号组成的字符串。样式表预处理器不能从样式表中删除这些反斜杠,因为这会改变样式表的含义。
第三,反斜杠转义允许作者引用他们不能轻易放入文档的字符。在这种情况下,反斜杠后跟最多六个十六进制数字(0..9A..F),它代表带有该数字的ISO 10646([ISO10646])字符,该字符不能为零。 (在CSS 2.1中未定义如果样式表确实包含Unicode代码点为零的字符会发生什么。)如果[0-9a-f]范围内的字符跟随十六进制数字,则需要编号的末尾明确。有两种方法可以做到这一点:
带有空格(或其他空白字符)的:“\ 26 B”(“&amp; B”)。在这种情况下,用户代理应将“CR / LF”对(U + 000D / U + 000A)视为单个空白字符。 通过提供正好6个十六进制数字:“\ 000026B”(“&amp; B”) 实际上,这两种方法可以结合起来。在十六进制转义后,只忽略一个空白字符。请注意,这意味着转义序列之后的“真实”空格本身必须进行转义或加倍。
如果该数字超出Unicode允许的范围(例如,“\ 110000”高于当前Unicode允许的最大10FFFF),则UA可以用“替换字符”(U + FFFD)替换该转义。如果要显示该字符,则UA应显示可见符号,例如“缺少字符”字形(参见15.2,第5点)。
注意:反斜杠转义(在允许的情况下)始终被视为标识符或字符串的一部分(即“\ 7B”不是标点符号,即使“{”是,并且“\ 32”是允许的类名的开头,即使“2”不是)。 标识符“te \ st”与“test”完全相同。
答案 4 :(得分:4)
我对冒号有同样的问题,我无法更改它们(无法访问输出冒号的代码),我想用CSS3选择器和jQuery获取它们。
我把它放在这里,因为它可能对某人有帮助
input[id="something:something"]
在jQuery选择器中运行良好,它也可以在样式表中使用(可能有浏览器问题)
答案 5 :(得分:4)
在JSF 2,0中,您可以使用web.xml文件指定分隔符作为javax.faces.SEPARATOR_CHAR的初始参数
阅读本文:
答案 6 :(得分:0)
我在ADF框架中工作,我经常不得不使用JQuery来选择元素。这种格式适合我。这也适用于IE8。
$('[id*="gantt1::majorAxis"]').css('border-top', 'solid 1px ' + mediumGray);
答案 7 :(得分:-1)
我发现只有这种格式适用于IE7(Firefox也是如此),我使用的是JSF / Icefaces 1.8.2。
Say form id=FFF, element id=EEE var jq=jQuery.noConflict(); jq(document).ready(function() { jq("[id=FFF:EEE]").someJQueryLibFunction({ jQuery lib function options go here }) });