Unit Two: HTML&CSS(08)—CSS(7)背景
1. 背景<background>
-
背景颜色
<background-color>
-
背景图片
<background-image>
- 如果背景图片小于元素,元素复制填满。
- 如果背景图片大于元素,元素无法完全显示。
- 如果背景图片和元素一样大,则会正常显示。
-
背景重复方式
<background-repeat>
:repeat
默认值:repeat-x
沿x轴方向重复。:repeat-y
沿y轴方向重复。:no-repeat
背景图片不重复。
-
背景图片位置
<background-position>
- 方位词
- 通过
:top/right/bottom/left/center
几个方位来设置背景位置。 - 使用方位词必须同时指定两个值,如果只写一个,第二个默认为
:center
- 通过
- 偏移量
- 水平方向的偏移量(x轴) - 垂直方向的偏移量(y轴)
- 方位词
-
背景范围
<background-clip>
:boder-box
:默认值,背景会出现在边框。:padding-box
:背景不会出现在边框,:content-box
:背景只出现在内容区。
-
背景图片原点
<background-origin>
:boder-box
:默认值,背景图片会出现在边框。:padding-box
:背景图片不会出现在边框,
-
:content-box
:背景图片只出现在内容区。 -
背景图片大小
<background-size>
- 可选值:
- 第一个值表示宽度
- 第二个值表示高度
- 如果只写一个值,则第二个值默认是
auto
:100%
元素铺满一边。:cover
图片比例不变,将元素缩放铺满。:contain
图片比例不变,图片在元素中完整显示。
- 可选值:
-
背景图片跟随移动
<background-attachment>
scroll
默认值,背景图片会跟随元素移动。fixed
背景会固定在页面中,不会随元素移动。
-
简写属性
<background>
- 大部分属性没有顺序要求。
<background-size>
必须写在<background-position>
的后边,并用/
隔开。<background:background-position/background-size>
<background-origin>
必须在<background-clip>
前边。
<!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: 10px solid rgba(207, 22, 22, 0.5);
padding: 50px;
width: 300px;
height: 500px;
/* background-color: tomato;
background-image:url(./大黄猫/IMG_20200128_100008.jpg);
background-repeat:no-repeat;
background-origin:content-box ;
background-clip: padding-box;
background-size:contain; */
background: tan url(./大黄猫/IMG_20200128_100008.jpg) content-box padding-box center/100% no-repeat;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
2. 背景练习1–PS渐变背景
<!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{
height: 32px;
width: 990px;
/* ps图像裁剪背景,并保存为web所用格式,png */
background-image: url(./大黄猫/verycd-bg.png);
background-repeat: repeat-x;
margin:0px auto;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
3. 背景练习2–超链接按钮
<!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>
.bg{
width: 300px;
height: 100px;
margin: 0px auto;
background-image: url(./大黄猫/按钮/link.png);
background-size: 100% 100%;
}
.bg:hover{
width: 300px;
height: 100px;
margin: 0px auto;
background-image: url(./大黄猫/按钮/hover.png);
}
.bg:active{
background-image: url(./大黄猫/按钮/active.png);
}
</style>
</head>
<body>
<a href="https://www.baidu.com"><div class="bg"></div></a>
</body>
</html>
- 问题
- 图片属于网页中的外部资源,外部资源都需要浏览器单独发送请求加载,浏览器加载外部资源时是按需加载,用则加载,不用就不加载。
- 上边练习,link图片会首先加载,而hover和active会在指定状态触发时才会加载。
- 解决方案
- (见4.雪碧图)可以间小图片统一保存到一个大图片中,这样图片会同时加载到网页中,然后通过调整
background-position
进行平移,然后避免闪烁问题。 - 这个技术在网页中应用十分广泛。
- (见4.雪碧图)可以间小图片统一保存到一个大图片中,这样图片会同时加载到网页中,然后通过调整
4.雪碧图(!important)
CSS-sprite将网页图标全部放置在一个矢量图上,通过调整background-position
位置,来设置图片位置,从而达到图片变换效果。
- 使用步骤:
- 先确定要是用的图标。
- 测量图标的大小。
- 根据测量结果创建一个元素。
- 将雪碧图设置为元素背景图片。
<background-image:url()>
- 设置偏移量,以显示正确的图片。
<background-position>
- 好处:一次性将多个图片加载进页面,降低请求次数,加快访问速度,提升用户体验。
- 劣势:只适用于背景图片。
<!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>
.bg {
width: 93px;
height: 29px;
margin: 0px auto;
background-image: url(./大黄猫/按钮/btn.png);
}
.bg:hover {
/* width: 92px;
height: 27px;
margin: 0px auto; */
background-image: url(./大黄猫/按钮/btn.png);
background-position: -93px 0px;
}
.bg:active {
background-image: url(./大黄猫/按钮/btn.png);
background-position: -186px 0px;
}
</style>
</head>
<body>
<a href="https://www.baidu.com">
<div class="bg"></div>
</a>
</body>
</html>
5. 渐变<background-image:linear/radial-gradient()>
-
线性渐变
<background-image:linear-gradient()>
-
颜色沿着一条直线发生变化。
-
线性渐变是图片效果,需通过
<background-image:linear-gradient()>
来设置。 -
方向:线性渐变开头,可以指定渐变方向:
-
方向
to left
to right
to bottom
to top
-
角度
xxx deg
-
圈
turn
-
-
多个颜色
- 多个颜色默认情况下,平均分配。
- 可手动指定颜色分别情况,数值代表颜色开始位置。
- 可设置具体数值:
:10px
- 百分比:
:red 20%, yellow 40%
- 可设置具体数值:
-
<background-image:reapting-linear-gradient()>
平铺线性渐变
<!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> .bg{ width: 300px; height: 300px; border-radius: 150px; background-image: linear-gradient(0.3turn, #92fe9d 40%,#00c9ff 80%); } .bg2{ width: 300px; height: 300px; border-radius: 150px; background-image: linear-gradient(to top, #3f51b1 0%, #5a55ae 13%, #7b5fac 25%, #8f6aae 38%, #a86aa4 50%, #cc6b8e 62%, #f18271 75%, #f3a469 87%, #f7c978 100%); } .bg3{ width: 300px; height: 300px; border-radius: 150px; background-image: repeating-linear-gradient(0.3turn, #92fe9d 20%,#00c9ff 40%, #a86aa4 50%); } </style> </head> <body> <div class="bg"></div> <div class="bg2"></div> <div class="bg3"></div> </body> </html>
-
-
径向渐变(放射渐变)
<background-image:radial-gradient()>
默认情况下,径向渐变形状根据元素的形状来计算。
-
正方形-》圆形
-
长方形-》椭圆形
- 指定径向渐变大小:
circle
正圆ellipse
椭圆close-side
到最近的边farthest-side
到最远的边close-corner
近角farthest-corner
圆角- 数值
- 指定径向渐变位置:
- 数值
:at 100px 100px
- 方位
:at top left
- 方位
<!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>
.bg {
width: 300px;
height: 300px;
/* border-radius: 150px; */
background-image: radial-gradient(ellipse at 10px 10px, #92fe9d, #00c9ff);
}
.bg2 {
width: 300px;
height: 300px;
border-radius: 150px;
background-image: radial-gradient(farthest-side at 10px 10px, #3f51b1 0%, #5a55ae 13%, #7b5fac 25%, #8f6aae 38%, #a86aa4 50%, #cc6b8e 62%, #f18271 75%, #f3a469 87%, #f7c978 100%);
}
.bg3 {
width: 300px;
height: 300px;
/* border-radius: 150px; */
background-image: repeating-radial-gradient(farthest-corner at 50px 50px, #92fe9d 10%, #00c9ff 20%, #a86aa4 30%);
}
</style>
</head>
<body>
<div class="bg"></div>
<div class="bg2"></div>
<div class="bg3"></div>
</body>
</html>
6. 电影卡片练习
<!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="/Unit 2 CSS/205 定位/reset style/normalize.css">
<link rel="stylesheet"
href="/Unit 2 CSS/206 字体/fontawesome-free-5.14.0-web/fontawesome-free-5.14.0-web/css/all.css">
<style>
.body {
font-family: Arial, Helvetica, sans-serif;
}
.card {
width: 240px;
/* height: 345px; */
margin: 10px auto;
border: solid 1px #dad9d9;
box-shadow: 1px 1px 1px #dad9d9;
/* box-shadow: -1px 1px 1px #dad9d9; */
border-radius: 3px;
}
img {
width: 100%;
/* 将图片和边框重叠。 */
vertical-align: bottom;
/* border: 1px salmon solid; */
}
.film {
/* width: 100%; */
height: 108px;
margin: 14px 18px;
color: #acaaaa;
font-size: 13px;
}
.animation_film {
font-size: 18px;
margin-left: -2px;
margin-bottom: 15px;
color: #717171;
}
i {
margin-right: 7px;
}
.animations {
margin-bottom: 14px;
}
.animations_text {
display: inline-block;
}
.lorem {
font-size: 12px;
line-height: 18px;
}
.rate {
margin-top: 25px;
border-top: 1px solid #e9e9e9;
}
.icon {
/* width: 190px; */
height: 21px;
/* margin-left: 17px; */
margin-right: 34px;
margin-top: 16px;
margin-bottom: 14px;
padding-left: 24px;
color: #dddddd;
}
.star {
float: left;
font-size: 16px;
}
.facebook {
float: right;
font-size: 24px;
position: relative;
top: -4 px;
}
</style>
</head>
<body>
<div class="card">
<div class="pic"><img src="./大黄猫/elsa.png" alt="" class="elsa"></div>
<div class="film">
<div class="animation_film">Animation films</div>
<div class="animations">
<i class="fas fa-map-marker-alt"></i>
<div class="animations_text">Animations</div>
</div>
<div class="lorem">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Odit eum cumque quo! </div>
</div>
<div class="rate">
<ul class="icon">
<li class="star fas fa-star" style="color: #b9cb41;"></li>
<li class="star fas fa-star" style="color: #b9cb41;"></li>
<li class="star fas fa-star"></li>
<li class="star fas fa-star"></li>
<li class="facebook fab fa-facebook"></li>
</ul>
</div>
</div>
</body>
</html>