css选择器
css基础
1.1 CSS整体的重点
☞ 选择器
☞ 盒子模型
☞ 浮动
☞ 定位
☞ 动画 ,伸缩布局(c3部分)
1.12 CSS特性
1. ☞ 层叠性(覆盖)
◆在同一个标签中,如果优先级相同,如果定义的样式发生冲突,那么最后一次定义的样式会将前面定义的样式(冲突的那部分)覆盖掉。(根据样式表的书写顺序额)
声明冲突:属性相同值不同,依靠层叠性解决
-
标签优先级 优胜略汰 跟来源和重要性
-
特殊性 优胜略汰
color = "red"; 普通声明
color = "red" !important;重要声明
-
源次性 优胜略汰
2. ☞继承性:
◆首先只有在嵌套关系的标签中才会出现继承性。
◆如果子元素默认没有样式,同时该元素又受父元素的样式影响
◆color , font属性 ,text-align(此标签只能用于块标签当中)...都可以被子元素继承,文本类的样式具有继承性
◆注意:
✔width 和 height 不能被继承,块级元素宽度受父级影响,是因为块级元素特性
✔a标签在默认情况下,不能受父元素的文字颜色影响
✔标题标签在默认情况下,不能直接等于父元素设置的文字大小
3. ☞优先级
标签选择器<类选择器<ID选择器<行内样式<!important
0 0 0 0 0
选择器数量和 ,类选择器数量和,ID选择器和 相比较
同等优先级,使用靠后的样式
并集优先级单个计算
✔继承的权重为0
✔权重可以叠加
总结:
◆一般我们通过css设置样式的时候,不要把选择器的优先级设置的太高或者太低。
注意:在浏览器中交集的优先级要大于单个类或者id,但是,一个元素标签和一个类或者一个id比不上交集的优先级,大概是浏览器会在分别写的类(或id)和元素间选择一个,然后再和其他比较
属性名 = “属性值”或者 属性名 = ‘属性值’
单引号或者双引号都是一样的
1.2 CSS概念
☞ 作用:
◆美化网页(通过css控制标签的样式)
◆网页布局(通过css控制标签的位置)
☞ 概念:层叠样式表 (Cascading Style Sheets)或者级联样式表层叠:css的特性。
注意:
◆css是以html为基础
☞ 书写方式:
内部样式表
✔先准备一个html页面
✔在html页面中,head标签中添加一个style标签
✔在style标签中写css代码
◆外联式写法(外部样式表)
✔首先新建一个单独的css文件(在该文件中不需要写style标签,直接写css代码就可以)
✔通过link标签将该css文件引入到当前html页面中
注意:
一个页面中可以同时引用多个css文件
◆行内式写法:将css代码写入到html标签内部(内联样式)
☞将css代码在标签内部设置
☞总结:
✔行内样式只能影响当前标签的样式
✔行内样式会导致网页结构乱
✔样式与结构没有分离
1.3 CSS语法
☞ 选择器 {属性: 值; ......}
☞选择器分类
◆基础选择器
✔标签选择器(掌握)
✔类选择器(掌握)
✔ID选择器 在css当中尽量不要使用id选择器
✔通配符选择器
◆复合选择器
✔标签指定式选择器(交集选择器)
✔并集选择器
✔子代选择器
✔后代选择器
兄弟选择器
✔属性选择器
✔伪类选择器
1.4 标签选择器
☞ html标签名 {属性: 值;}
☞ 作用:
◆ 通过html标签名选中需要设置样式的标签
注意:
◆代码中遇到特殊符号,都必须是英文输入法下的符号。
1.5 类选择器(使用最多)
类命名规范
☞ 自定义类名不能使用纯数字或以数字开头
☞ 不推荐使用汉字定义类名
☞ 不能使用特殊字符或者以特殊字符开头($,#,@,%...)
☞ 建议不推荐使用标签名作为类名
☞一般我们用具有一定语义的单词或者汉语拼音去定义一个类名 语义化类名
自定义类名 {属性: 值; ....} 定义
类样式的调用:
标签通过class属性去调用定义好的类样式
例如:
.test {color: red;}
<p class=”test”>文字</p>
1.6 ID选择器(了解)
#自定义id名称 {属性: 值; ....}
调用:
标签通过id属性调用id样式
#test {color: red;}
<p id=”test”></p>
ID选择器与类选择器的区别:
◆语法定义有区别 ( . #)
◆在id选择器中,一个标签只能调用一个id样式。
◆一个类样式可以被多个标签调用,但是一个id样式最好只能被一个标签调用(否则,不符合编程规则)
1.7 通配符选择器(了解)
语法:
* {属性: 值;...}
特点:
将页面中所有的标签都选中
1.8☞标签指定式选择器(交集选择器)
标签名.类名 {属性: 值;}
标签名id名 {属性: 值;}
总结:
标签指定式选择器符合 :既。。。。又。。。的关系
注意:在浏览器中交集的优先级要大于单个类或者id,但是,一个元素标签和一个类或者一个id比不上交集的优先级,大概是浏览器会在分别写的类(或id)和元素间选择一个,然后再和其他比较
1.9☞后代选择器
选择器 选择器 {属性: 值;}
总结:
◆后代选择器标签之间的结构关系必须是嵌套结构
◆后代选择器中只能选中所有的后代元素(直接子元素和间接子元素)
◆后代选择器中,选择器与选择器之间必须使用空格隔开
注意上图的li标签样式
1.10☞ 子代选择器
选择器>选择器 {属性: 值;}
总结:
◆子代选择器只能选中直接子元素
◆子代选择器不能选中父元素
◆子代选择器标签的结构必须是嵌套结构
1.11☞兄弟选择器
兄标签 + 弟标签 { 修饰弟标签 } 单个紧挨着的弟标签
兄标签 ~ 弟标签 {修饰后边所有兄弟标签)后边所有的弟标签
1.12☞ 并集选择器(多个选择器)
选择器,选择器 {属性: 值;}
注意:
◆首先并集选择器可以选中所有符合条件的标签
◆并集选择器与标签的结构无关
◆并集选择器一般在css样式初始化的时候会使用。
1.13 属性选择器
☞属性选择器是通过标签的属性选中标签
☞语法:
[]{属性:值;....}
1.14伪类
☞给链接添加样式:
-
正常链接 a:link (存在兼容性问题,直接用a即可)
-
鼠标滑过的链接 a:hover (hover 可以用于任何标签前面)
-
正在点击的链接 a:active
-
访问过的链接 a:visited(只能定义字体颜色)该选择器会让浏览器有缓存问题;通过历史记录判断该标签是否被访问过 (用途很少)
hover作用于自身的时候只能给亲父级或者亲祖父级添加,才能影响自己
-
获取焦点 :focus
-
获取第一个子标签 :first-child
选中的元素 ::selection
1.131☞ 结构伪类选择器
1. :first-child {属性: 值;} 选中父元素中的第一个子元素
2. :last-child {属性: 值;} 选中父元素中最后一个子元素
3. :nth-child(n) {属性: 值;} 选中父元素中第n个子元素
◆n 可以取一个正整数 (取值可以取到数字0)
◆n可以设置一个关键字 odd(奇数个数) | even(偶数个数)
◆n可以是一个表达式 an+b
a和b可以设置正数和负数
注意:不能使用 n-b 这样的结果是计算机不会报错,同时会忽视nth:child()
p:nth-child(-n + 2):指的是p标签的父级的前(小于等于2)个子元素 中 的p标签
4. :nth-last-child(n){属性: 值;}
选中倒数第n个子元素
5. :first-of-type
6. :last-of-type
7. :nth-of-type
1.132☞目标伪类选择器
注意:伪类选择器是通过:
:target {属性:值;....}
◆目标伪类选择器配合锚链接使用
◆当该标签被锚链接指向的时候,那么才会执行里面的css代码。
1.133☞否定伪类 :not(元素标签)
1.145伪元素选择器
-
:first-line {} 选中父容器中的第一行
-
:first-letter{} 选中首字母(文字)
-
:before
-
:after
::selection{} 设置鼠标选中标签时的样式
注意:
::selection {}只能设置与颜色相关的属性。
现在伪元素不支持ie6
当使用nth-child的时候并不会把伪元素计算在内
总结:
after和before
◆伪元素必须设置content属性
◆伪元素属于行内元素
◆伪元素中不能再创建伪元素
◆一般是将伪元素要依附于某一个标签
: 和::是一样的区别不大w3c文档中是:符号
◆一个标签可以同时调用多个类样式
✔一个标签只能调用一个id样式