CSS基础
1. 编写位置
使用CSS来修改元素的样式:
(1) 第一种方式(内联样式,行内样式):
-在标签内部通过style属性来设置元素的样式
<p style="color: green; font-size: 100px;">广州大学</p>
(px:像素)
(2) 第二种方式(内部样式表)
-将样式编写到head中的style标签里
-更加方便对样式进行复用
但只能对一个网页起作用,里边的样式不能跨页面进行复用
<style>
h1{
color: yellow;
font-size: 100px;
}
</style>
(3)第三种方式(外部样式表)最佳实践
-可以将CSS样式编写到一个外部的CSS文件中,然后通过link标签来引入外部的CSS文件
-可以在不同页面之间使用
-将样式编写到外部的CSS文件中,可以使用到浏览器的缓存机制,从而加快页面的加载速度
<link rel="stylesheet" href="./CSS/Style.css">
<h2>网络192</h2>
2. 基本语法
选择器 声明块
选择器:通过选择器可以选中页面中的指定元素
比如p作用就是选中页面中所有的p元素
声明块:通过声明块来指定要为元素设置的样式
声明块由一个一个的声明组成
声明是一个名值对结构:一个样式名对应一个样式值,名和值之间以:连接 , 以;结尾
3. 常用选择器
通配选择器
<style>
*{
font-size: 50px;
}
</style>
id选择器
作用:根据元素的id属性值选中一个元素
语法:#id属性值{}
<style>
#red{
color:green;
font-size:50px;
}
</style>
<p id="red">广州大学计算机科学与网络工程学院</p>
注:id只能是一个值,需多值用class解决
类选择器
作用:根据元素的class属性值选中一组元素
语法:.class属性值
<style>
.a1{
color:hotpink;
font-size:100px;
}
</style>
<p class="a1 a2">辜垂涛</p>
class可以重复使用,可以通过class属性来为元素分组,可以同时为一个元素指定多个class属性
元素选择器
作用:根据标签名来选中指定的元素
语法:标签名{}
<style>
#red{
color:green;
font-size:50px;
}
.a1{
color:hotpink;
font-size:100px;
}
div{
color:indianred;
font-size: 100px;
}
</style>
<div>谁最牛啊谁最棒</div>
复合选择器
1. 交集选择器
作用:选中同时符合多个条件的元素
语法:选择器1选择器2选择器3选择器n{}
**注意:**交集选择器如果有元素选择器,就必须使用元素选择器开头
<style>
div.a{
color:lawngreen;
font: size 100px;
}
.b.a{
color:red;
}
</style>
<p class="a b c">广州大学城</p>
<div class = "a">广东工业大学</div>
2. 并集选择器
作用:同时选择多个选择器对应的元素
语法:选择器1,选择器2,选择器3,选择器n{}
<style>
.b,div{
color:lightblue;
}
</style>
关系选择器
父元素:直接包含子元素的元素
子元素:直接被父元素包含的元素
祖先元素:直接或间接包含后代元素的元素叫作祖先元素(一个元素的父元素也是它的祖先元素
后代元素:直接或间接被祖先元素包含的元素叫做后代元素(子元素也是后代元素)
兄弟元素:拥有相同父元素的元素是兄弟元素
子元素选择器:
作用:选中指定父元素的指定子元素
语法:父元素>子元素
<style>
div.box>span{
color:red;
}
</style>
后代选择器:
作用:选中指定元素内的指定后代元素
语法:祖先 后代 (中间一个空格)
<style>
div span{
color:blue;
}
</style>
兄弟选择器:
选择下一个兄弟 语法:前一个+下一个 (只有紧挨着下一个)
选择下边所有的兄弟 语法:兄~弟
<div class="box">
<h1>容祖儿</h1>
<span>由这一分钟开始记起春风秋雨间</span>
<span>由这一分钟开始记起春风秋雨间</span>
<span>由这一分钟开始记起春风秋雨间</span> </div>
h1+span{
color:blue;
}/*只变化一句*/
h1~span{
color:brown;
}/*变化全部*/
属性选择器
[属性名] 选择含有指定属性的元素
[属性名=属性值] 选择含有指定属性和属性值的元素
[属性名^=属性值] 选择属性值以指定值开头的元素
[属性名$=属性值] 选择属性值以指定值结尾的元素
[属性名*=属性值] 选择属性值中含有某值的元素
<style>
p[title]{
color: blue;
font-size:50px;
}
p[title=gct]
p[title^=g]
p[title$=t]
p[title*=c]
</style>
<body>
<p title="gct">广州大学</p>
</body>
title效果
伪类选择器
(不存在的类,特殊的类)
-伪类用来描述一个元素的特殊状态
如:第一个子元素、被点击的元素、鼠标移入的元素…
-伪类一般情况下都是使用" : "开头
: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() 否定伪类
- 将符合条件的元素从选择器中去除
<style>
ul>li:first-child{
color:red;
}
ul>li:nth-child(4){
color:blue;
}
ul>li:not(:nth-of-type(4))
{
color:green;
}
</style>
<body>
<ul>
<li>广州大学</li>
<li>广州大学</li>
<li>广州大学</li>
<li>广州大学</li>
<li>广州大学</li>
</ul>
</body>
4. 超链接的伪类
:link 用来表示没访问过的链接
:vistited 用来表示访问过的链接(由于隐私的原因,所以visited这个伪类只能修改链接的颜色)
:hover 用来表示鼠标移入的状态
:active 用来表示鼠标点击
<style>
a:link{
color:green;
}
a:visited{
color:grey;
}
a:hover{
color:hotpink;
}
a:active{
color:yellow;
}
</style>
5. 伪元素
表示页面中一些特殊的并不真实的存在的元素(特殊的位置)
伪元素使用 :: 开头
::first-letter 表示第一个字母
::first-line 表示第一行
::selection 表示选中的内容
::before 元素的开始
::after 元素的最后
- before 和 after 必须结合content属性来使用
<style>
p::first-letter{
font-size:50px;
}
p::first-line{
background-color: teal;
}
p::selection{
background-color: red;
}
div::before{
content:'辜垂涛';/*表示添加内容*/
color:violet;
}
div::after{
content:'网络192';
color:red;
}
</style>
<body>
<div>helloworld</div>
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Commodi eaque dolorum rerum? Quo, omnis dignissimos suscipit ipsa et blanditiis voluptate, quas praesentium, quia neque temporibus. Quos odio accusantium animi non!</p>
</body>
before和after 常用
6. 继承
样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上。
继承是发生在祖先后代之间的。
继承的设计是为了方便开发,利用基础我们可以将一些通用的样式统一设置到共同的祖先元素上,这样就只需要设置一次。
注意:并不是所有的样式都会被继承,比如背景相关的,布局相关等的这些样式都不会被继承。
查看是否继承的方法:
样式表
每一个样式都有一个表格:
bakcground-color
注:
嵌套规则:
1、块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
2、块级元素不能放在p里面。
3、有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
4、li内可以包含div
<style>
body{
font-size: 50px;
}
p{
color:rebeccapurple;
background-color: red;
}
</style>
<body>
<div>
<span>我是div中的span</span>
</div>
<p>
我是一个p元素
<span>我是p元素中的span</span>
</p>
</body>
7.选择器的权重
样式的冲突:当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突。
发生样式冲突时,应用哪个样式由选择器的权重(优先级)决定。
选择器的权重:
内联样式 1,0,0,0
id选择器 0,1,0,0
类和伪类选择器 0,0,1,0
元素选择器 0,0,0,1
通配选择器 0,0,0,0(通配选择器*)
继承的样式 没有优先级
(比较优先级时,需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示【分组选择器(并集选择器)是单独计算的】)
选择器的累加不会超过其最大的数量级,类选择器在高也不会超过id选择器
样式没有显示时优先考虑优先级
<style>
div{
color:yellow;
}
.red{
color:red;
}
#box1{
color:violet;
}
</style>
<body>
<div id="box1" class="red" style="color: green;">我是一个div</div>
</body>
/*结果是内联样式设置的颜色(不推荐内联样式,优先级太高无法覆盖掉)*/
如果优先级计算后相同,此时则优先使用靠下的样式
<style>
.red{
color:red;
background-color: green;
}
.red{
background-color: blue;
}
</style>
通配选择器和继承的样式对比
<style>
*{
font-size: 50px;
}
div{
font-size:100px;
}
</style>
</head>
<body>
<div id="box1" class="red">我是一个div
<span>我是div中的span</span>
</div>
</body>
可以在某一个样式后边添加 !important,则此时样式会获得最高的优先级,甚至超过内联样式。
注意:在开发中一定要慎用!难修改
<style>
.red{
color:red;
background-color: green;
}
.red{
background-color: blue !important;
}
</style>
8.单位
长度单位:
像素:(1px=0.04cm,1cm=25px)
-屏蔽(显示器)实际上是由一个一个的小点构成
-不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰
-所以同样的200px在不同的设备下显示效果不一样
百分比:
-也可以将属性值设置为相对于其父元素属性的百分比
-设置百分比可以使子元素跟随父元素的改变而改变
<style>
.box1{
width:200px;
height: 200px;
background-color: orange;
}
.box2{
width: 50%;
height: 50%;
background-color: rebeccapurple;
}
</style>
<body>
<div class="box1">
<div class="box2"></div>
</div>
</body>
em
-em是相对于元素的字体大小来计算的
-1em=1font-size
-em会根据字体大小的改变而改变
<style>
.box3{
font-size: 20px;
width: 10em;
height: 10em;
background-color: royalblue;
}
</style>
(10*20=200px)
rem
-rem是相对于根元素(html的像素)的字体大小来计算
根元素修改:
<style>
html{
font-size: 10px;
}
</style>
9.颜色
颜色单位:
在CSS中可以直接使用颜色来设置各种颜色:比如:red、orange…(不方便)
RGB值:
- RGB通过三种颜色的不同浓度来调配出不同的颜色
- R red,G green,B blue
- 每一种颜色的范围在 0-255 (0% - 100%)之间
- 语法:rgb(红色,绿色,蓝色)
<style>
.box1{
width: 200px;
height: 200px;
background-color: rgb(255, 0, 0);
background-color: rgb(0, 255, 0);
background-color: rgb(0, 0, 255);
background-color: rgb(255, 255, 255);
background-color: rgb(0, 0, 0);
}
</style>
RGBA:
- 就是在rgb的基础上增加一个a表示不透明度
- 1表示不透明,0表示完全透明,.5半透明
十六进制的RGB值:
-
语法:#红色绿色蓝色
-
颜色浓度通过00-ff
-
如果颜色两位两位重复可以进行简写
#aabbcc --> #abc
<style>
.box1{
width: 200px;
height: 200px;
background-color: #00ff00;
background-color: #ff0000;
background-color: #f00;
}
</style>
HSL值、HSLA值:
H 色相:0 - 360(一个环360°)
S 饱和度(颜色的浓度 ):0% - 100%
L 亮度(颜色的亮度):0%-100%
A 不透明度
55);
background-color: rgb(0, 0, 0);
}
[外链图片转存中...(img-g37LmtyO-1620132762660)]
### RGBA:
- 就是在rgb的基础上增加一个a表示不透明度
- 1表示不透明,0表示完全透明,.5半透明
[外链图片转存中...(img-D67RRWQd-1620132762661)]
### 十六进制的RGB值:
- 语法:#红色绿色蓝色
- 颜色浓度通过00-ff
- 如果颜色两位两位重复可以进行简写
#aabbcc --> #abc
```html
<style>
.box1{
width: 200px;
height: 200px;
background-color: #00ff00;
background-color: #ff0000;
background-color: #f00;
}
</style>
[外链图片转存中…(img-mdAikM9a-1620132762662)]
HSL值、HSLA值:
H 色相:0 - 360(一个环360°)
S 饱和度(颜色的浓度 ):0% - 100%
L 亮度(颜色的亮度):0%-100%
A 不透明度
[外链图片转存中…(img-eMcEuyxB-1620132762662)]