输入[类型=';文本';]CSS选择器不适用于默认类型文本输入?
默认输入类型为“文本”。我一直认为,以输入[类型=';文本';]CSS选择器不适用于默认类型文本输入?,css,css-selectors,Css,Css Selectors,默认输入类型为“文本”。我一直认为,以input[type='text']为目标的CSS声明将影响这些输入,即使该类型没有在控件上显式声明。然而,我只是注意到我的默认类型文本输入没有得到样式。为什么会这样?我该如何解决这个问题 input[type='text']{ 背景:红色; } /*为红色*/ /*不是红色的*/,因为它不应该这样做 input[type=text]{}是一个属性选择器,只会选择那些具有匹配属性的元素。CSS只使用DOM树中的数据,这与渲染器如何决定如何处理缺少属性的元素
input[type='text']
为目标的CSS声明将影响这些输入,即使该类型没有在控件上显式声明。然而,我只是注意到我的默认类型文本输入没有得到样式。为什么会这样?我该如何解决这个问题
input[type='text']{
背景:红色;
}
/*为红色*/
/*不是红色的*/
,因为它不应该这样做
input[type=text]{}
是一个属性选择器,只会选择那些具有匹配属性的元素。CSS只使用DOM树中的数据,这与渲染器如何决定如何处理缺少属性的元素没有多大关系
因此,要么让CSS反映HTML
input:not([type]), input[type="text"]
{
background:red;
}
或者使HTML显式
<input name='t1' type='text'/> /* Is Not Red */
及
因为所有属性总是在所有元素上定义的。(例如,
table
总是有一个border
属性,默认值为0
。要与所有浏览器兼容,您应该始终声明输入类型
一些浏览器将默认类型设为“文本”,但这不是一个好的做法。根据CSS规范,浏览器可能会使用也可能不会使用有关默认属性的信息;大多数情况下,他们不会。CSS 2.1规范中的相关条款如下所示。在CSS 3选择器中,它是子句,具有相同的名称。它建议:“选择器的设计应确保无论文档树中是否包含默认值,选择器都能正常工作。” 通常最好明确指定基本属性,例如
type=text
,而不是默认设置。原因是没有简单可靠的方法来引用具有默认类型属性的输入元素。试试这个
input[type='text']
{
background:red !important;
}
CSS选择器以标记上的属性为目标,而不是其默认假设。input:not([type]),input[type=“text”]
以涵盖这两种情况。@BoltClock-Yes;我没有想到这一点。我从来不知道input:not([type])
selector-解决了我的问题。我认为这主要是一个HTML/DOM问题,而不是CSS问题。在HTML中,
隐式变为
,因此在DOM中,
没有隐式变为
非常奇怪。@Kal不奇怪;这些只是不同的情况。HTML的定义在这方面非常精确:tbody
元素被明确定义为必须的,但是有一个可选的开始标记。或者换句话说,即使HTML源代码中没有
,tbody也在那里。另一方面,input
中的type
属性不是必需的。不带type
的input
的行为恰好与带type='text
的input
的行为相同,但这是巧合,与DOM树无关。这回答了一个问题:+1,注意“必须”一词在本节的任何地方都不使用(除了在一个例子中描述一个不同的级联问题外)。重要的是浏览器的实际行为。似乎没有浏览器能做到这一点。。。。。
element[attr] { ...properties... }
input[type='text']
{
background:red !important;
}