CSS 能够根据 HTML 元素的任何属性来定位元素。 您可能已经了解了类和 ID。 查看这段 HTML 代码
<h2 id="title" class="magic" rel="friend">David Walsh</h2>
此单个元素具有三个属性:ID、类和 rel。 要在 CSS 中选择此元素,您可以使用 ID 选择器(.magic
)。 但您是否知道您也可以根据 rel 属性来选择它? 这被称为属性选择器
h2[rel="friend"] {
/* woohoo! */
}
不过,属性选择器还有更多内容,让我们仔细看看所有不同的选项,并尝试涵盖一些在它们可能有用时的一些“现实世界”场景。
属性完全等于某个值

在我们上面使用的示例中,h2 元素的属性是“friend”。 我们编写的 CSS 选择器定位了该 h2 元素,因为它的 rel 属性恰好是“friend”。 换句话说,等号的意思与您想的一样……完全匹配。 请查看另一个基本示例
<h1 rel="external">Attribute Equals</h1>
h1[rel="external"] { color: red; }
这在样式化博客链接方面是一个很好的现实世界示例。 假设您有一系列指向朋友网站的链接,如下所示
<a href="http://perishablepress.com">Jeff Starr</a>
<a href="http://davidwalsh.name">David Walsh</a>
<a href="http://accidentalninja.net/">Richard Felix</a>
然后您想稍微不同地设置每个链接的样式。 传统方法可能是为每个链接提供一个类名称作为定位目标,但这需要额外的标记,而这始终是需要避免的事情(语义等)。 另一种方法可能是使用 :nth-child,但这要求它们的顺序永远不会改变。 这正是属性选择器的完美用例……这些链接已经拥有可以定位的唯一属性!
a[href="http://perishablepress.com"] { color: red; }
我相信最常见的用法是将常规属性选择器用于输入。 有文本、按钮、复选框、文件、隐藏、图像、密码、单选按钮、重置和提交(我有没有遗漏任何?)。 它们都是<input>,但它们又截然不同。 因此,像这样input { padding: 10px; }大多数情况下是一个坏主意。 很常见的是看到类似以下内容
input[type="text"] { padding: 3px; }
input[type="radio"] { float: left; }
这实际上是获取某些类型的输入而不影响其他输入以及不添加额外标记的唯一方法。
关于引号的说明:在属性选择器中,您通常可以不使用引号,例如 [type=radio]
,但省略引号的规则很奇怪,并且在实际浏览器实现之间不一致。 因此,最佳实践是使用引号,例如 [type="radio"]
。 这样做更安全,并且始终有效。
属性包含某个值(位于任意位置)

从这里开始变得更有意思。 属性选择器中的等号前面可以添加其他字符,从而略微改变其含义。 例如,“*=” 表示“匹配以下值在属性值中的任意位置”。 请查看此示例
<h1 rel="xxxexternalxxx">Attribute Contains</h1>
h1[rel*="external"] { color: red; }
请记住,类和 ID 也是属性,可以与属性选择器一起使用。 因此,假设您正在为一个网站编写 CSS,您无法控制标记,并且一位粗心的开发者有三个您需要定位的 DIV
<div id="post_1"></div>
<div id="post_two"></div>
<div id="third_post"></div>
您可以使用以下方法选择它们
div[id*="post"] { color: red; }
属性以某个值开头

<h1 rel="external-link yep">Attribute Begins</h1>
h1[rel^="external"] { color: red; }
使用它的一个现实世界示例是,假设您想将指向朋友网站的所有链接的样式与其他链接不同。 无论您是链接到他们的主页还是任何子页面,您都希望将指向他们的任何链接都设置样式。
a[href^="http://perishablepress.com"] { color: red; }
这将匹配指向他们主页的链接,以及所有其他子页面。
属性以某个值结尾

我们可以根据属性值的开头来选择,为什么不能根据结尾来选择呢?
<h1 rel="friend external">Attribute Ends</h1>
h1[rel$="external"] { color: red; }
使用这些的一个好用例是,根据文件类型对带图标的文件下载锚链接进行标记。 例如,PDF 文件使用 PDF 图标,Word 文档使用 Word 图标
a[href$=".pdf"] { background: url(icon-pdf.png) left center no-repeat; padding-left: 30px; }
a[href$=".doc"] { background: url(icon-doc.png) left center no-repeat; padding-left: 30px; }
属性位于空格分隔的列表中

您可能已经知道,您可以将多个类应用于元素,对吧? 如果这样做,您仍然可以在 CSS 中使用 .class-name 来定位其中的任何一个。 属性选择器没有那么容易。 如果您的 rel 属性具有多个值(例如,空格分隔列表中的值),则需要使用“~=
“
<h1 rel="friend external sandwich">Attribute Space Separated</h1>
h1[rel~="external"] { color: red; }
您可能在想,为什么我要使用这个,而 *= 也能匹配这个,并且更加通用? 的确,它更加通用,但它也可能过于通用。 此选择器要求值周围有空格,而 *= 则不需要。 因此,如果您有两个元素,一个具有rel=home friend-link另一个具有rel=home friend link您将需要空格分隔选择器才能正确地定位第二个元素。
属性是破折号分隔列表的开头

这将选择如果破折号分隔的属性值列表的开头与选择器匹配。
<h1 rel="friend-external-sandwich">Attribute Dash Separated</h1>
h1[rel|="friend"] { color: red; }
请注意,即使它是根据选择器的开头进行匹配,但第一个破折号之前的整个字符串部分也必须匹配。 因此,在上面的示例中,如果rel
属性是friend2-external-sandwich
,则它将不匹配,而^=
属性选择器将匹配。
多个属性匹配

需要注意的是,您可以在同一个选择器中使用多个属性选择器,这要求它们全部匹配才能使选择器本身匹配。
<h1 rel="handsome" title="Important note">Multiple Attributes</h1>
h1[rel="handsome"][title^="Important"] { color: red; }
不区分大小写的属性选择器
默认情况下,属性选择器内部的字符串区分大小写,但您可以传递一个使它不区分大小写的值,而不是在需要匹配大小写的情况下匹配大小写的多种排列组合
/* Will match
<div data-state="open"></div>
<div data-state="Open"></div>
<div data-state="OPEN"></div>
<div data-state="oPeN"></div>
*/
[data-state="open" i] { }
在 CSS 中使用属性
您不仅可以通过属性进行选择,还可以在 CSS 内容中使用属性,例如…
.el::before {
content: attr(data-prefix) ": ";
}
希望有一天,我们会在 CSS 中的attr()
函数中获得对类型和备用的支持,例如
.el {
/* <div class="el" data-font-size="18"> */
font-size: attr(data-font-size px);
/* <div class="el"> */
font-size: attr(data-font-size px, 18px);
}
浏览器支持
上面的每个示例都可以在所有现代浏览器中运行:Safari、Chrome、Firefox、Opera 和 IE。 Internet Explorer 对所有这些都具有完美支持,直到版本 7,但在版本 6 中没有支持。 要在您的浏览器中进行测试,请查看 测试页面。 如果行/选择器样式为红色,则表示它可以运行。
太棒了,克里斯——我一直不知道这一点。 我将来一定会更多地使用这种方法! 很奇怪,我从来没有在任何网站的样式表中见过这种形式的代码。 也许它不像我们期望的那样为人所知。
那是因为很多人仍在使用旧浏览器……
好吧,这太诡异了。
现在我正在重新阅读 Eric Meyer 的 CSS 书,我刚看完关于属性选择器的那部分(第 38 页)…
哇哦,不错,这有大量的应用场景。
a[href^=http://] { color: red; }
使用 CSS 快速定位所有外部链接。我喜欢它!另外,今天我在 .net 的封面看到了你的名字,差点晕倒了… 我本来想买它的(它是一本很棒的杂志),但我没时间,因为我当时在火车站。
一如既往,继续你的优秀工作!
可能会有一些问题,比如使用 WordPress 和主题引用所有内部链接,这些链接使用了域名,因此在这种情况下,必须使用 rel=”external”。
但我同意,对于大多数情况,它很棒!
在这种情况下,你只需要使用层叠样式表,并为以 http://yourdomain.com 开头的链接更改样式。
也就是说
a {color: blue; }
a[href^=http://] { color: red; }
a[href^=http://mydomain] { color: blue; }
或者你可以使用 :not() 并消除额外的选择器
a {color: blue; }
a:not([href^=http://mydomain]) { color: red; }
非常感谢这篇文章,它已被证明是一个巨大的节省时间的方法!
我使用这些技巧创建了一个针对 <a> 标签属性的样式表,我现在将它应用于我标记的大型网页。CSS 根据大量条件对链接应用不同的背景颜色,例如:
没有 “title” 属性
绝对内部链接
404s
非 HTML 链接,例如 PDF
片段链接
这意味着,当我将这些大型网络文档与客户最初发送的普通 Word 文档进行对比时,立即就能清楚地看到哪些 <a> 标签需要关注以及需要做些什么。你可以使用相同的技术来定位任何 HTML 元素。
非常感谢!
你看不到它是因为缺乏对旧浏览器的支持。
你可以使用每个元素的类来实现相同的结果。如果可能的话,我个人更喜欢这种方法,但对于表单,类可能仍然是事实上的选择。
“如果行/选择器样式为红色,则有效。”
红色通常表示它不起作用,我建议将其更改为绿色;)
哇哦。这就是我要说的。让我想知道 css3 完成后会有什么样的酷炫、鲜为人知的小技巧。
非常不错的总结 - 感谢
很棒的文章 Chris… 我现在知道了这个更好的方法,并将在我的下一个项目中使用它…. 感谢分享!
对于指向外部网站的链接,你也可以定位 “target”!
因此,如果你有一个指向外部网站的链接,你可能会在一个新窗口中打开它。
所以…
a[target=_blank] { color: red; }
你觉得怎么样 Chris?
对我来说没问题!
Andy
没什么不对。只是指向外部网站的链接不一定有它,只有当你打算在新的窗口/标签中打开链接时才会有它。
没错 - 但我认为我的客户 9 次中有 10 次希望外部链接在新标签/窗口中打开。(正确与否!)
希望你读到这段 Chris,但我一直在用硬编码在所有链接中添加 target 属性。我真的没有发现这有什么问题,而且不会陷入整个争论中,但我是否应该开始使用 rel=”external” 等?
我认为大多数可用性工程师都同意,任何链接都不应该打开新窗口,因为这会对用户做出选择,更重要的是,这会破坏后退按钮。
当然,如果你的客户要求并期望这样做…
没错,但是有些时候你无法在同一个页面中打开某些东西,例如,当你填写表单并想要查看条款时,你必须让它在新页面中打开。
我不明白的是,除了 rel=”external” 在严格模式下有效之外,它与 target=”_blank” 相比有什么优势?
“…但是有些时候你无法在同一个页面中打开某些东西,例如,当你填写表单并想要查看条款时,你必须让它在新页面中打开。”
不一定。确实有一些选项可以允许用户查看条款,而无需打开新页面,例如模态框/窗口。
别忘了,target=”_blank” 在 XHTML 中无效。我相信它对于过渡性 HTML 仍然有效,不过我可能错了。
<a href=”#” rel=”nofollow”>外部</a>
再试一次….. [ onclick = ” this.target=’_blank’ ” ]
感谢这段小代码。我不常使用它,但现在使用它并验证。
哇哦!太酷了!CSS 的纯多样性总是让我惊叹不已。
感谢 Chris。
我知道这一点,但并不了解 | 和 ~ 之间的那些小细节。
另外,因为我相信它可以在所有浏览器中运行(对 IE6 不好,是吗?),我可以用它更多。
不错!rel$ 的一个很好的实际例子是为链接添加图标,例如,在以 .pdf 结尾的每个链接上添加一个 pdf 图标。
谢谢!
det var bra!!! 我喜欢它,我喜欢它…
哦,是的!当然,这很棒。示例供大家参考
a[href$=pdf] {
background-image: { url(/images/pdf-icon.png) no-repeat; }
padding-left: 30px;
}
嘿 Chris,上面的代码有错字;)
background: url(/images/pdf-icon.png) no-repeat;
除非我将 “background-image” 更改为 “background”,否则它无法在 Firefox 中运行。
a[href$=pdf] {
background: url(../img/pdf.png) no-repeat;
padding: 0 0 0 24px;
}
我猜这是因为你不能将 “no-repeat” 放入 background-image 属性中。很确定 Chris 的意思是 “background”,因为他包含了 “no-repeat”。
嘿 Chris!很棒的文章!我以前不知道 CSS 这么灵活。
看到即使是天才也会急于求成,打出奇怪的代码,也很令人鼓舞;)
继续努力,伙计 - 我每天都会查看你的网站!
干得好!
请善待 PDF 链接 (100%)。
<a href="docuemnt.pdf#zoom=100" rel="nofollow">
同时使用这两个选择器。a[href$=".pdf"], a[href$=".pdf#zoom=100"] { /<em>你的漂亮样式在这里</em>/ }
感谢 Chris,又多了一个正则表达式的应用。每次我查看 CSS 时,它都会变得更加动态。这些示例会派上用场。我唯一要挑剔的是:“There is a lot more too attribute selectors” 使用了错误的同音词。
嘿,为什么不使用 http://code.google.com/p/ie7-js/ ?当然,这可能会降低速度,但这是 IE6 用户需要付出的代价 :) 我认为这一次它不像圆角那样可以省略,这是可用性的问题,我们应该提供它,即使是对那些无知的 IE 用户 :))
正如我在 http://www.evotech.net/blog/2007/05/ie7-css-selectors-how-they-fail/ 中读到的一样,IE7 中的选择器存在一些问题,所以我想你也应该指出这一点。
非常感谢!我之前甚至不知道选择器中存在这些伪正则表达式。
这里确实有一些强大的功能。我真的很喜欢它,因为 WordPress 支持整个 rel 属性,用于博客列表等。
如果可以使用 != 表示“不等于”,那就太好了。由于 WordPress 对所有链接使用 http:,因此无法使用 a[href^=http://] 来定位外部链接。但是,如果可以执行类似以下操作,那就太好了:a[href!=https://css-tricks.org.cn]。
好吧,你可以始终使用 jQuery 来实现这一点。但正如作者所说,WordPress 中有 rel="external" 用于此。
你可以直接设置以 http 开头的链接的属性样式。
a[href^=http://] { background: url(extIcon.gif); }
…然后更正你域内链接的样式。
a[href^=https://css-tricks.org.cn] { background: url(none); }
需要注意的是,属性选择器的特异性低于普通的类或 ID 选择器,因此
a[id=someID] {color: blue; } 会被 a#someID { color: red; } 覆盖。
可以使用 a[href^=http://]:not([href^=http://yourdomain.com]),但它在任何 IE 版本中都不受支持。
上周我买了本《高级 CSS》书,里面谈到了很多我们不知道(或没有考虑过)的这些高级选择器。令人惊叹的是,其中一些选择器功能非常强大,但很少有人使用。
对不同的 CSS 属性选择器做出了很好的解释。过去我一直没有使用过这些,因为纯粹是不知道何时或如何使用它们。这太有帮助了,我看到自己将来会更多地使用它。
啊哈…现在我明白了!我一直使用 Bluetrip 和 H5,但没有完全理解 [] 之间的含义。
再次感谢,Chris!
我从来没有想过用这种方式做事情,甚至从来没有想过要放弃使用类等。它是否跨浏览器兼容?有些人说可以,有些人说不可以!对所有不同的变体运行一些浏览器测试将会很有趣。
我真的很喜欢将它用于文件扩展名目的。
“a[href$=pdf] {
background-image { url(/images/pdf-icon.png) no-repeat }
padding-left: 30px;
}”
好文章!
在我的 Internet Explorer 7 中它不起作用。我正在开发一个网站,在这个网站上,我们展示了大量用于信息目的的徽标。其中一个徽标的拥有者希望将其下架,直到我们获得许可。因此,为了避免重写后端代码,我尝试使用此方法仅针对这种情况删除徽标。
div.foo .bar[style*=xyz] {
background-image:none !important;
}
在 IE7 中不会删除背景图像。我必须使用 !important,因为它是一个添加背景的内联样式(我知道这没有将内容与样式分离,但以这种方式编程效果更好)。
CSS 属性选择器很棒,我每天都在使用它们,虽然我不知道“带连字符”和“带空格分隔”的变化。感谢你的提示。
然而,你忽略了极其重要的一点。IE7 可以通过一个特定的选择器崩溃。没错,你没有听错。只需将以下 CSS 代码放置在你的页面或样式表中,它就会将 IE7 关闭,甚至不会记录有关崩溃的 Windows 事件。
button[value=””]
或
button[value=”some value”]
非常棒的 nuts and bolts geeky,更不用说非常有用。这就是我热爱这个网站的原因。
这是我使用的代码类型
a:not([href^="http://www.arpia.be"]):not([href^="#"]):not([href^="/"]):after {
content:"\279F";
}
这会在每个外部链接之后添加一个小箭头。
完全同意使用 rel 比引入新类更好,但还是要稍微挑剔一下。
在现实世界中,大多数情况下你并没有节省任何标记。根据我的经验,几乎没有链接在位设置 rel 属性。因此,不使用类而切换到 rel 只是用一个属性替换另一个属性。从概念上讲更好,但 IMHO 并没有真正的节省。
通过引入 rel 属性,你一石二鸟。你可以删除 target 属性(假设你使用的是 rel="external"),并且你正在设置外部链接的样式,这比使用 <href=”#” rel=”nofollow”> 更有效率。同样,避免引入新的类并允许你删除 target 属性。
哎呦,
<a href="#" class="external" target="_blank"
我认为他所指的不仅仅是链接,还包括 H1 或 img 标记。你不使用 class=””,而只是用 rel=”” 替换它,在这种情况下,纯粹为了减少标记而这样做是多余的。然而,Chris 暗示的是,使用它来根据其属性选择特定标签。对表单来说尤其有用。与其为每个标签指定自己的类来定位它,不如通过 input[type=text/submit/button] 等来定位它。这就是它派上用场的地方。
你无需定位 rel,可以使用任何属性来定位它。例如,我正在使用
input[type=”submit”]
作为我其中一个样式表中的选择器。
这些都是选择器非常有趣的使用方式。牢记它们,肯定会使网站开发变得更加容易。
非常有用的文章。我几乎不知道它们,但在编码时从未使用过它们!现在我一定会使用它们,特别是因为我不再支持 IE6 了。
谢谢!
不错,这很有帮助。我一直试图让链接从其容器获取样式,例如
#main a:hover {color:red}
但我发现它要么不起作用,要么没有限制在容器内;例如,上面这个例子将页面上的所有链接都变成了红色。它应该这样工作吗?
无论如何,我应该尝试使用属性选择器。
a:link 和 a:visited 必须在样式表中位于 a:hover 之上,否则它将不起作用。在某些网站上,我一直存在这个问题,直到我发现了这一点。
哇!我不敢相信我之前从未听说过这个。
太棒了!
对于“以特定值结尾的属性”,我经常发现自己使用它根据文件类型设置某些链接的样式。
a[href$=pdf] { padding-right:16px; background: url(/images/icon_pdf.gif) top right no-repeat; }
但这已经多次说过。这会让我学到,在评论之前要阅读其他评论。哈哈。
哇!高级 CSS 功能!不错
真的很有帮助。非常感谢!
要验证为有效的 CSS,你需要确保它是 element[attr=”value”],注意引号。
此外,我忘记提到,其中很多在 IE 中不受支持,因为它们是 CSS3 的一部分。参见 http://www.css3.info/preview/attribute-selectors/
很好的总结,Chris。
我偶尔会故意使用属性选择器来隐藏 IE6 中的元素。
例如
div[class="whatever"] {
background-color: red;
background-image: url(semi-transparent-background.png);
}
有时这样做可以避免我单独创建一个 IE6 样式表来覆盖单个元素。
可能问这个问题不太合适,但我认为它没有偏离主题。
我在 IE8 中遇到了问题。
这个 CSS 代码无法正常工作。
input:active[type=image] {position:relative;top:1px;left:1px;}
或
input:focus[type=image] {position:relative;top:1px;left:1px;}
非常感谢您的帮助!
有两个可能的答案,我自己也不确定。
1) :active 和 :focus 应该放在选择器的末尾 (例如 input[type=images]:active),因此失败了。
但由于你说它只在 IE8 中失败,
2)
:hover 和 :active 仅在 IE 中对锚元素 () 起作用,因此在输入元素上失败了。
哇!太棒了!这绝对是许多网站通常不涉及的内容!
使用属性选择器对页面加载时间有什么影响?它与“正常”使用 CSS 一样,还是涉及额外的处理?
很棒的文章,非常感谢!
谢谢……之前从没了解过这些东西……
也可以参考这里
http://ipinfo.info/netrenderer/index.php?url=http://www.css3.info/preview/attribute-selectors/%23begins
它们在 Internet Explorer 7 及更高版本中确实有效。
你是怎么发现这些东西的?
这又是一个忘记 IE6 存在的正当理由……
我刚刚在阅读你的文章后做了一个 “h1[rel$=external]” (匹配末尾) 的完美真实示例。我用它来为 PDF 下载链接添加 PDF 图标:a[href$=pdf]。效果非常好。谢谢!
很棒的文章。我也猜想这对 jQuery 选择器非常有用。
有人知道哪些浏览器不支持它吗?
像往常一样有用,Chris。
谢谢你,Chris!我刚学到了新东西。
非常有用,感谢您的提示。
这意味着你也可以根据图像类型对图像进行不同的样式设置!
我知道这一点,但上面显示的示例对我来说有点奇怪:我理解只有链接和 a 元素可以接受 rel 属性。
太棒了!感谢你写下这篇博文,Chris。:)
我发现用连字符分隔的选择器不起作用。它在你的测试页面上似乎有效,因为它实际上使用了 “contains” 选择器 [rel*=external]。
h1[rel|=external] { color: red; }
属性连字符分隔
这在 Firefox v3.6 和 Chrome v5 中不能像你说的那样正常工作,因为它只有在我将 external 互换到前面时才变为红色,就像这样
属性连字符分隔
在你的示例中,你可以尝试从 CSS 代码中删除 rel*=external,然后查看结果。
太棒了,非常感谢!来自巴西圣保罗的问候。
Chris,干得好。顺便说一句,如果你想查看哪些浏览器支持这些选择器,可以访问以下任一网站
http://www.findmebyip.com/#css3-selectors
或
http://www.css3.info/selectors-test/
哇,这似乎是一个非常有用的家伙。感谢分享!
我必须在未来的项目中牢记这一点。它似乎是一种有趣的方式,可以让我在 CSS 中更具体,这总是很有趣的。
如果我们的用户能停止使用 IE6 就好了。他们仍然占我们收入的至少四分之一。
我之前就了解过这些,但它们是我通常会忽略的 CSS 东西,因为它们不够跨浏览器。但我看到现在只有 IE6 不支持它们,而我现在也开始忽略它,所以我必须开始玩玩这些东西!感谢你给了我一个提醒。
我同意 Skilldrick 的观点……很棒的文章。感谢你的提醒和鞭策。
我一直在使用这个,但只在 JQuery 中使用,因为 IE6 缺乏支持……是的,我和你们一样讨厌 ie(6),但我确实希望每个人都能看到同一个网站……
Hey Chris,
我不知道你是否已经做过这个调查,也许这是一个不错的选择
Web 开发人员应该使他们的网站……
1. 对所有浏览器保持一致 (不包括移动设备)
2. 在旧版浏览器上优雅降级
3. Web 开发人员应该对那些不再受其自身开发人员支持的浏览器 (如 IE6) 漠不关心
[编辑]
3. Web 开发人员不应该关心……
[/编辑]
我目前正在使用
time[datetime*="01T"]
到time[datetime*="31T"]
来设置 日历图标精灵 的background-position
,用于 David Chambers Design 档案 中列出的每个帖子。我喜欢使用属性选择器来保持我的标记免受不必要的类名困扰!太棒了,我知道这一点,但老实说我从来没有太关注它,也从来没有做过更多研究,但我很好奇我们能否使用它们,因为大多数用户仍然使用该死的 IE6?
Rel$=external 可以非常有效地识别文件类型。例如,如果你有指向 PDF 和普通网页的链接,你可以在链接前面放置图标来显示它是一个网页还是一个 PDF,因为你会知道该链接是否以 .pdf 结尾。
我想在现实世界中这是一个非常有用的例子。
哇,我从未想过所有现代浏览器都支持这些选择器!这将节省许多不必要的类名——以及 IE6 样式表,哈哈。
来自德国的问候!
非常有用的文章。这将解决我很多问题,我相信我们可以减小 CSS 文件的大小。
大家好,
问题
是否可以在一个链接中添加多个“rel”?如果是,会影响 SEO 吗?
示例
(a href=”www.something.com” rel=”nofollow” rel=”site”)这是一个链接 (/a)
我对属性选择器有一些基本了解,但我不知道它如此广泛。这非常有信息量,将来一定会派上用场……
我以前对此一无所知。这太棒了,尤其是对输入来说。我一直为我的输入创建 .text 和 .button 类,非常烦人。这样更有意义,非常感谢!
非常非常有用,尤其是对于 WordPress 中自动生成的类 (tag-link-1,tag-link-2,tag-link-7 .. )。太棒了。非常感谢!
克里斯,很棒的文章!总是在我的一周开始学习新东西是件好事!
实际上,我只是想用它来自动地在右对齐或左对齐的图像周围添加一些边距。
例如
<img align="right" src="whatever.jpg" />
然后使用 CSS 属性选择器
img[align=right] { margin-left:10px; }
这克服了我一直让我头疼的问题:用户使用 align 浮动图片,但没有添加适当的类以确保添加边距。
优秀的帖子,我搜索了很多有关以下内容的示例:
a:not([href ^=http://my.domain.com])
!知道存在更优雅的方法,最终找到了答案,以及这里更多的内容 :-)
好极了!
现在我能够从我的 @media print 样式中删除嵌入的 Youtube 视频,使其不会被打印。
iframe[src*="youtube"] { display: none }
感谢发布这篇文章,Chris。有人知道部分类选择器(class*=”span”,在 bootstrap 中用于网格)的成本有多高吗?
我不会花太多时间考虑选择器的成本。它只在最极端的情况下才很重要。
这里还有一种使用属性选择器的额外方法。您可以选择具有属性的元素,使用
例如,您想选择所有具有 `data-kermit` 的元素,您可以…
等等…
您做得太好了,先生,您是我们专业的培训师,我多次使用过您的技巧
您也是我的灵感,先生
当您使用属性选择器来查找 style 属性内的属性并且您支持 IE8 时,您需要提供两个选择器
div[style*=FONT-SIZE],
div[style*=font-size]
为什么?当 IE8 解析页面时,它会将 style 属性内的所有属性名称转换为大写。
哎呀,也就是说