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

Posted

技术标签:

【中文标题】我可以将 CSS 样式应用于元素名称吗?【英文标题】:Can I apply a CSS style to an element name? 【发布时间】:2011-07-25 00:51:54 【问题描述】:

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

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

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

<input type="submit" value="Go" name="goButton">

有没有一种方法可以应用基于 name="goButton" 的样式? “价值”呢?

这种情况很难找到,因为 Google 搜索会发现各种情况,其中“名称”和“价值”等广义术语会出现在网页中。

我有点怀疑答案是否定的……但也许有人有聪明的技巧?

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

input[type=text] 
  width: 150px;
  length: 150px;


input[name=myname] 
  width: 100px;
length: 150px;
<input type="text">
<br>
<input type="text" name="myname">

【讨论】:

尝试为这段代码的作用添加一些描述。它可以显着提高您的回答质量。【参考方案2】:

如果您在输入中使用的不是名称而是其他元素,那么您可以使用 there 属性定位其他元素。

    [title~=flower] 
      border: 5px solid yellow;
    
    <img src="klematis.jpg" title="klematis flower"  >
    <img src="img_flwr.gif" title="flower"  >
    <img src="img_flwr.gif" title="flowers"  >

希望它的帮助。谢谢

【讨论】:

【参考方案3】:

文本输入示例

input[type=text] 
  width: 150px;


input[name=myname] 
  width: 100px;
<input type="text">
<br>
<input type="text" name="myname">

【讨论】:

【参考方案4】:

你可以使用属性选择器,

input[name="goButton"] 
  background: red;
&lt;input name="goButton"&gt;

请注意,IE6 不支持它。

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

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

【讨论】:

你应该获得金牌【参考方案5】:

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

例如:

[name=test] 
  width: 100px;
<input type=text name=test>
<div name=test></div>

【讨论】:

【参考方案6】:

这是查询选择器的完美工作......

var Set1=document.querySelectorAll('input[type=button]');  // by type

var Set2=document.querySelectorAll('input[name=goButton]'); // by name

var Set3=document.querySelectorAll('input[value=Go]'); // by value

然后您可以遍历这些集合以对找到的元素进行操作。

【讨论】:

【参考方案7】:

对于未来的 googlers,仅供参考,@meder 的答案中的方法可以与任何具有 name 属性的元素一起使用,所以假设有一个名为 &lt;iframe&gt;xyz 然后你可以使用该规则如下。

iframe[name=xyz]     
    display: none;
   

name 属性可用于以下元素:

&lt;button&gt; &lt;fieldset&gt; &lt;form&gt; &lt;iframe&gt; &lt;input&gt; &lt;keygen&gt; &lt;map&gt; &lt;meta&gt; &lt;object&gt; &lt;output&gt; &lt;param&gt; &lt;select&gt; &lt;textarea&gt;

【讨论】:

这并没有真正增加任何问题。如果你真的想的话,name 属性可以放在任何东西上【参考方案8】:

如果我理解你的问题,那么,

是的,如果其 id 或名称可用,您可以设置单个元素的样式,

例如

如果 id 可用,那么您可以控制元素,例如,

<input type="submit" value="Go" name="goButton">

var v_obj = document.getElementsById('goButton');

v_obj.setAttribute('style','color:red;background:none');

否则,如果名称可用,则您可以控制元素,例如,

<input type="submit" value="Go" name="goButton">

var v_obj = document.getElementsByName('goButton');

v_obj.setAttribute('style','color:red;background:none');

【讨论】:

【参考方案9】:

您是否探索过使用 jQuery 的可能性?它有一个非常有效的选择器模型(语法类似于 CSS),即使您的元素没有 ID,您也应该能够使用父 --> 子 --> 孙关系来选择它们。一旦你选择了它们,就会有一个非常简单的方法调用(我忘记了确切的名称),它允许你将 CSS 样式应用于元素。

它应该易于使用,并且作为奖励,您很可能会非常兼容跨平台。

【讨论】:

【参考方案10】:

您可以使用属性选择器,但它们不会像 meder 所说的那样在 IE6 中工作,但是有一些 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 

【讨论】:

以上是关于我可以将 CSS 样式应用于元素名称吗?的主要内容,如果未能解决你的问题,请参考以下文章

根据子元素将CSS样式应用于元素[重复]

将 CSS 样式应用于子元素

如果它有带有 CSS 的子元素,则将样式应用于父元素 [重复]

Jquery - 将css样式应用于指定div中的所有元素?

jQuery 可以获取与元素关联的所有 CSS 样式吗?

CSS:将 CSS 样式应用于除 Material Angular 之外的所有内容