我应该使用CSS:禁用伪类还是属性select器还是一个意见问题?
我正在尝试设置禁用的input样式。 我可以用:
.myInput[disabled] { }
要么
.myInput:disabled { }
属性select器是现代CSS3方式还是前进方向? 我曾经使用伪类,但我不能find任何信息,是否他们是旧的方式,将不被支持,或者他们是否平等,你可以使用任何你最喜欢的。
我不需要支持旧的浏览器(这是一个Intranet应用程序),所以它是:
- 属性更新更好
- 伪类仍然是要走的路
- 无论你最喜欢哪一个
- 有一个技术上的理由使用一个在另一个
属性select器是现代CSS3方式还是前进方向?
- 属性更新更好
没有; 实际上,自CSS2以来,属性select器就已经存在了,而且自HTML 4以来, disabled
属性本身就已经存在了。 据我所知,在select器3中引入了:disabled
伪类,这使得伪类更新。
- 有一个技术上的理由使用一个在另一个
是的,在一定程度上。
使用属性select器,您依赖的知识是您正在devise的文档使用disabled
属性来指示禁用的字段。 从理论上讲,如果你的样式不是HTML,禁用的字段可能不会使用disabled
属性来表示,例如它可能被enabled="false"
或类似的东西。 甚至将来的HTML版本都会引入新的元素,这些元素使用不同的属性来表示启用/禁用状态; 那些元素将不匹配[disabled]
属性select器。
:disabled
伪类将select器从您正在处理的文档中分离出来。 该规范只是指出,它的目标是被禁用的元素,而不pipe元素是被启用还是禁用,都不是由文档语言定义的 :
什么构成启用状态,禁用状态和用户界面元素是语言相关的。 在一个典型的文档中,大多数元素都不是
:enabled
也不是:disabled
。
换句话说,当你使用伪类时,UA根据你正在devise的文档自动计算出匹配的元素,所以你不必告诉它如何。
就DOM而言,我相信在DOM元素上设置disabled
属性也会修改HTML元素的disabled
属性,这意味着两个select器与DOM操作之间没有区别。 我不确定这是否依赖于浏览器,但是在所有主stream浏览器的最新版本中都有一个小提示:
// The following statement removes the disabled attribute from the first input document.querySelector('input:first-child').disabled = false;
你最有可能是HTML样式,所以这些都不会对你造成任何影响,但是如果浏览器的兼容性不是问题,我会select:enabled
和:disabled
:not([disabled])
和[disabled]
只是因为伪类携带属性select器没有的语义。 我是这样的纯粹主义者。
事实certificate,Internet Explorer 10和11在某些元素上无法识别:disabled
伪类,只能使用属性select器语法正常工作。
#test1:disabled { color: graytext; } #test2[disabled] { color: graytext; }
<form> <fieldset id="test1" disabled>:disabled</fieldset> <fieldset id="test2" disabled>[disabled]</fieldset> </form>