elem.hidden
是一个新属性,允许隐藏元素并检测它们是否被隐藏。
浏览器支持不是很好所以我想填充它。如果我要填充这个属性,那么在通过elem.style
设置CSS属性方面它应该是什么样的。
Object.defineProperty(HTMLElement.prototype, "hidden", {
get: function get() {
return this.style.<???>;
},
set: function set(v) {
this.style.<???> = v ? <???> : <???>
},
configurable: true
});
elem.style.display
设为"none"
或<original value>
?elem.style.visibility
设为"hidden"
或"visible"
?答案 0 :(得分:3)
浏览器需要将隐藏属性实现为[hidden] { display:none }
请参阅Boris Zbarsky对Force browser to ignore HTML 5 features的回答以及随后的评论。
请注意,这是通过用户代理样式表完成的,因此它具有非常低的特异性,并且很容易被更具体的样式覆盖,即使是那些没有提到隐藏属性的样式。
虽然我认为这是实现隐藏属性的一种可怕方式,但这些是规则。离您最近的行为是将[hidden] { display:none }
尽可能地放在HTML页面第一个样式表的最开头,而不是直接应用于元素的样式属性,它将具有具有很高的特异性。
就元素属性而言,the HTML5 spec表示“隐藏的IDL属性必须反映同名的内容属性。”,这是您应该通过Object.defineProperty添加的唯一内容。但是,肯尼贝克关于Object.defineProperty得到更广泛支持的评论可能是有效的。
答案 1 :(得分:1)
visibility: hidden
个元素仍然需要在屏幕上占用空间时进行渲染,因此display: none
更接近.hidden = true
因为display: none
元素可以并且将被忽略渲染-wise。