CSS有哪些选择器,如何计算优先级?(一)

1、什么是CSS选择器?

前面介绍了HTML和CSS的概述及结构,大体了解到HTML用于描述页面的结,而CSS用于控制页面中元素的样式。那么,CSS是如何控制元素来添加相应的样式呢?

这就涉及到css里面选择器的规则了,CSS选择器主要的功能就是选中想要添加样式的元素,选择器就是用来匹配元素的,必须是要选中(书写正确)才可以给HTML页面中各种元素添加样式。

当然,有时候选择器也会涉及到继承、声明冲突可能会选不中,后面会详细介绍。

2、基本选择器

  • 选择器最终选中的是离大括号最近的元素
  • 通配选择器
    格式:*{声明块}
    所有的标签都应用其样式,已经很老旧快被淘汰,建议不用

  • 元素选择器
    格式:标记名{声明块}
    所有与该标记名匹配的元素,都将应用声明块中的规则

  • 类选择器
    格式: . 类名{声明块}
    所有class属性为指定类名的元素,都将应用声明块中的规则

注:命名规范

1、点号开始
2、包含字母、数字、下划线、连字符
3、点后面必须是字母 4、必须区分大小写

大驼峰命名法:每个单词的首字母大写
小驼峰命名法(推荐):除了第一个单词,其他单词的首字母大写

  • 类选择器又分:类选择器、伪类选择器和属性选择器

  • ID选择器(js用)
    格式: #ID名{声明块}
    特点:名字唯一,只能出现一次

  • 组合选择器/并集选择器
    格式:元素名,ID名,类名{声明块}
    顺序没有先后

3、层次选择器

  • 子级选择器
    格式:父元素A>子元素B{声明块}

  • 后代选择器
    格式:祖先元素A+空格+后代元素B{声明块}

  • 兄弟选择器
    格式:兄弟元素A+“+”+兄弟元素B{声明块}
    只能选中A元素后面的元素,AB间不能有其他元素

  • 通用选择器
    格式:兄弟元素A+“~”+兄弟元素B{声明块}
    选中A元素后面的所有兄弟元素

4、伪类选择器

  • 结构伪类选择器
    元素A:nth-child(n){声明块}
    n是数值(从0开始递增)或公式

  • A也可以是类选择器,条件要满足第n个是A元素!!!
    注:所有兄弟元素必须是相同标签

  • 选中第1个元素,元素A:first-child{声明块}

  • 选中最后一个元素,元素A:last-child{声明块}

  • 选中奇数项元素,元素A:nth-child(odd){声明块}
    odd,奇数(2n+1) n起始值是0,自增1

  • 选中偶数项元素:元素A:nth-child(even){声明块}
    even,偶数(2n)
    选中第6个及以后的元素:n+6;
    选中前3个,公式:-n+3

  • 选中指定标签的第n个元素,元素A:nth-of-type(n){声明块}
    选中第1个指定类型的标签,元素A:first-of-type{声明块}
    选中最后1个指定类型的标签,元素A:last-of-type{声明块}
    倒数选中目标元素:元素A:nth:last-of-type{声明块}
    元素A:nth:last-chlid{声明块}

  • 否定伪类选择器,元素A:not(:nth-child(n)){声明块}
    否定两个元素:元素A:not(:nth-child(n):not(:nth-child(n)){声明块}

  • 选中无兄弟元素的标签:元素A:only-child{声明块}

  • 选中没有元素内容的标签:元素A:empty{声明块}

  • 注: 空格也算元素内容(空格和回车)

5、动态伪类选择器

  • :link 未访问

  • :hover 悬停

  • :active 点击

  • :visited 已访问

  • :focus 焦点、激活(键盘tab)
    使用键盘进行页面的操作,输入框

  • 书写顺序: link/visited(可换序,又叫静态伪类,仅适用于超链接)、hover、active

  • 元素A:target{声明块}
    跳转页面打开方式:target="_blank"(打开新页面) _self(默认值,当前页面)

    还可以: 在html里面添加锚点和css里添加display:none;可以隐藏内容,点击时才出现

6、伪元素选择器

  1. 在元素之前添加内容,元素A::before{声明块}
  2. 在元素之后添加内容,元素A::after{声明块}
  • 注: 用before或after都要在其css样式里添加content=“ 内容”;
    如果是行内标签,设置宽高还需要改变display为inline-block
  1. 选中元素的第一行,元素A::first-line{声明块(color:red;)}
  2. 选中元素首字母下沉,元素A::first-letter{声明块(color:red;font-size:30px;)}
  3. 选中区域的样式添加,元素A::selection{声明块}
  • 注: 不能给空标记加伪元素,空标记是没有内容的

7、属性选择器

  • 书写格式1:元素名[属性名=“属性值”]{};

  • 格式2:元素名[属性名^=“属性值”]{};
    选中以xx开头的元素

  • 格式3:元素名[属性名$=“属性值”]{};
    选中以xx结尾的元素

  • 格式4:元素名[属性名*=“属性值”]{};
    选中属性值中包含xx的元素

  • 元素名>*[name=“f68”]

  • 缩写:div.box=div[class=“box”]

8、关于兼容性的问题?

  • 什么是兼容性?
  • 就是同一个元素,在不同的浏览器上它的样式不同
  • 解决方式:引用CSS重置文件
    reset.css 清除全部样式
    normalize.css 保留一些样式,但在浏览器上都是一样的

 
 
 

完。
更多资料请微信搜索公众号「 夜来妖风起」第一时间阅读。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值