CSS——背景样式以及雪碧图、渐变

目录

background-image

background-repeat

background-position:参数1参数2;

[background-size:参数1 参数2 ;](#background-size:参数1 参数2 ;)

background-clip

background-origin

分页点

background

雪碧图

图标字体

线性渐变

1:linear-gradient(方位,颜色1,颜色2)

[2: repeating-linear-gradient()](#2: repeating-linear-gradient())

放射渐变


在之前的学习中我们已经知道如何设置背景颜色即------background-color:;

现在我们有这样的需求:将一张图片设置为盒子的背景。

background-image

此时分两种情况:1、背景图片比盒子大

2、背景图片比盒子小

情况1、如果图片大于盒子,默认显示图片的左上角

background-image: url(./img/大图2.webp);

情况2、如果图片小于盒子,默认横向纵向铺满图片

background-image: url(./img/小图.webp);

可以看到图片默认被填充满整个页面,大概填充了四五个这样

现在我就想要这个盒子里只显示这一张图

background-repeat

可选值:

repeat 默认值,重复

no-repeat 不重复

repeat-x x轴上重复

repeat-y y轴上重复

设置background-repeat: no-repeat;

现在我想要调整图片在盒子里面的位置

background-position:参数1参数2;

参数1:水平方向的偏移:长度单位,left,center,right,

参数2:垂直方向的偏移:长度单位,top,center,bottom

单位:长度单位,

注意:如果参数2不写,默认是center

设置:background-position:right;

现在我又想调整背景图片的大小

background-size:参数1 参数2 ;

参数1:宽度

参数2:高度

只设置宽高中的一个,另外一个,会自适应缩放

特殊值:

cover 铺满整个盒子,图片不一定完整显示

contain 完整显示图片,盒子不一定会铺满

设置:background-size: cover;

这是将小图放大了,如果是大图会怎么样?

设置:background-size: cover;

还记得上面说过,图片比盒子大,则默认显示图片的左上角


现在,不知道大家是否发现,我们给盒子设置的边框为double,背景色默认是充满整个盒子的包括内容区,内边距和边框。

现在有需求1、改变背景色的延伸范围

background-clip

可选值

border-box 默认值,背景色充满整个盒子,包括内容区,内边距,边框

padding-box 背景色填充内容区,内边距

content-box 背景色填充内容区

设置:background-clip: content-box;

此时还有一个属性,可以设置我们之前background-position偏移原点

background-origin

可选值:

border-box 从边框开始偏移

padding-box 默认值 从内边距开始偏移

content-box 从内容区开始偏移

设置background-clip: content-box;再设置background-position:0px 0px;


分页点

到这,我们延伸出一个想法:在设置轮播图时,我们想给分页点设置样式,在不点击时,是一个个圆,点击时变成外扩的圆角矩形。

css 复制代码
ul>li {
  width: 20px;
  height: 20px;
  background-color: red;
  float: left;
  margin: 0 10px;
  border-radius: 50%;
}

ul>li:hover {
  background-color: #fff;
  background-clip: padding-box;
  border-radius: 20px;
  width: 40px;
}
 

可以实现效果,点击时变成圆角矩形,但是再点击时也会造成抖动,将别的元素挤走

所以可以设置内边距,再使用background-clip:content-box 让背景只填充在内容区,点击后再设置 background-clip:padding-box,由于盒子大小没有改变,所以不会发生抖动。

css 复制代码
ul>li {
  width: 20px;
  height: 20px;
  background-color: red;
  float: left;
  padding: 0 15px;
  background-clip: content-box;
  border-radius: 50%;
}

ul>li:hover {
  background-color: #fff;
  background-clip: padding-box;
  border-radius: 20px;
}
 

background

通过该属性可以同时设置所有背景相关的样式

没有顺序的要求,谁在前谁在后都行

也没有数量的要求,不写的样式就使用默认值

注意:background-size要写在background-position后面

语法:位置/大小

css 复制代码
background: #f60 url(./img/小图.webp) no-repeat padding-box border-box 100px 100px /200px 200px;

雪碧图

提高网站性能的一种方式

一、图片整合技术(CSS-Sprite) 雪碧图/精灵图

优点:

1 将多个图片整合为一张图片里,浏览器只需要发送一次请求,可以同时加载多个图片,

提高访问效率,提高了用户体验。

2 减小了图片的总大小,提高请求的速度

二、雪碧图使用步骤

1:先确定要使用的图标

2:测量图标的大小

3:根据测量结果创建一个元素

4:将雪碧图设置为元素的背景

5:设置一个偏移量以显示正确的图片

雪碧图实例如下:


图标字体

图标字体相较于雪碧图用处更广,更方便灵活

可以去阿里巴巴矢量图标库下载到项目中使用

https://www.iconfont.cn/?spm=a313x.notifications.i3.2.444c3a81mcrSdT


线性渐变

渐变:通过渐变可以设置一些复杂的背景颜色,可以从实现一个颜色向其他颜色过渡的效果

渐变是图片,通过 background-image设置

可选值

1:linear-gradient(方位,颜色1,颜色2)

线性渐变,颜色沿着一条直线发生变化

参数1:表示方位,(可选值,不写默认是to bottom)

(1)to left,to right, to bottom, to top

(2)xxxdeg 表示角度,度数,会更灵活,0-360deg

(3)turn 表示圈 .5turn=180deg 1turn=360deg

参数2:颜色1

参数3:颜色2

注意:

可以写多个颜色,默认情况下,颜色是均分占比的

也可以手动的指定渐变的分布情况

background-image:linear-gradient(red 50px,yellow) ;

百分比表示指定颜色的标准中心线位置,百分比之间是过渡色,那么 0% 表示起点,100% 表示终点

例如:

background-image: linear-gradient(to right,red 10%,green 50%,blue 75%);;

表示含义:

10% 表示 red 的颜色中心线在线性渐变方向的 10% 的位置。

50% 表示 green 的颜色中心线在线性渐变方向的 50% 的位置。

75% 表示 blue 的颜色中心线在线性渐变方向的 75% 的位置。

10% 到 50% 是 red-green 的过渡色,50%-75% 是 green-blue 的过渡色。

css 复制代码
 background-image:linear-gradient(0.5turn,black 50%,#fff 50%) ;
2: repeating-linear-gradient()

可以平铺的线性渐变

background-image: repeating-linear-gradient(yellow 0px, red 50px);

参数跟linear-gradient是一样的

css 复制代码
background-image: repeating-linear-gradient(red 0%,yellow 70%);

放射渐变

1:radial-gradient()

经向渐变(放射性的效果)

默认情况下,圆心是根据元素的形状来计算的

正方形 圆形

长方形 椭圆型

参数1:圆心的形状

(1)circle圆形,ellipse椭圆,

(2)设置的大小 at 位置==>像素1 像素2 at 0px 0px

background-image: radial-gradient(100px 100px at 100px 0px,red,yellow);

参数2:颜色1

参数3:颜色2


css 复制代码
background-image: radial-gradient( red 0%,yellow 50%);

css 复制代码
 background-image: repeating-radial-gradient(red 0%, yellow 50%);
相关推荐
web小白成长日记8 小时前
企业级 Vue3 + Element Plus 主题定制架构:从“能用”到“好用”的进阶之路
前端·架构
APIshop9 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python
风送雨9 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
XTTX1109 小时前
Vue3+Cesium教程(36)--动态设置降雨效果
前端·javascript·vue.js
LYFlied10 小时前
WebGPU与浏览器边缘智能:开启去中心化AI新纪元
前端·人工智能·大模型·去中心化·区块链
Setsuna_F_Seiei10 小时前
2025 年度总结:人生重要阶段的一年
前端·程序员·年终总结
model200510 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
han_11 小时前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
前端·javascript·面试
aPurpleBerry11 小时前
React 01 目录结构、tsx 语法
前端·react.js
jayaccc11 小时前
微前端架构实战全解析
前端·架构