css选择器

2023-11-06

4.2 CSS选择器(4)——属性选择器(Attribute Selectors)

2008年05月8日

  1. 4.2 CSS选择器(1)――通配选择器、类型选择器与ID选择器
  2. 4.2 CSS选择器(2)――类选择器与包含选择器
  3. 4.2 CSS选择器(3)――子元素选择器和相邻兄弟选择器
  4. 4.2 CSS选择器(4)——属性选择器(Attribute Selectors)

4.2.8 属性选择器(Attribute Selectors)

顾名思义,属性选择器可以根据某个属性是否存在或属性的值来匹配元素。因此能够实现一些比较复杂的匹配。
属性选择器有四种匹配方式,各有特色。

1. 简易属性匹配

图4-12 属性匹配选择器

图4-12 属性匹配选择器

简易的属性匹配定义如图4-12所示。只匹配具有“att”属性名称的E元素,而不考虑“att”的值为何。

例如有代码如下,则其在浏览器内的效果如图4-13所示。

div[class] { color: red; }
<div class="box1">具有class="box1"属性的div</div>
<p class="box1">具有class="box1"属性的p</p>
<div class="box2">具有class="box2"属性的div</div>
<div id="main">具有id="main"属性的div</div>

图4-13 使用属性匹配选择器定义CSS的显示效果

属性匹配可以匹配该元素任何合法的(X)HTML属性,也可以同时匹配多种属性,例如有代码如下,其在浏览器内的效果如图4-14所示。

a[title][class] { color: green; }
<ul>
  <li><a href="#" title="带有title属性的链接">只有title属性的链接</a></li>
  <li><a href="#" class="new">只有class属性的链接</a></li>
  <li><a href="#" title="带有title属性的链接,有class属性的链" class="new">既有title属性,也有class属性的链接</a></li>
</ul>
图4-14 匹配多个属性的属性选择器的显示效果

图4-14 匹配多个属性的属性选择器的显示效果

2. 精确值匹配

精确值匹配的属性选择器选择具有指定的属性且属性值等于指定的值的元素,例如:

input[type="text"] { border: 1px solid blue; }

则将匹配具有“type=”text””属性的<input>元素,例如有XHTML代码如下,则其在浏览器内的显示如图4-14所示。

<form id="form1" method="post" action="#">
  <fieldset>
    <legend>信息登记</legend>
    <label>昵称:
    <input name="nikename" type="text" size="16" maxlength="30" />
    </label>
    <label>年龄:
    <input name="age" type="text" size="6" maxlength="8" />
    </label>
        <label>密码:
        <input name="password" type="password" id="password" value="" size="16" />
        </label>
    <label>
    <input type="radio" name="sex" value=" male" />
    男</label>
    <label>
    <input type="radio" name="sex" value=" female" />
    女</label>
  </fieldset>
</form>
图4-15 值匹配的属性选择器的显示效果

图4-15 值匹配的属性选择器的显示效果

值匹配的属性选择器也可以同时匹配多种属性,例如:

input[type="radio"][name="sex"] { …… }
注意:属性值必须是标识符或字符串。选择器中属性名和值的大小写敏感性取决于文档语言的敏感性。

3. 部分值匹配

图4-16部分值匹配的属性匹配选择器

(X)HTML元素(或者非(X)HTML的其他类型文件的元素)的某些属性值可以是多个,中间以空格分开,例如在[4.1.4 类选择器]中介绍了一个元素设定多个类的情况。而当要匹配多个属性值中的某一个的时候,就需要使用部分值匹配的属性选择器,其定义如图4-16所示。

图4-16表示,所有E元素中具有“att”属性且该属性包含“val”值的那些元素。例如有代码如下,则其在浏览器内的显示如图4-17所示。

p[class~="main"] { background:yellow; }
<p class="main">class=&quot;<strong>main</strong>&quot;</p>
<p class="menu main">class=&quot;menu <strong>main</strong>&quot;</p>
<p class="menu sub">class=&quot;menu sub&quot;</p>
<p class="menu main home">class=&quot;menu <strong>main</strong> home&quot;</p>

图4-17 部分值匹配的属性选择器的显示效果

<p>元素的class属性的值不分先后顺序,只要包含值“main”则匹配元素。此时选择器内的值中不能包含空格,例如下面的代码是错误的:

p[class~="menu  main"] { background:yellow; }
p[class~=" main "] { background:yellow; }
p[class~="  main"] { background:yellow; }

4. 特殊匹配

图4-18 特殊匹配的属性匹配选择器

图4-18 特殊匹配的属性匹配选择器

特殊匹配的属性选择器定义如图4-18所示。

当元素的“att”属性值是一个以英文“-”号分割的字词列表,并且以“val”开头,则匹配成功。匹配总是从属性值的头上开始。例如有XHTML代码如下,则其在浏览器内显示如图4-19所示。

p[class|="menu"] { background:yellow; }
<p class="menu">class=&quot;menu&quot;</p>
<p class="menu-main">class=&quot;menu-main&quot;</p>
<p class="menu-sub">class=&quot;menu-sub&quot;</p>
<p class="menu_main">class=&quot;menu_main&quot;</p>
<p class="other-menu">class=&quot;other-menu&quot;</p>
图4-19 特殊匹配的属性选择器的显示效果

图4-19 特殊匹配的属性选择器的显示效果

特殊匹配对于一些遵循同一命名规范来定义的属性值非常有效,例如,某些图片全部以“picture-”开头,而后跟随编号,那么,要对这些图片设定CSS就可以使用特殊匹配:

img[src|="picture"] { …… }
  1. 4.2 CSS选择器(1)――通配选择器、类型选择器与ID选择器
  2. 4.2 CSS选择器(2)――类选择器与包含选择器
  3. 4.2 CSS选择器(3)――子元素选择器和相邻兄弟选择器
  4. 4.2 CSS选择器(4)——属性选择器(Attribute Selectors)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css选择器 的相关文章

  • IE 中的文件上传按钮和奇怪的文本光标行为

    我构建了一个上传按钮 其格式类似于典型的 html 按钮 而不是浏览器标准文件上传表单 该方法是设置锚元素的样式并在顶部覆盖透明文件输入元素 这种方法在除 IE 之外的所有浏览器中都可以正常工作 在 IE 中 当用户单击上传按钮时 会出现一
  • 如何将外部 div 的高度设置为始终等于特定内部 div 的高度?

    我有一个外部 div 其中包含三个内部 div 我希望最左边的内部 div 始终确定外部 div 的高度 如果其他内部 div 的内容 比最左边的 div 少 它们将有空白空间 如果他们有更多的内容 比最左边的div 他们将得到一个滚动条
  • 当内部图像缩放时,包裹 div 不会调整大小(窗口大小调整的结果)

    我希望我的图像随着窗口高度的变化而调整大小 同时保持包含的 div 收缩包裹图像 我尝试使用 div img src http akamaicovers oreilly com images 9780596806767 cat gif al
  • Ie11 不应用媒体查询样式

    IE11 忽略我的媒体查询并始终使用移动 CSS 奇怪的是 如果我改变浏览器宽度 即使只是 1 2 像素 浏览器也会自行渲染并显示媒体查询 我尝试了 css lint 我的 css 中没有错误 我的CSS没有什么特别的 只是简单的 css
  • 创建便利贴(便利贴)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在设计一个网页 我想在我的页面中使用便利贴 便利贴 其中 当我们单击添加按钮时会添加每个便签 便签的颜色必须随机变化 并且必须倾斜并且
  • 更改网格模板列会破坏布局

    定义时grid template columns在相应的父 div 中这很好 wrapper display grid grid template columns 1fr 1fr 700px 但是如果我只想要两列怎么办 如果我删除其中之一f
  • 如何使输入字段的宽度为 100% 减去提交按钮的宽度?

    我有一个非常基本的单一输入字段 旁边有一个 提交 按钮 搜索按钮的固定宽度为 104 像素 两者都包裹在一起 总宽度占浏览器视口的 50 我的计划是允许输入字段随着浏览器窗口的扩大而扩大 目前 对于我的特定浏览器窗口 我必须修复输入字段的宽
  • 内部样式表中的 HTML 注释标签[重复]

    这个问题在这里已经有答案了 可能的重复 注释掉 HTML 文档中的样式表以支持旧版浏览器 https stackoverflow com questions 6825773 commenting out stylesheets in htm
  • AJAX 加载的图像在 Safari 中无法正确显示

    因此 我使用 AJAX 加载每个页面的内容并将其注入当前页面 在 Chrome Firefox Internet Explorer 上一切都运行良好 尽其所能 哈哈 并且除了两个奇怪的部分之外 内容在 Safari 上加载良好 通过 AJA
  • 将图像原始尺寸保留在较小的 div 内

    我有一个 600x400px 的图像 并希望将其放在尺寸为 240x200px 的较小 div 内 但图像缩小或扭曲 我希望原始尺寸的图像集中在较小的 div 中 这会隐藏一些图像 我编写了这个 CSS 规则来应用于不同的图像尺寸 theB
  • 如何将安全中心与 Flexbox 一起使用?

    居中的弹性盒项目可能会出现不良行为当他们溢出容器时 https stackoverflow com questions 33454533 cant scroll to top of flex item that is overflowing
  • CSS3家谱,如何添加妻子

    我正在关注这个guide http thecodeplayer com walkthrough css3 family tree关于如何仅使用 CSS3 制作家谱 但我真的不知道如何结婚 To clarify What the codes
  • 在聚合物元素中动态注入共享样式(聚合物1.2.3)

    我确实有几个自己创建的嵌套聚合物元素 目前 通过使用聚合物共享样式 我可以将自定义样式注入其他元素 不幸的是 这种方法仅限于静态使用 因此 在实现时 我确实需要通过导入共享样式模块来知道哪个元素应该使用哪种共享样式 and 但在我的用例中
  • CSS 背景在 iOS 中拉伸以填充高度,但滚动上有空白

    这个 CSS 让我的背景在 iOS 中填充 100 的屏幕高度 但有一个小问题 当你向下滚动时 最初有空白 然后当你松开手指并停止滚动时 背景图像会 调整 并填充 100再次屏幕高度的 如果您继续滚动 该问题不会在同一页面上再次出现 只是第
  • 如何更改 R Markdown HTML 文档中目录的颜色和属性?

    我花了很多时间谷歌搜索这个 但似乎无法弄清楚 我正在使用 R Markdown 制作 HTML 文档 文档在这里 http rmarkdown rstudio com html document format html http rmark
  • height:100% 在 Internet Explorer 中不起作用

    我有一个关于 CSS 属性的问题height 100 在 Internet Explorer 中 height 100 在 IE 中不起作用 但在 Firefox 和 Chrome 中可以 HTML 文件 div ul ul div
  • 推迟未使用的 CSS

    我有一个关键的 CSS 流程 可以防止页面首屏内容出现无样式内容闪现 FOUC 我陷入了 推迟未使用的 CSS 这一点 Google PageSpeed 见解 灯塔 和 或 Chrome 的性能审核强调了这一点 我已经阅读了其他文章 但它们
  • CSS 列不会水平对齐

    我正在使用列计数来允许我的文本流入两个不同的列 但第一列的顶部 最左边 低于另一列 col moz column count 2 webkit column count 2 column count 2 div h3 Options h3
  • 在原始颜色和设置颜色之间设置动画背景

    我有带有随机初始背景颜色的 HTML 元素 我需要在原始 初始 和新元素之间对选定元素的背景颜色进行动画处理 我一直在尝试使用 keyframes blink red 0 background color initial color ini
  • 页脚没有停留在底部

    这似乎是有史以来最令人困惑的问题 至少对我来说是这样 知道这个页面 除了标题之外 都已损坏 我复制了 HTML 并尝试小心地删除 WordPress 相关的爵士乐 以便您获得该页面的 html JsBin直播页面 http jsbin co

随机推荐

  • 随机生成6位随机数(字母+数字)

    package com test public class test public static void main String args String randomcode 用字符数组的方式随机 String model 0123456
  • 人生应该接受的教育

    以下三段话 或许会让你的人生发生一些变化 如果有心改变 一切都不晚 一 比尔 盖茨告诉我们 1 社会充满不公平现象 你先不要想去改造它 只能先适应它 因为你管不了它 2 世界不会在意你的自尊 人们看的只是你的成就 在你没有成就以前 切勿过分
  • openssl基本原理及生成证书

    openssl基本原理及生成证书 openssl基本原理及生成证书 1 基本原理 2 生成证书 一 生成CA证书 1 创建私钥 2 创建证书请求 3 自签署证书 4 将证书导出成浏览器支持的 p12格式 二 生成server证书 1 创建私
  • 6套粒子群算法(内含matlab代码)

    粒子群算法 1 粒子群算法简介 一 粒子群算法的历史 粒子群算法源于复杂适应系统 Complex Adaptive System CAS CAS理论于1994年正式提出 CAS中的成员称为主体 比如研究鸟群系统 每个鸟在这个系统中就称为主体
  • 【C#】如何比较两个对象是否相等(重写Equals方法)

    问题 写单元测试时 需要对比两个对象是否相等 如果使用Assert AreEqual mockclass1 class1 永远无法通过 原因 这里使用了object默认的Equals方法 必须要引用同一个对象 才会返回true 默认的Equ
  • 485通讯与MODBUS的区别与联系

    最近做智能检测的项目 设备 串口之间的通讯比较多 一会儿485 一会儿modbus RTU 有点晕了 这里重新梳理一下RS485 485通讯协议 ModBus通讯协议 Modbus Rtu通讯这几个点的联系和区别 先说RS485吧 RS48
  • C++面试之const和static的联系和区别

    C 中的静态成员和静态函数的参考之前写的博客 C 中的静态成员和静态函数 Littlehero 121的博客 CSDN博客 C 中的全局变量和普通全局变量参考之前写的博客 全局变量 静态全局变量 静态局部变量和普通局部变量的区别 Littl
  • 003 Leaflet 第三个demo 地图上的面积测量

    一 使用到的文件 leaflet src js Leaflet Editable js leaflet measure path js leaflet css leaflet measure path css 面积测量区别于拉框测量面积而言
  • 125-Linux_守护进程

    文章目录 1 什么是Linux守护进程 2 如何创建Linux守护进程 切换当前工作目录到根目录 这样可以避免守护进程在其它目录中的文件被占用 使用fork 函数创建子进程 并在父进程中退出 在子进程中调用setsid 函数创建新的会话组
  • VScode配置PHP运行环境

    VS code配置PHP环境 第一步 配置了PHP环境 如果没有配置php环境的请见上篇个文章 点我 第二步 你需要有VS code 第三步 配置settings json 我们按下shift ctrl p然后搜索settings json
  • 百度联盟百青藤app流量变现

    app流量变现
  • 静态数据成员和静态成员函数(static)

    目录 一 关于静态成员 二 静态数据成员和普通数据成员的共同点 三 为什么要使用静态数据成员 四 关于静态数据成员的初始化 五 静态成员的访问方式 六 静态成员函数 1 与静态数据成员不同 静态成员函数的作用不是为了对象之间的沟通 而是为了
  • Chinchilla Scaling Laws

    Chinchilla Scaling Laws是一组经验原则 用于指导神经网络模型中参数数量的选择和所需训练数据的数量 以实现最佳性能 这些原则表明 为了使模型达到最佳性能 参数数量应与训练集的大小成正比 而训练集的大小应与参数数量的平方成
  • Daniel and Spring Cleaning【数位DP】【Codeforces 1245 F】

    Codeforces Round 597 Div 2 F 这道题化简一下就是让我们求有上下限的2进制数中有几对满足每一位的相 值不为1的对数 那么 首先看到这个1e9就会让人想到数位DP 然后接着就是如何去求的这样一个问题 我们不如将上下限
  • Java8的stream().map()用法

    在Java编码过程中可能会遇到这个场景 遍历一个列表 对列表中的属性进行转换 赋值等操作形成我们想要的一个新列表 通常我们的常规思路就是直接使用for循环 在Java8引入lambda表达式后我们可以使用stream流链式处理的方式 形成新
  • Android之R文件

    首先了解什么是R文件 当 Android 应用程序被编译 会自动生成一个 R 类 其中包含了所有 res 目录下资源 包括布局文件layout 图片文件drawable等 具体的内容如下所示 public final class R 全是以
  • 力扣题---单值二叉树

    题目链接 单值二叉树 先来看下题目与例题 如果二叉树每个节点都具有相同的值 那么该二叉树就是单值二叉树 只有给定的树是单值二叉树时 才返回 true 否则返回 false 示例 1 输入 1 1 1 1 1 null 1 输出 true 示
  • CSV文件在Python中的处理方式

    一 使用Python基本语法读写CSV文件 使用基本语法读取CSV文件中的数据大概思路是 获取文件对象 读取表头 按逗号分隔符拆分表头字段 使用for循环语句获取表体记录数据 拆分后再次写入另一张CSV文件中 如果要将数据写入xls 格式的
  • java怎么复制别人的数据库_java – 在不同数据库之间复制数据(两者都支持jdbc)...

    我想将测试数据库 mysql 中的所有数据复制到生产数据库 hsqldb 我使用了hibernate 让它在我的数据库中创建表 所以结构 架构是相同的 使用mysql dump我可以在两个mysql数据库之间复制数据 但在我的情况下 数据库
  • css选择器

    4 2 CSS选择器 4 属性选择器 Attribute Selectors 2008年05月8日 4 2 CSS选择器 1 通配选择器 类型选择器与ID选择器 4 2 CSS选择器 2 类选择器与包含选择器 4 2 CSS选择器 3 子元