使用CSS来修改元素的样式
第一种方式(内联样式/行内样式):
在标签内部通过style属性来设置元素的样式
第二种方式(内部样式表):
将样式编写到head中的style标签里
第三种方式(外部样式表):
将CSS样式写到一个外部CSS文件中通过link标签来引入
最大的优点在于可以使用到浏览器的缓存机制,从而加快网页的加载速度,提高用户体验
CSS基本语法:
1、选择器:通过选择器可以选中页面中的指定元素
元素选择器:根据标签名来选中指定的元素,标签名{}
id选择器:根据元素的id属性值来选中一个元素,#id属性值{}
类选择器:根据元素的class属性值选中一组元素,.class属性值{}
通配选择器:选中页面中所有元素,*{}
2、声明块:通过声明块来指定要为元素设置的样式
交集选择器:选中同时符合多个条件的元素,选择器1选择器2...选择器n{}
注意点:交集选择器如果有元素选择器,必须使用元素选择器开头
并集选择器:同时选择多个选择器对应的元素,选择器1,选择器2,...,选择器n{}
子元素选择器:选中指定父元素的指定子元素,父元素 > 子元素
后代元素选择器:选中指定元素内的指定后代元素,祖先 后代
选择下一个兄弟,前一个 + 下一个
选择下边所有的兄弟,兄 ~ 弟
属性选择器:选择含有指定属性的元素,[属性名]
选择含有指定属性和属性值的元素,[属性名=属性值]
选择属性值以指定值开头的元素,[属性名^=属性值]
选择属性值以指定值结尾的元素,[属性名$=属性值]
选择属性值中含有属性值的元素,[属性名*=属性值]
伪类(不存在的类,特殊的类)
伪类用来描述一个元素的特殊状态,例如第一个子元素、被点击的元素
伪类一般都是使用:开头
:first-child 第一个子元素
:last-child 最后一个子元素
:nth-child() 选中第n个子元素
特殊值:n 第n个 n的范围是0到正无穷
2n 或 even 表示选中偶数位的元素
2n+1 或 odd 表示选中奇数位的元素
以上这些伪类都是根据所有的子元素进行排序
:first-of-type
:last-of-type
:nth-of-type()
这几个伪类的功能和上述相似,不同点是它们在同种类型元素中进行排序
:not() 否定伪类:将符合条件的元素从选择器中去除
<a>标签的伪类
:link(a标签独有) 表示没访问过的链接(正常的链接)
:visited(a标签独有) 表示已经访问过的链接,由于隐私的原因,visited只能改变链接的颜色
:hover(所有标签均适用) 表示鼠标移入的状态
:active(所有标签均适用) 表示鼠标点击的时候
伪元素(页面中一些特殊的并不真实存在的元素,特殊的位置)
伪元素使用::开头
::first-letter 表示第一个字母
::first-line 表示第一行
::selection 表示选中的内容
::before 元素的开始
::after 元素的最后
before和after必须结合content属性来使用
样式的冲突
通过不同的选择器选择同一个元素,并且为相同的样式设置不同的值时就发生了样式的冲突
当发生样式冲突时应用哪个样式由选择器的权重(优先级)决定
选择器的权重
内联样式 1,0,0,0
id选择器 0,1,0,0
类和伪类选择器 0,0,1,0
元素选择器 0,0,0,1
通配选择器 0,0,0,0
继承的样式 没有优先级
比较优先级时,需要将所有选择器的优先级相加计算,最后优先级越高,则优先显示(分组选择器是分别计算的)
选择器的累加不会超过其最大的数量级,类选择器再高也不会超过id选择器
如果优先级计算后相同,则使用靠下的样式
可以在某一个样式的后边添加!important,此时会具有最高的优先级,甚至超过内联样式
注意,在开发中慎用!