在css3提供的新选择器之前,选择一个元素需要借助id或者class,css3新增的选择器可以更灵活的去选择需要的元素,那css3提供了哪些好用的选择器呢?

首先就是属性选择器,我们可以通过属性选择器在同样的标签/类中选择出具有相同属性的元素,不用额外再添加class或者id。

比如需要选择出input标签中具有value属性的内容,就可以按以下方式// css

input[value]{

color: #333;

}

// html

属性选择器还有以下匹配规则(E表示选择器,att表示属性值,val表示匹配的内容)选择符简介E[att]具有att属性的E元素

E[att=val]具有att属性且值为val的E元素

E[att^=val]具有att属性且值以val开头的E元素

E[att$=val]具有att属性且值以val结尾的E元素

E[att*=val]具有att属性且值包含val的E元素

选择出input标签中type为password的元素// css

input[type=password]{

color: #000

}

// html

选择出div标签中class以movie开头的元素// css

div[class^=movie]{

color: brown

}

// html

天空之城
龙猫
起风了
武林外传

按照以上五种属性选择规则,可以自由的选择具有某些特征的元素,那么如果此时我需要选择的元素没有单独的属性呢。

比如我想要在一串列表中选择出奇数项和偶数项元素,分别设置不同的背景颜色,此时就需要结构伪类选择器登场了。

结构伪类选择器可以按下标选出指定项,比如第一项 :first-child,最后一项 :last-child,奇数项 :nth-child(even),偶数项 :nth-child(odd),第任何一项 :nth-child(n)

拿上述选择器做一个演示// html

  • 千与千寻的神隐
  • 起风了
  • 龙猫
  • 天空之城
  • 魔女宅急便

// css

ul :first-child {

color: brown // 选择ul的第一个子元素设置字体颜色为棕色

}

ul :last-child {

text-decoration: underline; // 选择ul的最后一个子元素设置下划线

}

ul :nth-child(even){

font-weight: bold;  // 选择ul的偶数子元素 设置字体加粗(下标从1开始)

}

可以看到,以上每一个伪类选择器与前一个选择器并没有直接连在一起,都有一个空格,那连在一起表示什么意思呢?拿  :first-child来举例,:last-child和 :nth-child都是类似的原理ul :first-child  表示选择ul里的第一个子元素

ul:first-child   表示选择第一个ul元素

以下为 ul:first-child

如果我们需要对子元素的选择器属性进行校验,希望选择ul里的第一个子元素,并且是li,那么就可以这样定义ul li:first-child

但是如果第一个元素与选定的元素不匹配,那么设置的样式就不会生效// css

div p:first-child {

color: brown  // 先找到div的第一个子元素,发现它并不是p元素,所以样式不生效

}

// html

div----千与千寻的神隐

p----起风了

p----龙猫

h6----天空之城
div----魔女宅急便

那如果,我们想要选择div下面的第一个p元素呢?此时就可以使用 :first-of-type// 表示选择div下p元素的第一个子元素

div p:first-of-type {

color: brown

}

那如果没有限定指定的子元素类型,所有的不同类型的子元素都会被设置样式// css

div :first-of-type {

color: brown

}

与 :first-of-type 类似的还有以下两种选择器,分别是  :last-of-type(选择某种类型的最后一个子元素),:nth-of-type(按指定规则选择元素)// css

div :first-of-type {

color: brown

}

div :last-of-type {

text-indent: 10px;

}

div :nth-of-type(2n+1) {

text-decoration: underline;

}

来一个表格总结以下以上六种结构伪类选择器选择符简介备注E :first-child选择E元素的第一个子元素E A:first-child(选择E元素的第一个子元素,且该子元素是A类型元素)

E :last-child选择E元素的最后第一个子元素E A:last-child(选择E元素的最后第一个子元素,且该子元素是A类型元素)

E :nth-child(n)选择E元素的指定规则元素,比如 1、2、3这样的数字,even(偶数)、odd(基数)这样的关键字,n或者2n+1这样的表达式E A:nth-child(n)(选择E元素中符合指定规则的子元素,且该子元素是A类型的元素)

E :first-of-type选择E元素中不同类型的子元素中的第一个E A:first-of-type(选择E元素中子元素为A,A元素中的第一个)

E :last-of-type选择E元素中不同类型的子元素中的最后一个E A:last-of-type(选择E元素中子元素为A,A元素中的最后一个)

E :nth-of-type(n)选择E元素的不同类型的指定规则E A:nth-of-type(选择E元素中子元素为A,A元素的指定规则)

以上的属性选择器和结构伪类选择器都是操作元素本身,那接下来这个选择器就很神奇,它会添加一个新的不存在的元素,并操作,一起来看看伪元素选择器。

伪元素选择器有两个,::before,在元素的前面添加一个行内元素,::after,在元素的后面添加一个行内元素,需要添加两个冒号,为了兼容,也可以只写成一个冒号

设置伪元素,必须的属性是 content,其它的属性可以根据自己的需要设置,它常见的有以下几种用途,添加一个小图标,比如圆点,箭头

实现代码如下// css

div {

position: relative;

}

div::after {

position: absolute;

top: 7px;

left: 70px;

content: '';

display: block;

width: 7px;

height: 7px;

border-right: 1px solid #333;

border-top: 1px solid #333;

transform: rotate(45deg)

}

// html

查看更多

或者设置鼠标滑动后添加一个遮罩层,效果显示如下

实现代码如下

// css

div{

position: relative;

width: 200px;

height: 200px;

margin-right: 60px;

}

img {

width: 100%;

height: 100%;

}

div::after {

display: none;

position: absolute;

top: 0;

left: 0;

content: '';

width: 100%;

height: 100%;

background: url(./src/broadcast.png) rgba(0,0,0,.5) center center no-repeat

}

div:hover::after{

display: block;

}

// html

css3增加的以上选择器可以减少html的结构,更加灵活的获取需要的元素

html5新增的伪类选择器有,CSS3新增了哪些选择器?(属性、结构伪类、伪元素选择器)...相关推荐

  1. 创建一个Dog类,初始化构造方法具有name和age属性。Dog类具有坐和打滚的方法。请编写相应的类并创建对象调用该类。

    创建一个Dog类,初始化构造方法具有name和age属性.Dog类具有坐和打滚的方法.请编写相应的类并创建对象调用该类. class Dog(object):def __init__(self,nam ...

  2. html5类选择器选择权重,Python Html5和CSS3的新增功能:CSS权重与CSS3新增选择器

    一.CSS权重概念 CSS权重概念:指的是样式的优先级,有两条或多条样式作用于一个元素,权重高的那条样式对元素起作用,权重相同的,后写的样式会覆盖前面写的样式. 二.权重的等级 2.1.权重的等级划分 ...

  3. php伪类,CSS3新增伪类

    p:last-of-type         选择其父元素的最后的一个P元素 p:last-child            选择其父元素的最后子元素(一定是P才行) p:first-of-type ...

  4. CSS3新增-属性(长度颜色背景)选择器-盒子模型

    属性(长度颜色背景)选择器-盒子模型 1 CSS3 基本语法 1.1 CSS3 浏览器私有前缀 Chorme: -webkit- Safari: -webkit- IE; -ms- Firefox: ...

  5. CSS3与页面布局学习笔记(一)——概要、选择器、特殊性与刻度单位

    web前端开发者最最注的内容是三个:HTML.CSS与JavaScript,他们分别在不同方面发挥自己的作用,HTML实现页面结构,CSS完成页面的表现与风格,JavaScript实现一些客户端的功能 ...

  6. CSS3新增属性大全!

    1 CSS3 基本语法 1.1 CSS3 浏览器私有前缀 Chorme: -webkit- Safari: -webkit- IE; -ms- Firefox: -moz- Opera: -o- 1. ...

  7. 假装Python高手,你真的懂属性描述符类!

    Python学了好几年,发现功力还是那样,很多同学经常这样抱怨!都说Python入门容易,精通难,确实是这样的,每当我们打开一些牛逼的源码框架,进去看窥探大牛的源码,比如Python里面非常著名的Dj ...

  8. web前端入门学习 css(8)(新增语义化标签、video/audio、新增input类型、新增表单属性、属性选择器、结构伪类选择器、伪元素选择器、css3盒子模型、模糊、calc函数、过渡

    https://www.bilibili.com/video/BV1pE411q7FU?p=276 文章目录 html5新特性 html5新增语义化标签 header头部 nav导航 article内 ...

  9. 【04】HTML5+CSS3:01-HTML5新增标签、多媒体标签、input标签、新增表单属性、CSS3属性选择器、伪元素选择器、2D转换

    文章目录 HTML5 第一天 一.什么是 `HTML5` 二.`HTML5 ` 新增标签 三.多媒体音频标签 四.多媒体视频标签 五.新增 input 标签 六.新增表单属性 七.`CSS3 ` 属性 ...

最新文章

  1. redis6.0中的多线程
  2. 外联css及js的使用
  3. 关于前端与微信交互账号绑定的问题
  4. 【upc 9523】Shopping II
  5. iOS经典面试题之深入分析“内存平移”的原理
  6. mac运行python速度慢_python-3.x – Pygame简单循环在Mac上运行得非常慢
  7. [Objective-C语言教程]动态绑定(32)
  8. bash awk_Bash指南,Linux终端技巧,DevOps错误,Python,awk,NASA等
  9. python类takes no arguments_Python构造函数报错:TypeError: People() takes no arguments
  10. jquery的ajax异步请求接收返回json数据
  11. Java实现穷举_LeetCode 28:实现strStr() Implement strStr()
  12. @RequestParam和@RequestBody和@PathVariable用法小结
  13. html让ie11不用兼容视图,如何设置ie11浏览器兼容性视图?
  14. SDRAM 控制器(六)——仲裁模块
  15. 仓储管理之盘点——盘点方法
  16. iphone开发:ipa打包
  17. 国家一级建造师——工程经济——第一章——第二节
  18. 人民币即期汇率近六年首次跌破6.70 对国际消费影响几何
  19. 全国软考中级软件设计师 学习笔记-法律法规部分
  20. 饥荒联机版连不上服务器_饥荒无法连接klei服务器刷不出服务器解决办法

热门文章

  1. 985高校发布讣告:终年43岁!本月已有3位年轻教师去世…
  2. mmall数据库学习笔记
  3. 中秋节随性作诗一首,送给新入学的大学学子们,也送给在外打拼的程序员们!
  4. VMware15无法打开16的镜像解决办法
  5. “云计算”借CRM蝶变 落地成定局
  6. 葛洲坝电力集团责任有限公司改变不一样的风格
  7. matlab 图 导出,导出到图像 - MATLAB Simulink - MathWorks 中国
  8. iOS---邓白氏编码的申请
  9. Qt下实现简单工厂设计模式
  10. (转) 深度强化学习综述:从AlphaGo背后的力量到学习资源分享(附论文)