这是我参与「第四届青训营 」笔记创作活动的的第1天
1、使用css修改元素样式
-
方式一:内联样式,行内样式
在标签内部通过style属性来设置元素的样式
问题:使用内联样式,样式只能对一个标签生效 并且当样式发生变化时,我们需要一个一个修改 维护不方便
开发时一定不要使用内联样式
<p style = "color:red;font-size:60px;"> 少小离家老大回 </p> -
方式二:将样式编写到head中的style标签中 然后通过css选择器来选中元素并为其设置各种样式
可以同时给多个标签设置样式 并且修改时只用修改一次 方便进行复用
问题:我们的内部样式只能对一个网页起作用,它里面的样式不能跨页面使用
<head> <meta charset="utf-8"> <title></title> <style> p{ color: aqua; } </style> </head> <body> <p>nihenniu</p> </body> -
方式三:外部样式
可以将css样式编写到一个外部css文件中 通过link标签来引入外部的css文件
外部样式表需要通过link标签进行引用,意味着样式可以在不同页面之间进行复用
开发中常用
将样式编写到外部的css文件中,可以使用到浏览器的缓存机制,从而加快网页的加载速度,提高用户体验
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="./demo1.css">
</head>
2、常用选择器
-
元素选择器
作用:根据标签名来选中指定元素
语法:标签名{ }
例子:p{ } h1{ } div{ }
-
id选择器
作用:根据元素的id属性值选中一个元素
语法:#id属性值{ }
例子:#box{ }
虽然id选择器在css中可以设置多个一样的id给他们相同的样式,但是js中操作元素时id必须唯一 所以id一定不能重复
-
类选择器
作用:根据元素的class属性值选中一组元素
语法:.class属性值{ }
例子:.blue{ }
一个元素可以设置多个class
-
通配选择器
作用:选择页面中所有元素
语法:*{ }
3、复合选择器
-
交集选择器
作用:选中同时符合多个条件的元素
语法:选择器1选择器2选择器3选择器n{ }
注意:交集选择器中如果有元素选择器,必须要使用元素选择器开头
给所有div且类名为class1的元素添加样式
div.class1{ font-size:30px; } -
并集选择器(分组选择器)
作用:同时选择多个选择器对应的元素
语法:选择器1,选择器2,选择器3,选择器n{ }
h1,span{ color:green; }
4、伪类选择器
伪类(不存在的类,特殊的类)
伪类用来描述一个元素的特殊状态 比如:第一个子元素、被点击的元素、鼠标移入的元素等
伪类一般情况下都是使用 :开头
-
:not()否定伪类 将符合条件的元素从选择器中去除
-
:first-child 第一个子元素
-
:last-child 最后一个子元素
-
:nth-child(n) 选中第n个子元素 特殊值 写n的时候全选 2n/even表示选中偶数位的元素 2n+1/odd表示选中奇数位的元素
-
以上这些伪类都是根据所有子元素进行排序的 如果在这些li标签前加入一个span标签 那么第一个元素不是li 则此样式不能在任何一个元素上生效
-
:first-of-type
-
:last-of-type
-
:nth-of-type(n)
这几个伪类的功能和上述的类似,不同点在于他们是在同类元素中进行排序
<head> <meta charset="utf-8"> <title></title> <style> <!--动态的将ul里的第一个li设置为红色--> ul>li:first-child { color: aqua; } </style> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </body>-
内联样式 1000
-
id选择器 100
-
类和伪类选择器 10
-
元素选择器 1
-
通配选择器 0
-
继承的样式 没有优先级
比较优先级时,需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示
注:分组选择器是单独计算的 选择器的累加不会超过其最大的数量级 类选择器再高也不会超过id选择器
如果优先级计算后相同,此时则优先使用靠下的样式
---可以在某个样式后面添加 !important 则此时该样式会获取到最高的优先级,甚至超过内联样式 --
注意:开发中,这个玩意慎用
div{ background-color:red !important; }
选择器权重:
发生样式冲突时,应用哪个样式由选择器的优先级决定
样式冲突:当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突
5、选择器的权重
比如背景相关、布局相关等这些样式都不会被继承
注意,并不是所有样式都会被继承
继承的设计是为了方便开发的,利用继承可以将一些通用的样式统一设置到共同的祖先元素上,这样只需要设置一次即可让所有元素都具有该样式
样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上
6、继承
-
::first-letter 表示第一个字母
-
::first-line 表示第一行
-
::selection 表示选中的内容
-
::before 元素的开始
-
::after 元素的结束 默认情况下after伪元素为行内元素
before和after属性必须结合content属性使用 凭空添加内容 这两个在开发中比较常用
伪元素使用 ::开头
伪元素表示页面中一些特殊的并不真实存在的元素(特殊的位置)
7、伪元素选择器
-
:link 用来表示没访问过的链接(正常的链接)
-
:visited 用来表示访问过的链接
由于隐私的原因,所以visited伪类只能修改链接的颜色
以上两个伪类选择器只有a元素可以使用
-
:hover 用来表示鼠标移入状态 其他元素也可以使用
-
:active 用来表示鼠标点击 所有元素都可以使用
8、a元素的伪类
:link 用来表示没访问过的链接(正常的链接)
-
-
:visited 用来表示访问过的链接
由于隐私的原因,所以visited伪类只能修改链接的颜色
以上两个伪类选择器只有a元素可以使用
-
:hover 用来表示鼠标移入状态 其他元素也可以使用
-
:active 用来表示鼠标点击 所有元素都可以使用
9、伪元素选择器
伪元素表示页面中一些特殊的并不真实存在的元素(特殊的位置)
伪元素使用 ::开头
-
::first-letter 表示第一个字母
-
::first-line 表示第一行
-
::selection 表示选中的内容
-
::before 元素的开始
-
::after 元素的结束 默认情况下after伪元素为行内元素
before和after属性必须结合content属性使用 凭空添加内容 这两个在开发中比较常用