CSS属性选择器的7个常见用法!

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 WEB 前端的程序媛。

云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合集

293篇原创内容-更多前端系列内容可以go公众.h:云桃桃

后台回复“前端工具”可获取开发工具,持续更新中

后台回复“前端基础题”可得到前端基础100题汇总,持续更新中

后台回复“前端电子书”可获取20+本精选电子书

前言

属性选择器是 CSS 中一种强大的选择器,它允许我们根据元素的属性及属性值来选择特定的元素,从而实现精准的样式控制。

它主要的应用场景是,为表单字段设置统一样式、模块化CSS以避免命名冲突、标识表单控件的不同交互状态、定制多语言环境下的文本展示、响应不同媒体查询条件等。

好,那我们一起来看看它的 7 个常见用法吧。

7 个常见用法

  1. [attribute] - 存在选择器:选择所有具有指定属性的元素,不论其属性值为何。

    [type] {
      /* 选择所有带有 'type' 属性的元素 */
    }
    
  2. [attribute="value"] - 完全匹配选择器:选择属性值完全等于指定值的元素。

    [href="https://www.example.com"]
    {
      /* 选择href属性值完全等于指定URL的元素 */
    }
    
  3. [attribute^="value"] - 开始匹配选择器:选择属性值以指定值开始的元素。

    [href^="https://"]
    {
      /* 选择href属性值以'https://'开始的元素 */
    }
    
  4. [attribute$="value"] - 结束匹配选择器:选择属性值以指定值结束的元素。

    [href$='.pdf'] {
      /* 选择href属性值以'.pdf'结束的元素 */
    }
    
  5. [attribute*="value"] - 包含匹配选择器:选择属性值包含指定字符串的元素。

    [title*='hello'] {
      /* 选择title属性值包含'hello'字符串的元素 */
    }
    

    注意:其实这个词也不必也写完整,但如果从易读性和精准匹配来说,根据上下文写完整比较好。

  6. [attribute~="value"] - 词匹配选择器:选择属性值中包含指定单词的元素,单词由空格分隔。

    [class~='active'] {
      /* 选择class属性值中包含'active'单词的元素 */
    }
    
  7. [attribute|="value"] - 前缀匹配选择器:选择属性值以指定值开始或者完全等于指定值的元素,主要用于语言代码或者文档类型这样的属性。

    [lang|='en'] {
      /* 选择lang属性值以'en'开始或等于'en'的元素 */
    }
    

以上属性的,代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Attribute Selectors Example</title>
    <style>
      /* 存在选择器:选择所有div带有 'data-info' 属性的元素 */
      div[data-info] {
        border: 1px solid #333;
        padding: 5px;
      }

      /* 开始匹配选择器:选择 'href' 属性值以 'https://' 开始的 <a> 元素 */
      a[href^="https://"]
      {
        color: #11cdd4;
      }
      /* 完全匹配选择器:选择 'href' 属性值完全等于指定 URL 的 <a> 元素 */
      a[href="https://www.example.com"]
      {
        color: #e02339;
      }

      /* 结束匹配选择器:选择 'href' 属性值以 '.pdf' 结束的 <a> 元素 */
      a[href$='.pdf'] {
        font-style: italic;
      }

      /* 包含匹配选择器:选择 'class' 属性值包含 'highlight' 的元素 */
      p[class*='highlight'] {
        background-color: yellow;
      }

      /* li的词匹配选择器:选择 'class' 属性值中包含 'active' 单词的元素 */
      li[class~='active'] {
        font-weight: bold;
        border-bottom: 5px solid #15be02;
      }

      /* 前缀匹配选择器:选择 'lang' 属性值以 'fr' 开始的元素 */
      [lang|='fr'] {
        border-bottom: 5px solid #665aec;
      }

      /* 额外样式:仅为了演示 */
      body {
        font-family: Arial, sans-serif;
      }
      ul {
        list-style: none;
      }
      a {
        text-decoration: none;
        margin-right: 10px;
      }
      p {
        margin: 10px 0;
      }
      /* 完全匹配选择器:选择 'type' 属性值完全等于 text 的元素 */
      input[type='text'] {
        background-color: #11cdd4;
        line-height: 30px;
      }
    </style>
  </head>
  <body>
    <!-- 存在选择器 -->
    <div data-info="some data">这段文本包含 data-info 属性。</div>
    <p data-info="some data">这段文本包含 data-info 属性,但不是div。</p>

    <!-- 完全匹配选择器 -->
    <a href="https://www.example.com">Example.com</a>

    <!-- 开始匹配选择器 -->
    <a href="https://www.google.com">Google</a>
    <a href="http://www.google.com">Google (http)</a>

    <!-- 结束匹配选择器 -->
    <a href="https://www.example.com/document.pdf">PDF Document</a>

    <!-- 包含匹配选择器 -->
    <p class="some highlight text">这段文本的类名包含 'highlight'。</p>
    <div class="highlight">这段文本的类名包含 'highlight',但不是p标签,所以不起效。</div>

    <!-- 词匹配选择器 -->
    <ul>
      <li class="item active">活动项</li>
      <li class="item">非活动项</li>
      <li class="active item">另一个活动项</li>
    </ul>

    <!-- 前缀匹配选择器 -->
    <p lang="en-US">这是一段英文文本。</p>
    <p lang="en-GB">这也是一段英文文本。</p>
    <p lang="fr">这是法文文本,符合前缀匹配。</p>

    <div>
      <input type="text" name="name" placeholder="这是姓名" />
      <input type="text" name="phone" placeholder="这是电话" />
      <input type="email" name="mail" placeholder="这是邮箱" />
    </div>
  </body>
</html>

效果如下:

图片

属性选择器的作用包括但不限于:

  • 样式定制:根据元素的属性值为元素定制特定的样式。

  • 状态标识:为具有特定属性值的元素添加标识性样式,如禁用状态的按钮。

  • 动态内容:通过属性选择器选择动态生成的内容,如通过 id 或 class 属性选择由 JavaScript 添加的元素。

  • 数据绑定:在单页面应用(SPA)中,根据数据绑定的属性为元素设置样式。

OK,本文完。

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值