【H5 前端开发笔记】第 19 期:CSS 选择器 (4) 属性选择器 详解

🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

属性选择器

概念: 属性选择器就是可以挑选带有特殊属性的元素标签

或者说找带有指定的属性名称 或 属性值的元素标签!

[属性名]

作用 : 可以根据标签元素的属性名来指定元素!

语法: 元素选择器[属性名] { ..css样式..}

案例:

<style>
    p[title]{
        background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%);
    }
</style>

<p title="str">这是一段话</p>
<p title="str">这是一段话</p>
<p title="str">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
<p title="num">这是一段话</p>
<p title="num">这是一段话</p>
<p title="num">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>

[属性名=属性值]

作用: 选择含有指定属性与属性值的元素!

语法: 元素选择器[属性=属性值] (注意:属性值加不加双引号都可以,个人建议加上)

案例

<style>
    p[title="str"]{
        background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%);
    }
</style>

<p title="str">这是一段话</p>
<p title="str">这是一段话</p>
<p title="str">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
<p title="num">这是一段话</p>
<p title="num">这是一段话</p>
<p title="num">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
[属性名^=字符]

作用:选择指定元素的属性以及属性值以指定的字符内容开头的元素!

语法:元素选择器[属性名^=属性值开头字符]

注意: 这里的字符内容是属性值的开头几个字母或文字字符 ,属性值字符加不加双引号都可以!

案例

<style>
    p[title^="data"]{
        background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%);
    }
</style>


<p title="str">这是一段话</p>
<p title="str">这是一段话</p>
<p title="data-str">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
<p title="data-num">这是一段话</p>
<p title="data-num">这是一段话</p>
<p title="num">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
[属性名$=字符]

作用: 选择指定元素的属性以及属性值以指定的字符内容结尾的元素!

语法: 元素选择器[属性名$=属性值结尾字符] (属性值字符加不加双引号都可以!)

案例

<style>
    p[title$="num"]{
        background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%);
    }
</style>

<p title="str">这是一段话</p>
<p title="str">这是一段话</p>
<p title="data-str">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
<p title="data-num">这是一段话</p>
<p title="data-num">这是一段话</p>
<p title="num">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
[属性名*=字符]

作用: 选择元素中指定属性及属性值包含指定字符的元素!

语法:元素选择器[属性名*=属性值中包含的字符]

案例

<style>
    p[title*="n"]{
        background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%);
    }
</style>

<p title="str">这是一段话</p>
<p title="str">这是一段话</p>
<p title="data-str">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
<p title="data-num">这是一段话</p>
<p title="data-num">这是一段话</p>
<p title="num">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
[属性名~=属性值]

作用: 选择 指定元素中属性及属性值中包含指定单词字符的所有元素。

语法: 元素选择器[属性名~=属性值字符]{…css样式…}

注意:~=其中的属性值必须是一个独立的单词或者字符串。

案例: p标签中属性值中带有 test a可以被选中,而p标签属性值中带有testa的不能被选中!

<!--
例如 [title~=test] 中 test a可以被选中testa不能被选中
-->
<style>
    p[title~="test"]{
        background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%);
    }
</style>

    <p title="str">这是一段话</p>
    <p title="str">这是一段话</p>
    <p title="data-str">这是一段话</p>
    <p>这是一段话</p>
    <p>这是一段话</p>
    <p title="data-num">这是一段话</p>
    <p title="data-num">这是一段话</p>
    <p title="num">这是一段话</p>
    <p>这是一段话</p>
    <p title="data-num-str">这是一段话</p>
    <p title="test a">这是一段话</p>
    <p title="testa">这是一段话</p>

小提示:

~=其中的value必须是一个独立的单词,例如 [title~=test] 中 test a可以被选中testa不能被选中.
*=其中的value只要是值的子串就可以,例如test-a,test a和testa均可以被选中.

[属性名|=属性值]

作用: 选择指定元素中属性及属性值中必须包含整个单词或者中间有连字符的单词。

语法: 元素选择器[属性名|=属性值字符]{…css样式…}

注意:|=其中的属性值必须是选取整个单词或者中间有连字符的单词。

案例:

<style>
    p[title|="test"]{
        background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%);
    }
</style>

<p title="str">这是一段话</p>
<p title="str">这是一段话</p>
<p title="data-str">这是一段话</p>
<p>这是一段话</p>
<p>这是一段话</p>
<p title="data-num">这是一段话</p>
<p title="data-num">这是一段话</p>
<p title="num">这是一段话</p>
<p>这是一段话</p>
<p title="data-num-str">这是一段话</p>
<p title="test-num-str">这是一段话</p>
<p title="test a">这是一段话</p>
<p title="testa">这是一段话</p>

注意: 2个选择器的区别是

[attribute|=value]必须是选取整个单词或者中间有连字符的单词,而 [attribute^=value] 无此限制

举个栗子

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>选择器区别</title>
  <style>
    /* [attribute|=value]:只匹配 完整value 或 value-xxx */
    p[lang|=en] {
      color: red; /* 只会选中lang="en"、lang="en-US"、lang="en-GB"的p标签 */
    }

    /* [attribute^=value]:只要开头是value就匹配 */
    p[lang^=en] {
      font-weight: bold; /* 会选中所有lang以en开头的p标签 */
    }
  </style>
</head>
<body>
  <p lang="en">我是lang="en" → 红色+加粗</p>
  <p lang="en-US">我是lang="en-US" → 红色+加粗</p>
  <p lang="en-GB">我是lang="en-GB" → 红色+加粗</p>
  <p lang="ennn">我是lang="ennn" → 只加粗(不是en/en-xxx,所以不红)</p>
  <p lang="zh-en">我是lang="zh-en" → 无样式(既不是en开头,也不是en/en-xxx)</p>
</body>
</html>

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多好玩 好用 好看的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客小俊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值