位置: 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 的区别(前端面试题必问的题目)

  • b站怎么用uid搜索用户(b站app怎么搜uid)

    b站怎么用uid搜索用户(b站app怎么搜uid)

  • 抖音能和粉丝连麦吗(抖音能和粉丝聊天吗)

    抖音能和粉丝连麦吗(抖音能和粉丝聊天吗)

  • 快手作品链接怎么复制(快手作品链接怎么发)

    快手作品链接怎么复制(快手作品链接怎么发)

  • 电脑系统崩溃无法开机(电脑系统崩溃无法进入桌面)

    电脑系统崩溃无法开机(电脑系统崩溃无法进入桌面)

  • f2c模式是什么意思啊(f2c2c是什么模式)

    f2c模式是什么意思啊(f2c2c是什么模式)

  • 微信注销之后手机号还能注册吗(微信注销之后手机号就解绑了吗)

    微信注销之后手机号还能注册吗(微信注销之后手机号就解绑了吗)

  • ata是固态硬盘吗(ata硬盘sata接口一样的吗)

    ata是固态硬盘吗(ata硬盘sata接口一样的吗)

  • 爱奇艺用微信登录的 可以两个人用吗(爱奇艺用微信登录怎么给别人用)

    爱奇艺用微信登录的 可以两个人用吗(爱奇艺用微信登录怎么给别人用)

  • 手机如何读取rfid(手机如何读取ic卡卡号)

    手机如何读取rfid(手机如何读取ic卡卡号)

  • 苹果勿扰模式微信视频会响(苹果勿扰模式微信有提示吗)

    苹果勿扰模式微信视频会响(苹果勿扰模式微信有提示吗)

  • ipadmini微信版本低不能登录(ipadmini微信版本过低怎么升级)

    ipadmini微信版本低不能登录(ipadmini微信版本过低怎么升级)

  • ipada1822是哪款ipad(ipada1822是ipadair1吗)

    ipada1822是哪款ipad(ipada1822是ipadair1吗)

  • nfs是什么系统(nfs的作用)

    nfs是什么系统(nfs的作用)

  • 电脑状态栏跑到上面了(电脑状态栏跑到右边怎么调过来)

    电脑状态栏跑到上面了(电脑状态栏跑到右边怎么调过来)

  • 运算器和什么合称为cpu(运算器和什么的结合体称为cpu)

    运算器和什么合称为cpu(运算器和什么的结合体称为cpu)

  • ps时间轴怎么保存(ps时间轴怎么保存声音)

    ps时间轴怎么保存(ps时间轴怎么保存声音)

  • 手机相机被占用怎么解决(手机相机被占用用不了面部解锁是怎么回事)

    手机相机被占用怎么解决(手机相机被占用用不了面部解锁是怎么回事)

  • 电脑怎么联网本地连接(怎么电脑怎么联网)

    电脑怎么联网本地连接(怎么电脑怎么联网)

  • 阿里鱼卡是全国免流吗(阿里鱼卡官网)

    阿里鱼卡是全国免流吗(阿里鱼卡官网)

  • 华为note3支持人像处理么(华为note3e有nfc吗)

    华为note3支持人像处理么(华为note3e有nfc吗)

  • 拼多多50元签到金怎么兑换不了(拼多多50元签到是真的吗)

    拼多多50元签到金怎么兑换不了(拼多多50元签到是真的吗)

  • 快手能看到别人的关注吗(快手能看到别人浏览你的作品吗)

    快手能看到别人的关注吗(快手能看到别人浏览你的作品吗)

  • 触宝电话如何设置方法(触宝电话如何设置密码)

    触宝电话如何设置方法(触宝电话如何设置密码)

  • 二次封装 el-table(二次封装机)

    二次封装 el-table(二次封装机)

  • DOM_常用事件(dom事件种类)

    DOM_常用事件(dom事件种类)

  • 织梦提交自定义表单后自动发送邮件到站长邮箱的方法(织梦怎么改文字)

    织梦提交自定义表单后自动发送邮件到站长邮箱的方法(织梦怎么改文字)

  • 税后净营业利润英文
  • 购买产品再出售怎么入账
  • 个人生产经营所得税计算器
  • 税务在哪查询
  • 三方协议缴款账户状态错
  • 商业企业能否计税
  • 土地不动产登记证办理流程
  • 开办费一次性摊销企业所得税
  • 企业代缴个人所得税打印完税证明
  • 外币报表折算差额会计分录
  • 教学用品采购
  • 分公司给总公司管理费的会计分录
  • 房租费属于无形资产吗
  • 生活补贴和节日补贴区别
  • 不开票的收入怎么避税
  • 税法对开办费的怎么汇算清缴
  • 存商品入成原材料怎么改?
  • 未立项进行建设
  • 苹果电脑任务栏跑到左边去了
  • 京东预付卡怎么做账
  • 简介linux系统中的10个常用命令及功能
  • vbs win10
  • php支付功能
  • 总公司人员的工资子公司可以发吗
  • macOS Catalina10.15.4值得升级吗 macOS Catalina10.15.4更新了什么
  • win10最新版本22h2激活
  • 无法偿还应付账款账务处理
  • 属于资本的是
  • 允许税前扣除的税金
  • php模糊查询txt文本
  • 境外服务费代扣代缴所得税
  • php怎么样
  • 接受投资收到的现金计入
  • ChatGPT在热门行业的应用场景有哪些
  • 收到预付购货款
  • 房租费用计入什么现金流量
  • 会计常用单据样本大全
  • 借款利息收入发票
  • pnpnpn的工作原理
  • mongodb启动
  • 收到个人所得税手续费返还增值税税率
  • 业委会究竟在小区起什么作用
  • 小规模纳税人的条件
  • 不动产租赁可以享受加计抵减吗
  • 培训学校不退学费找什么部门
  • 银行承兑汇票提示付款期为几天
  • 非同一控制下控股合并入账价值
  • 小规模纳税人记账报税流程
  • 无形资产的处置损益
  • 递延收益金额怎么算
  • 以前年度的损益调整为负值说明什么
  • 低值易耗品意思
  • 公司的房租发票怎么开
  • 折扣销售方式销售货物只要发票中有注明的折扣额
  • 代持的股份
  • 超期未备案可以投诉么
  • 电汇凭证有效期
  • 久期缺口计算公式解析
  • 无票收入怎么报增值税
  • 填收入与成本明细怎么填
  • mmc不能打开文件win10
  • solaris开放指定端口
  • window怎么升级系统
  • win8.1无法连接无线网
  • 资源管理器操作教程
  • linux系统rm -rf
  • centos7 samba服务器搭建
  • reg注册表格式文件
  • win10苹果版
  • win7与vista关系
  • windows如何禁用程序
  • win7安装cad2010
  • js 读取 excel
  • perl 获取数据库查询结果
  • jquery设置滚动条
  • 安装配置jsp运行环境
  • 个人所得税法实施条例2011
  • 2022年国家标准公文格式
  • 梦幻西游新版登录方式
  • 2021年社保又涨价了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设