CSS属性选择器
前面我们已经讲解了,CSS中的简单选择器,组合选择器,以及伪类和伪元素选择器。如果想做到更加精准的查找,并且提高查找元素的效率,我们可以使用CSS属性选择器来完成。
CSS属性选择器,是根据属性或属性值来查找元素;
基本语法为:Element中括号attribute([əˈtrɪbju:t ])(Element[attribute])或者Element,中括号attribute等于value(Element[attribute=’value’]),实现快速精准查找元素。
在这里注意的是:element译为元素,attribute译为属性,Element attribute 的含义是:查找带有该属性的元素,然后添加样式声明。
a[target] {
background-color: yellow;
}
例如:以上代码的含义是:查找带有target属性的a元素,并且添加了背景颜色为黄色的样式声明。
在CSS选择器中,目前有四种属性选择器可供大家使用:
第一种:通过,使用中括号attribute([attribute]),来查找HTML结构中,带有attribute属性的所有元素。
第二种:通过,使用中括号attribute等于value([attribute=’value’]),来查找HTML结构中带有attribute属性,并且属性值为value的元素。
第三种:通过,使用中括号attribute波浪线等于value([attribute~=‘value’]),来查找HTML结构中带有attribute属性,并且在多个属性值中包含value取值的元素。
第四种:通过,使用中括号attribute竖杠等于value([attribute|=”value”]),来查找HTML结构中带有attribute属性,并且属性值以value或者是value横岗(value-)开头的元素;在这里需要注意的是,该属性的值只能有一个,不能有多个。
接下来详细的为大家来介绍不同属性选择器的使用情况,在004目录下创建一个attribute_selector.html文件,构建基础代码,
在body元素内部,添加准备好的基本结构,里面包含输入框,密码框,单选框以及带有类名的p元素和div元素。
<h1>基础信息</h1>
用户名:<input type="text" class="box"> <br>
密码框:<input type="password"> <br>
回答问题:<input type="text"> <br>
性别选择:<input type="radio" name="sex">男 <input type="radio" name="sex">女 <br>
是否核酸:<input type="radio" name="yesOrno">是 <input type="radio" name="yesOrno">否
<h1>元素修饰</h1>
<p class="box big bobo">我是一个p元素我有三个类名,分别是:box big bobo</p>
<p class="box bobo">我是一个p元素,我有两个类名分别是:box和bobo</p>
<div class="box">我是是一个div元素,我有一个类名叫做box</div>
<div class="box-qf">我是是一个div元素,我有一个类名叫做box-qf</div>
在head元素里面添加style元素,使用属性选择器:中括号type([type]{}),查找页面元素中,所有携带type属性的元素。并添加样式声明:width:50px height:50px; ([type]{width:50px; height:50px;})在浏览器中能清楚的看到输入框,密码框以及单选框都实现了宽度高度的调整;
如果只想修饰单选框中的性别该如何实现呢?显然,直接使用中括号type([type])是不能完成的。因为,中括号type([type])查找到的是,所有携带type属性的元素,查找范围过于宽泛;
为了提高查找的精确度,可以使用中括号name等于sex([name=”sex”]),并添加样式声明:width:20px height:20px([name='sex']{width:20px;height:20px});再次观察浏览器,性别对应的单选框,大小已经发生了改变。
回到代码中我们继续编写一段代码,中括号class波浪线等于box([class~=”box”]),添加样式声明:background-color:yellow,我们发现,在浏览器中,第一个输入框,以及两个p元素,和第一个div元素,都实现了背景颜色的改变,因为这些标签,都带有class属性并且属性值中都有box这个取值;
回到代码中,再来编写一段代码,中括号class竖杠等于box([class|=”box”]),并添加样式声明backgrund-color:skyblue,回到浏览器中,这时,第一个输入框,和最后两个div元素背景颜色发生了改变。
也许你会想,为什么刚刚修饰完成的第一个input输入框,以及第一个div元素,背景颜色会再次发生样式改变呢?
这是因为在计算机编码世界中,代码是按照从上向下的顺序执行的。这就好比:我可以穿一件T恤出门,我也可以再穿一件外套,外套会将T恤遮盖掉。
中括号class波浪线等于box([class~=box]),能查找到页面中带有class属性,并且向取值中包含box的元素应用样式声明。
继续添加代码,通过中括号class竖杠等于box([class|=box]),再次查找页面中带有class属性,并将取值为box或者是box杠(box-)开头的元素,此时,第一个input输入框和第一个div元素再次被查找到,并添加样式声明,后面的样式把前面的样式覆盖掉了,所以会发生改变;
做到这里也许你还存有疑问:为什么完全可以起类名或者是起id名字来完成样式修饰,还要继续学习这么多的选择器呢?
简单选择器和组合选择器,可以完成元素的查找,但是我们学习的其他选择器可以更加精准高效的查找元素,从而能提高我们编码速度;本节课的属性选择器,在实际开发的过程中,大部分会应用在表单控件中,因为表单控件可添加的属性比较多,通过属性选择器,能够做到高效查找表单元素。
总结一下属性选择器的语法情况,大家快来一起试试吧

相关推荐HOT
更多>>
线程安全与线程不安全?
线程安全(ThreadSafety)和线程不安全(ThreadUnsafety)是在多线程编程中用来描述代码或数据结构在并发环境中的行为的概念。线程安全指的是在多线...详情>>
2023-06-05 17:26:00
如何在javascript中获取当前日期
在JavaScript中,可以使用内置的Date对象来获取当前日期和时间。可以使用以下代码来获取当前日期:这段代码会创建一个新的Date对象,该对象表示...详情>>
2023-03-17 15:41:10
JavaScript模块化规范有哪些
在JavaScript中,常用的模块化规范有以下几种:CommonJS规范:主要用于服务器端编程,是Node.js采用的模块化规范。通过require方法加载模块,通...详情>>
2023-03-06 15:33:52
kafka的应用场景有哪些?
Kafka 是一个高吞吐量、分布式的消息队列系统,被广泛应用于以下场景:1.日志收集:Kafka 可以作为一个高效的日志收集器,收集分布在不同服务器...详情>>
2023-03-03 10:54:49