目录
正文开始
1. 定位
作用:灵活的改变盒子在网页中的位置
实现:
- 定位模式:position
- 边偏移:设置盒子的位置
- left(左)
- right(右)
- top(上)
- bottom(下)
关于属性名position的属性值:
属性值 | 说明 | 是否脱标 | 显示模式 | 参照物 |
---|---|---|---|---|
relative | 相对定位 | 否 | 保持原有显示模式 | 自己原来位置 |
absolute | 绝对定位 | 是 | 行内块特点 | 离自己最近的已定位的祖先元素,若没有,则为浏览器可视区 |
fixed | 固定定位 | 是 | 行内块特点 | 浏览器窗口 |
1.1 相对定位
作用:以自身位置为原点进行位置调整。
相对位置特点:
- 是以自身的位置为参照来改变位置
- 不脱标,原本的位置仍然会占用
- 不改变原本标签的显示模式
相对定位模式设置:position:relative
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.div1 {
width: 200px;
height: 200px;
background-color: red;
}
.div2 {
position: relative;
top: 20px;
left: 20px;
width: 200px;
height: 200px;
background-color: blue;
}
.div3 {
width: 200px;
height: 200px;
background-color: green;
}
</style>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
</body>
</html>
页面效果:
1.2 绝对定位
使用场景:子级使用绝对定位,父级使用相对定位。
绝对特点特点:
- 是以父级的位置为参照来改变位置
- 脱标,原本位置不再被占用
- 参照物:先找最近的已定位的祖先元素,若所有祖先元素都没有定位,则参照浏览器可视区改变位置
- 绝对定位的盒子显示模式会改变为行内块的模式
绝对定位模式设置:position:absolute
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.div1 {
position: relative;
margin: 100px auto;
width: 200px;
height: 200px;
background-color: blue;
}
.span1 {
position: absolute;
top: 0px;
right: 0px;
background-color: green;
}
</style>
</head>
<body>
<div class="div1">
<span class="span1">精品展示</span>
</div>
</body>
</html>
页面效果:
1.2.1 定位居中
实现步骤:
- 绝对定位
- 水平、垂直边偏移为50%
- 子集向左、上移动自身尺寸的一半:
- 可以使用margin属性实现
- 也可以使用transform:translate(-50%,-50%)来实现
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.div1 {
position: relative;
margin: 50px 20px;
width: 200px;
height: 200px;
background-color: blue;
}
.div2 {
position: absolute;
width: 100px;
height: 100px;
top: 50%;
left: 50%;
/*使用margin调整*/
margin-left: -50px;
margin-top: -50px;
background-color: green;
}
.div3 {
position: relative;
margin: 50px 20px;
width: 200px;
height: 200px;
background-color: blue;
}
.div4 {
position: absolute;
width: 100px;
height: 100px;
top: 50%;
left: 50%;
/*使用transform调整*/
transform: translate(-50%,-50%);
background-color: green;
}
</style>
</head>
<body>
<div class="div1">
<div class="div2"></div>
</div>
<div class="div3">
<div class="div4"></div>
</div>
</body>
</html>
页面效果:
1.3 固定定位
使用场景:元素位置在网页滚动时不会改变
固定定位特点:
- 脱标,不再占用原本位置
- 是以浏览器窗口为参照来改变位置
- 固定定位的标签的显示模式会变为行内块模式
固定定位模式设置:position:fixed
例如:
1.4 堆叠层级
当使用定位对多个盒子修饰时,盒子可能会相互覆盖,所以盒子的显示顺序是需要调整的。顺序的默认效果是:按照标签书写顺序,后来者居上。下面我们来学习如何调整:
属性名:z-index
属性值:属性值为整数,默认为0,取值越大,显示顺序越靠上
作用:设置定位元素的层级顺序,改变定位元素的显示顺序
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
position: absolute;
}
.div1 {
width: 100px;
height: 100px;
background-color: green;
z-index: 1;
}
.div2 {
width: 100px;
height: 100px;
top: 70px;
left: 70px;
background-color: red;
}
</style>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
</body>
</html>
页面效果:
2. CSS 精灵
CSS 精灵,又叫 CSS Sprites,是一种网页应用处理方式。把网页中一些背景图片整合到一张图片文件中,再 background-position 精确的定位出背景图片的位置
优点:减少服务器被请求次数,减轻服务器的压力,提高页面加载速度
实现步骤:
- 创建盒子,且保持盒子尺寸与小图尺寸相同
- 设置盒子背景图为精灵图
- 添加 background-position 属性,改变背景图位置,调整图片位置到正好能使盒子框住想使用的小图
例如,我们想要显示一张精灵图中的某个小图,小图宽为112px,高为110px;并且小图左上角在精灵图中的坐标为(256px,276px),则可书写为:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
width: 112px;
height: 110px;
background-color: pink;
background-image: url("#");
background-position: -256px -276px;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
3. 字体图标
字体图标:展示的是图标,本质是字体
比如某网站上的字体图标:
作用:在网页中添加简单的,颜色单一的小图标
优点:
- 灵活性:可灵活地修改样式
- 轻量级:体积小、渲染快,降低服务器请求次数
- 兼容性:几乎兼容所有主流浏览器
- 使用方便:先下载再使用
3.1 字体图标 - 下载字体
可以在iconfont 图标库下载字体图标
下载步骤:登录 -> 素材库 -> 官方图标库 -> 进入图标库 -> 选择图标并加入购物车 -> 进入购物车并添加至项目 -> 确定 -> 下载至本地
下载并解压后的文件:
3.2 字体图标 - 使用字体
下载完成后,就可以使用字体图标了
使用步骤:
- 引入字体样式表(iconfont.css)
- 定义标签的类名为使用字体图标
- iconfont:字体图标基本样式(字体名,字体大小等)
- icon-xxx:图标对应的类名
例如:
- 引入字体样式表:
<link rel="stylesheet" href="./iconfont/iconfont.css">
-
在说明网页中找到字体图标对应的类名:
-
定义标签的类名为iconfont icon-xxx
<div class="iconfont icon-notification"></div>
- 完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./iconfont/iconfont.css">
<style>
</style>
</head>
<body>
<div class="iconfont icon-notification"></div>
</body>
</html>
- 页面效果:
字体图标设置好后就可以进行设置,设置方式同字体相同。
需要注意的是,设置字体图标时,应选择优先级大于或等于类选择器的选择器,因为在我们引用的 CSS 文件中使用了类选择器设置字体图标,所以如果我们想设置,优先级应大于或等于类选择器
4. 修饰属性
4.1 垂直对齐方式 - vertical-align
属性名:vertical-align
属性值 | 效果 |
---|---|
baseline | 基线对齐(默认) |
top | 顶部对齐 |
middle | 居中对齐 |
bottom | 底部对齐 |
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
border: 1px solid black;
}
img:nth-child(1) {
/* 居中对齐 */
vertical-align: middle;
}
img:nth-child(1) {
/* 顶部对齐 */
vertical-align: top;
}
</style>
</head>
<body>
<div>
<img src="C:\Users\w3161\Pictures\Screenshots\屏幕截图 2024-05-10 152656.png" alt="" width="150px">
hhhhhhhhhhhhhhhhhhhhhhhh
</div>
<br><br><br>
<div>
<img src="C:\Users\w3161\Pictures\Screenshots\屏幕截图 2024-05-10 152656.png" alt="" width="150px">
hhhhhhhhhhhhhhhhhhhhhhhh
</div>
</body>
</html>
页面效果:
图片若不做处理会被当作文字处理,也就是会基线对齐,那么图片与盒子之间就会有小空隙,可以通过改变垂直对齐方向来去除掉,也可以通过设置display: block;来去除。
4.2 过渡 - transition
作用:可以为一个元素在不同状态之间切换的时候添加过渡效果。
属性名:transition
属性值:过渡的属性 花费时间(s)
提示:
- 过渡的属性可以是具体的 CSS 属性
- 也可以为 all(两个状态属性值不同的所有属性,都产生过渡效果)
- transition 设置给元素本身
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
img {
width: 200px;
transition: all 1s;
}
img:hover {
width: 500px;
}
</style>
</head>
<body>
<img src="C:\Users\w3161\Pictures\Screenshots\屏幕截图 2024-05-10 152656.png" alt="">
</body>
</html>
上述代码实现的功能:当鼠标悬停在图片上时,图片会在1s的时间内逐渐变大到指定大小。
4.3 透明度 - opacity
作用:设置整个元素的透明度(包含背景和內容)
属性名:opacity
属性值:0 - 1
- 0:完全透明(元素不可见)
- 1:不透明
- 0 - 1:半透明,值越小越透明
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
width: 500px;
height: 500px;
background-color: pink;
opacity: 0.6;
}
img {
width: 300px;
}
</style>
</head>
<body>
<div>
<img src="C:\Users\w3161\Pictures\Screenshots\屏幕截图 2024-05-10 152656.png" alt="">
</div>
</body>
</html>
页面效果:
4.4 光标类型 - cursor
作用:设置鼠标悬停在元素上时指针显示样式
属性名:cursor
属性值 | 效果 |
---|---|
default | 默认值,通常为箭头 |
pointer | 小手效果,提示用户可以点击 |
text | 工字形,提示用户可以选择文字 |
move | 十字光标,提示用户可以移动 |
```<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>title</title>
<style>
div {
width: 150px;
height: 150px;
background-color: pink;
/* 工字型 */
cursor: text;
/* 小手型 */
cursor:pointer;
/* 十字型 */
cursor: move;
}
</style>
</head>
<body>
<div></div>
</body>
</html>