css - input[type ='text' ] CSS 选择器不适用于默认类型的文本输入?

标签 css css-selectors

默认输入类型是“文本”。我一直假设以 input[type='text'] 为目标的 CSS 声明会影响这些输入,即使类型没有在控件上显式声明也是如此。但是,我刚刚注意到我的默认类型文本输入没有获得样式。为什么会这样?我该如何解决这个问题?

input[type='text'] {
  background: red;
}
<input name='t1' type='text' /> /* Is Red */
<input name='t1' /> /* Is Not Red */

最佳答案

CSS 仅使用 DOM 树中的数据,这与渲染器如何决定如何处理缺少属性的元素无关。

所以要么让 CSS 反射(reflect) HTML

input:not([type]), input[type="text"]
{
background:red;
}

或使 HTML 显式化。

<input name='t1' type='text'/> /* Is Not Red */

如果它不这样做,你永远无法区分

element { ...properties... }

element[attr] { ...properties... }

因为所有属性总是会在所有元素上定义。 (例如,table 总是有一个 border 属性,默认为 0。)

关于css - input[type ='text' ] CSS 选择器不适用于默认类型的文本输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603876/

相关文章:

css - 在运行时消失的 DIV?

css - 在 CSS 中声明一组样式时 "."和 "#"有什么区别?

python - 无法使用BeautifulSoup获取div文本

html - HTML 电子邮件的表格背景图像 url 的替代方案(不使用 div)

html - CSS 背景图像不起作用

Javascript,将div颜色设置为另一个div颜色

css - AngularJS CSS中CSS选择器&和>是如何使用的

javascript - 使用原型(prototype) Javascript 框架搜索具有特定文本的节点

css - 否定 Tailwind css 中的条件

jquery - 更改名为 fancybox 的 jquery 插件的背景透明度