我可以将CSS样式应用于元素名称吗?

Que*_*ner 161 html css css-selectors

我目前正在开发一个项目,我无法控制我应用CSS样式的HTML.并且HTML没有很好地标记,因为没有足够的id和类声明来区分元素.

所以,我正在寻找可以将样式应用于没有id或class属性的对象的方法.

有时,表单项具有"名称"或"值"属性:

<input type="submit" value="Go" name="goButton">
Run Code Online (Sandbox Code Playgroud)

有没有办法可以应用基于name ="goButton"的样式?那么"价值"呢?

这是很难找到的东西,因为谷歌搜索会发现各种各样的实例,其中"名称"和"价值"等广义术语将出现在网页中.

我有点怀疑答案是否定的......但也许某人有一个聪明的黑客?

任何建议将不胜感激.

med*_*iev 251

您可以使用属性选择器__CODE__.请注意,IE6不支持它.

更新:在2016年你几乎可以随意使用它们,因为IE6已经死了.http://quirksmode.org/css/selectors/

http://reference.sitepoint.com/css/attributeselector


MRR*_*aja 51

文本输入示例

input[type=text] {
  width: 150px;
}

input[name=myname] {
  width: 100px;
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*isR 20

你可以使用属性选择器,但它们不能在IE6中工作,就像meder说的那样,有一些javascript解决方法.检查Selectivizr

更详细的属性选择器:http://www.css3.info/preview/attribute-selectors/

/* turns all input fields that have a name that starts with "go" red */
input[name^="go"] { color: red }
Run Code Online (Sandbox Code Playgroud)


Moh*_*jib 13

对于未来的Google,仅供参考,由@meder答案的方法,可以用具有名称属性的元素使用,因此可以说,那里有一个<iframe>名为xyz那么你可以使用规则为初级讲座.

iframe[name=xyz] {    
    display: none;
}   
Run Code Online (Sandbox Code Playgroud)

name属性可用于以下元素:

  • <button>
  • <fieldset>
  • <form>
  • <iframe>
  • <input>
  • <keygen>
  • <map>
  • <meta>
  • <object>
  • <output>
  • <param>
  • <select>
  • <textarea>

  • 这并没有真正增加任何问题。如果你真的想要,`name` 属性可以放在任何东西上 (2认同)

小智 5

[name=elementName]{}之前不带标签使用也可以。它将影响具有此名称的所有元素。

例如:

[name=test] {
  width: 100px;
}
Run Code Online (Sandbox Code Playgroud)
<input type=text name=test>
<div name=test></div>
Run Code Online (Sandbox Code Playgroud)