位置: IT常识 - 正文

CSS的选择器(超详细)(css选择器详解)

编辑:rootadmin
CSS的选择器(超详细)

目录

一、常用的选择器

1.元素选择器

2.类选择器(class选择器)

3.id选择器

4.通配符选择器

二、群组选择器

 三、关系选择器

1.后代选择器

 2.子代选择器

3.相邻兄弟选择器

 4.通用兄弟选择器

5.案例

 四、属性选择器

 五、伪类选择器

1.常用的伪类选择器

 2.否定伪类

3.元素的伪类

六、伪元素选择器


一、常用的选择器1.元素选择器

推荐整理分享CSS的选择器(超详细)(css选择器详解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:css选择器的写法,css里的选择器,css的选择器及其用法,css的选择器及其用法,css选择器及常用属性,css选择器及常用属性,css中的选择器,css的选择器及其用法,内容如对您有帮助,希望把文章链接给更多的朋友!

语法 : 标签名{}

作用 : 选中对应标签中的内容

例:p{} , div{} , span{} , ol{} , ul{} ......

2.类选择器(class选择器)

语法 : .class属性值{}

作用 : 选中对应class属性值的元素

例子 : <p class="A">段落1</p>

          <p class="B">段落1</p>

          <p class="C">段落1</p>

          .A{} , .B{} , .C{} ......

注意:class里面的属性值不能以数字开头,如果以符号开头,只能是'_'或者'-'这两个符号,其他的符号不可以,一个class里面可以有多个属性值

3.id选择器

语法 : #id属性值{}

作用 : 选中对应id属性值的元素

例子 : <p id="A">段落1</p>

          <p id="B">段落1</p>

          <p id="C">段落1</p>

          #A{} , #B{} , #C{} ......

注意 : id的属性值只能给1个,可以重复利用,不能以数字开头

4.通配符选择器

语法 : *{}

作用 : 让页面中所有的标签执行该样式,通常用来清除间距

例子 : *{

             margin: 0;  //外间距

             padding: 0;  //内间距

}

二、群组选择器

语法 : 选择器1,选择器2,选择器3...{}

作用 : 同时选中对应选择器的元素

例子 : 

<style> /* 用群组的目的是为了简化代码量 */ div,p,h3,.li2{ font-size: 30px; } div,.li2,.text3{ color: red; } p{ color: blue; } h3{ color: pink; }</style> <div>盒子1</div> <p>段落1</p> <p>段落2</p> <h3>文本标题3</h3> <h3 class="text3">文本标题3</h3> <ol> <li>有序列表</li> <li class="li2">有序列表</li> <li>有序列表</li> </ol>

 三、关系选择器1.后代选择器

后代选择器也叫包含选择器,祖先元素直接或间接的包含后代元素

<style> /* 后代选择器(包含选择器),选择到的是box下面的所有后代p */ .box p{ width: 200px; height: 200px; background-color: yellow; } </style> <div class="box"> <p>0000</p> <div> <p>11111</p> <p>22222</p> </div> <div class="box2"> <p>333</p> </div> <p>444</p> </div>

<style> /* 选择到的是box的后代div的后代p */ .box div p { width: 200px; height: 200px; background-color: yellow; }</style> <div class="box"> <p>0000</p> <div> <p>11111</p> <p>22222</p> </div> <div class="box2"> <p>333</p> </div> <p>444</p> </div>

 2.子代选择器

父元素直接包含子元素,子元素直接被父元素包含

<style> /*子选择器选中的是.box下所有的儿子p .box>p{ width: 200px; height: 200px; background-color: yellow; } </style> <div class="box"> <p>0000</p> <div> <p>11111</p> <p>22222</p> </div> <div class="box2"> <p>333</p> </div> <p>444</p> </div>

<style> /*子选择器选中的是.box下所有儿子div中的儿子p .box>div>p{ width: 200px; height: 200px; background-color: yellow; }</style> <div class="box"> <p>0000</p> <div> <p>11111</p> <p>22222</p> </div> <div class="box2"> <p>333</p> </div> <p>444</p> </div>

3.相邻兄弟选择器 <p>000</p> <div class="box">盒子1</div> <p>111</p> <p>222</p> <p>333</p> <div> <p>44444</p> </div> <p>5555</p>

以上面的代码为例,除了内容为'44444'的的p标签外,其余的所有元素均为兄弟元素,而相邻兄弟元素就是紧挨着的两个标签

给上述代码加上内部修饰样式:

<style> /* 相邻兄弟,会选择到box后面紧挨着的p,那么就是内容为111的p标签 */ .box+p{ width: 200px; height: 200px; background-color: yellow; }</style>

我们打开页面看看效果:

 4.通用兄弟选择器 <p>000</p> <div class="box">盒子1</div> <p>111</p> <p>222</p> <p>333</p> <div> <p>44444</p> </div> <p>5555</p>

同样以上面的代码为例,添加一段内部修饰样式:

<style> /*通用兄弟选择器,会选择到.box后面所有的兄弟p,那么就是除了内容为'44444'以外的所有p*/ .box~p{ width: 200px; height: 200px; background-color: yellow; }</style>CSS的选择器(超详细)(css选择器详解)

 

5.案例

以上面的代码为例,现在有一个需求,想要内容为'5555'的标签自己变换样式,其余的都不变,我们先来分析一下,这个标签很明显,单独选择相邻兄弟元素或者通用兄弟元素都是无法实现只改变p5这个标签,先看看p5标签在.box后面,而.box后面只有一个div标签,刚好p5就是这个div的兄弟元素,代码如下:

<style> .box~div+p{ width: 200px; height: 200px; background-color: yellow; }</style>

 四、属性选择器

属性选择器一共有7种写法

1.某某[属性]

2.某某[属性=属性值]

3.某某[属性^=属性值]

4.某某[属性$=属性值]

5.某某[属性*=属性值]

6.某某[属性~=属性值]

7.某某[属性|=属性值]

举个小案例:

<style>.demo {width: 300px;border: 1px solid #ccc;padding: 10px;overflow: hidden;margin: 20px auto;}.demo a {float: left;display: block;height: 50px;width: 50px;border-radius: 10px;text-align: center;background: #aac;color: blue;font: bold 20px/50px Arial;margin-right: 5px;text-decoration: none;margin: 5px;} </style> <div class="demo"><a href="" class="links item" target="_balnk" lang="zh-tw">4</a><a href="sites/file/image.jpg" class="links item" title="link-23 aa">5</a><a href="mailto:baidu@hotmail" class="links item" title="website link" lang="zh">6</a><a href="/a.pdf" class="links item" title="open the website" lang="cn">7</a><a href="/abc.pdf" class="linksitem" title="close the website" lang="en-zh">8</a><a href="abcdef.doc" class="links item" title="http://www.sina.com">9</a><a href="abd.doc" class="linksitem last" id="last">10</a></div>

以上代码的默认样式是这样的:

现在在style标签内写入1~7个方法的修饰样式:

<style> /* 属性选择器的权重是0010 *//* 写法1 某某[属性] 选择到a标签且有title属性的变*//* a[title]{background: yellow;} *//* a[lang][target]{background: yellow;} *//*重点: 写法2: 某某[属性=属性值] 选择到有某某标签有指定属性且属性值必须一摸一样的也有的多一个空格都不行 *//* a[lang="zh"]{background: yellow;} *//* a[title="this is a link"]{background: yellow;} *//* class名字是item的,且有属性lang且属性值必须一模一样是zh-cn的 *//* .item[lang="zh-cn"]{background: yellow;} *//* id是last且有title属性且有class属性,属性值只能是links的变 *//* #last[title][class="links"]{background: yellow;} *//* 写法3: 某某[属性^=属性值] *//* a标签有class属性且属性值是li开头的 *//* a[class^=" li"]{background-color: yellow;} *//* a[title^="this"][lang]{background-color: yellow;} *//* 写法4 某某[属性$=属性值] *//* a标签有class属性且属性值结尾是t的变 *//* a[class$="t"]{background-color: yellow;} *//* a[href$=".pdf"]{background-color: yellow;}a[href$=".doc"]{background-color: red;}a[href$=".png"]{background-color: green;} *//* 写法5 某某[属性*=属性值] *//* 选择到a标签且有href属性且只要有字母b就可以 *//* a[href*="b"]{background-color: green;} *//* 写法6 某某[属性~=属性值] *//* 选择到的是a标签且有class属性,且属性值有完整的itme词的变 *//* a[class~="item"]{background-color: green;} *//* 写法7 某某[属性|=属性值] *//* 这个是选择到有a标签,且有属性title,且属性值只有1个是link的或者属性值有多个但是得是link-开头的变 */a[title|="link"]{background-color: green;} </style>

现在默认展示的是第七个方法(需要看其他6种方法的同学自行打开其余6种方法的注释),现在选择到的是有a标签,且有属性title,且属性值只有1个是link的或者属性值有多个但是得是link-开头的变,那么就是第一,第三,和第五个,打开页面看看

 五、伪类选择器1.常用的伪类选择器

:first-child   第一个子元素

:last-child    最后一个子元素

:nth-child()   选中第n个元素

关于:nth-child()的特殊值(括号内的内容可以填写以下几种)

        n   第n个   n的范围0到正无穷(全选)

        even或2n    选中偶数位的元素

        odd或2n+1   选中奇数位得到元素

以child结尾的是在所有元素中选择

:first-of-type  第一个子元素

:last-of-type   最后一个子元素

:nth-of-type()    选中第n个元素以type结尾的是在相同元素中选择

<style> /* box下面的第1个子元素变,也就是p1变 */ .box :first-child{ border: 2px solid blue; } /* box下面的第1个子元素是li的时候变*/ .box li:first-child{ border: 2px solid blue; } .box p:first-child{ border: 2px solid blue; } /* box下面的最后1个子元素变,也就是p6变 */ .box :last-child{ border: 2px solid blue; } .box p:last-child{ border: 2px solid blue; } /* box下面的第3个子元素变 */ .box :nth-child(3){ border: 2px solid blue; } .box li:nth-child(3){ border: 2px solid blue; } /* box下面的第7个子元素是p的变 */ .box p:nth-child(7){ border: 2px solid blue; } .box p:nth-child(9){ border: 2px solid blue; } /* n是从0开始的数列 把n=0开始往n+3里面计算就可 */ /* n=0 n+3=3 */ /* n=1 n+3=4 */ /* n=2 n+3=5... 结果就是第3,4,5,6,7,8,9...变*/ .box :nth-child(n+3){ border: 2px solid blue; } /* box下面的第3,4,5,6,7,8,9...是li的时候变 */ .box li:nth-child(n+3){ border: 2px solid blue; } /* 表示的意思是box里面的第3,2,1个变 */ .box :nth-child(-n+3){ border: 2px solid blue; } /* 表示的意思是box里面的第3,2,1个是p变 */ .box p:nth-child(-n+3){ border: 2px solid blue; } /* 表示的意思是box里面的第2,4,6,8,10,12.... 偶数的 */ .box :nth-child(2n){ border: 2px solid blue; } .box :first-child{ border: 2px solid red; } /* 表示的意思是box里面的第2,4,6,8,10,12....是li的变 偶数的 */ .box li:nth-child(2n){ border: 2px solid blue; } /* 2n和even都是偶数的意思 */ .box li:nth-child(even){ border: 2px solid blue; } /* 表示的意思是box里面的第1,3,5,7,9...个变也就是奇数变 */ .box :nth-child(2n+1){ border: 2px solid blue; } .box :nth-child(odd){ border: 2px solid blue; } /* 5 7 9 .... */ .box :nth-child(2n+5){ border: 2px solid blue; } .box :nth-last-child(2n){ border: 2px solid blue; } .box :only-child{ border: 2px solid blue; }</style> <ul class="box"> <p>1111</p> <p>222</p> <li>无序列表的li1</li> <p>33333</p> <li>无序列表的li2</li> <li>无序列表的li3</li> <p>44444</p> <li>无序列表的li4</li> <p>555</p> <li>无序列表的li5</li> <p>666</p> </ul>

 

<style> /* box下面的第1个子元素变,从结构看第1个是p,所以p1变了 */ .box :first-child{ border: 2px solid blue; } /* box下面的同类型的第1个变,从目前的结构上看ul下面有2个类型,1个是li和1个是p所以li类型和p类型的第1个都变了 */ .box :first-of-type{ border: 2px solid blue; } /* -child和-type的区别 child只看某个父元素下面的子元素 -type看的某父元素下面的同类型的子元素 child就是问班级有多少人 type就是问班级有多少女生和多少男生 */ .box :last-of-type{ border: 2px solid blue; } .box p:last-of-type{ border: 2px solid blue; } /* box 里面的p的第2个 */ .box p:nth-of-type(6){ border: 2px solid blue; } /* 选择box中li里面的第偶数个 */ .box li:nth-of-type(2n){ border: 2px solid blue; } .box li:nth-of-type(2n+1){ border: 2px solid blue; } .box li:nth-last-of-type(2){ border: 2px solid blue; } /* box里面的只有1个子元素是li的时候变 */ .box li:only-child{ border: 2px solid blue; } /* box里面的li只有1个的时候变 */ .box li:only-of-type{ border: 2px solid blue; } .box :nth-last-child(2){ border: 3px solid blue; } .box :nth-last-of-type(2){ border: 3px solid blue; }</style> <ul class="box"> <p>1111</p> <p>222</p> <li>无序列表的li1</li> <p>33333</p> <li>无序列表的li2</li> <li>无序列表的li3</li> <p>44444</p> <li>无序列表的li4</li> <p>555</p> <li>无序列表的li5</li> <p>666</p> </ul>

 2.否定伪类

:not()        将符号条件的元素去除

3.元素的伪类

:link        表示未访问过的a标签 :visited    表示访问过的a标签

以上两个伪类是超链接所独有的 由于隐私的问题,所以visited这个伪类只能修改链接的颜色

以下两个伪类是所有标签都可以使用 :hover        鼠标移入后元素的状态 :active        鼠标点击后,元素的状态 

六、伪元素选择器

同伪类一样,伪元素也是不存在的元素,表示元素的特殊状态

常见的几个伪元素:

::first-letter    表示第一个字母

::first-line       表示第一行

::selection     表示选中的元素

::before         元素开始的位置前

::after            元素结束的位置后

befor和after必须配合contend一起使用(before,after所写的内容无法选中且永远在最前和最后)

本文链接地址:https://www.jiuchutong.com/zhishi/300767.html 转载请保留说明!

上一篇:国内前端vue对接OpenAI/chatgpt【文本互动/生成图片】(web前端开发 vue)

下一篇:前端经典面试题 | Computed 和 Watch 的区别(前端面试题必问的题目)

  • 无偿使用房产需要交哪些税
  • 增量留底退税好处
  • 公司租用个人房屋如何记账
  • 住宿发票没有天数
  • 网线的税收编码是多少
  • 企业租赁个人房屋怎么交税
  • 收取违约金如何处罚
  • 施工企业挂靠账务处理怎么做
  • 以旧换新销售货物的增值税处理
  • 购物发票的税是由谁承担
  • 产生个人所得税之后是不是不能公益性岗位
  • 物资包括材料吗
  • 累计结转是什么意思
  • 社保显示已申报,但缴不了款
  • 小规模纳税人销售自己使用过的物品
  • 转结本月工资
  • linux ssh命令用法
  • 销售净利率的计算公式有哪些
  • 销售门窗并安装如何缴纳增值税
  • linux系统怎么访问共享文件夹
  • 自产产品用于业务招待 如何申报企业所得税
  • 股票分红怎么扣税
  • .sfx.exe是什么文件
  • 企业所得税具体纳税筹划案例
  • 微信php开发
  • vue3中props
  • multipartfile 多文件上传
  • 小微企业报税后多久缴税
  • 印花税的优惠政策和依据
  • vue传值inject
  • php模拟post提交
  • php和mysql关系
  • 生成stl基本过程
  • yolov5 output
  • 购入苗木进项税的会计分录
  • 不良品扣款应入哪个科目
  • 什么是预收账款减少
  • python rem
  • 润滑脂开票属于哪一类
  • 委托代销商品支付的手续费计入什么科目
  • 个人所得税数据怎么导入新电脑
  • 合同权益如何进行转让
  • 库存现金的会计分录
  • 月末一般无余额的账户是( )
  • 产业增加值是增长量吗
  • 发票验旧后还要缴销吗
  • 个体工商户纳税人类型怎么填
  • 可转债中签卖出流程
  • 公司支付工伤赔偿,是先签字还是先打钱
  • 价内税与价外税的计算公式
  • 应付职工薪酬的核算内容
  • 高新企业税收减免多少
  • 营改增现代服务中合同能源管理服务
  • 建筑行业如何结算工程款
  • 暂估入库需要入什么科目
  • 应收账款收不回来怎么处理分录
  • 显示应退税额就是能退是吗
  • 4月确认收入5月支出
  • 营业费用这个科目还在用吗
  • 预交企业所得税计算
  • 零余额账户年终余额清零的规定
  • 企业必须设立的账薄
  • windows怎么管理员权限
  • win10系统浏览器在哪
  • win10更新dx
  • linux find . -name命令
  • centos 安装chia
  • Win10 Mobile 10572快速配置更新推送 Win10 Mobile 10572升级体验
  • 电脑系统xp怎么样
  • 接入hpool
  • wifi基本功能
  • javascript运用
  • jQ处理xml文件和xml字符串的方法(详解)
  • android图库
  • 安卓调用蓝牙接口
  • 银行内部有遴选吗知乎
  • 税务有哪些方面
  • 金税盘和uk
  • 无锡市国家税务局
  • 金水区地税局办事大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设