CSS第六篇:CSS属性-背景
背景
background-image
- background-image用于设置元素的背景图片
- 会盖在background-color的上面
- 在图片的透明区域,可以看到背景色
- 背景图片默认是平铺
-
如果设置了多张图片
div { background-image: url("bg001.png"),url("bg002.png"),url("bg003.png"); }
- 设置的第一张图片将显示在最上面,其图片按顺序层叠在下面
- 注意:如果设置了背景图片后,元素没有具体的宽高,背景图片是不会显示出来的。
background-repeat
- background-repeat用于设置背景图片是否要平铺
- 常见的值有:
- repeat:平铺
- no-repeat: 不平铺
- repeat-x:只在水平方向平铺
- repeat-y:只在垂直方向平铺
background-size
-
background-size用于设置背景图片的大小
/* 宽度150,高度180 */ background-size: 150px 180px; /* 宽度保持原来的宽高比自动计算,高度180 */ background-size: auto 180px; /* 宽度150,高度保持原来的宽高比自动计算*/ background-size: 150px auto; /* 等价于上面 */ background-size: 150px;
background-position
-
background-position用于设置背景图片在水平、垂直方向上的具体位置
- 水平方向还可以设置:left、center、right
- 垂直方向还可以设置:top、center、bottom
- 如果设置了1个方向,另一个方向默认是center
- 比如
background-position:80px
,等价于:background-position:80px center
- 比如
background-position:center
,等价于:background-position:center center center
- 比如
背景图片取代image元素
- 在很多场合,背景图片能够取代image元素
- 代码举例:
-
例1:
div { margin-bottom: 30px; } /* 百度新闻导航背景 */ .baidu { width: 400px; height: 50px; background-color: #3e98f0; /* 背景图片 */ background-image: url("images/bdnews.png"); /* 高度固定,宽度自适应 */ background-size: auto 30px; /* 不平铺 */ background-repeat: no-repeat; /* 背景图片居中显示 */ background-position: center; } .car { background-image: url("./images/car.png"); /* 不平铺 */ background-repeat: no-repeat; background-color: #ff0; /* 背景图片水平居中,垂直靠顶部 */ background-position: center top; width: 100px; text-align: center; /* padding只影响内容,不影响背景 */ padding-top: 30px; } .suv { background-image: url("./images/car.png"); /* 不平铺 */ background-repeat: no-repeat; background-color: #0f0; /* 背景图片水平居中,垂直靠顶部 */ background-position: left center; width: 60px; height: 50px; /* 文字垂直居中 */ line-height: 50px; /* padding只影响内容,不影响背景 */ padding-left: 60px; } <body> <div class="baidu"></div> <div class="car">微型车</div> <div class="suv">suv车型</div> </body>
-
滑动门技术
- 如果是非纯色背景,并且左右还带有圆角等特效效果
- 实现方案
- 切图特点
- 中间切出一个像素宽度
- 两头切出2个圆角
- 实现步骤
- 用一个div包裹一个btn
- 2个圆角背景图片设置为div的两头,div设置内边距
- 按钮设置填充div的所有内容,1像素宽度设置为btn的背景色,然后平铺
- 切图特点
-
代码
.slider { width: 100px; height: 32px; /* 同时设置2张背景图片 */ background-image: url("images/btn_1.png"), url("images/btn_3.png"); background-repeat: no-repeat; /* background-repeat: no-repeat,no-repeat; */ background-size: auto 32px; /* background-size: auto 32px,auto 32px; */ background-position: left,right; /* background-position: left center,right center; */ padding: 0 18px; } .slider button { border: none; outline: none; color: #fff; /* 宽高填充父控件div */ width: 100%; height: 100%;; /* 背景设置为透明 */ background-color: transparent; background-image: url("./images/btn_2.png"); /* 背景图片横向平铺 */ background-repeat: repeat-x; background-size: auto 32px; } <div class="slider"> <button type="button">按钮</button> </div>
背景大图片适配
- 场景:
- 有的网页上面整个背景就是个大图片,那么这个大图片是如何适配各种不同屏幕的尺寸呢?
- 分析:
- 背景是一张很大分辨率的图,比如:1920*489,图片中的主要信息在图片中心
- 让背景图片居中显示
- 高度等于原图高度,宽度使用原图
- 设置图片的最小宽度,一旦屏幕小于最小宽度值,滚动显示
-
代码:
body { margin: 0; } div { /* 设置浏览器的最小宽度 */ min-width: 1000px; /* 跟背景图片一样的盖度 */ height: 489px; /* 让背景图片居中 */ background-image: url("images/mhxy.jpg"); background-repeat: no-repeat; background-position: center; } <div></div>
CSS Spirite
- 什么是CSS Sprite?
- 是一种CSS图像合成技术,将各种小图片合并到一张图片上,然后利用CSS的背景定位来显示对应的图片部分
- 有人翻译为:CSS雪碧、CSS精灵
- 使用CSS Sprite的好处
- 减少网页的http请求数量,加快网页响应的速度,减轻服务器压力
- 减小图片总大小
- 解决了图片命名的困扰,只需要针对一张集合的图片命名
- 更换风格方便,只需要在少数张图片上修改图片的颜色或者样式,整个网页的风格就可以改变
- Sprite图的使用
- 一张图片上有n个图标,那么如何让当前控件的背景显示指定的某个图标呢?
- 通过
background-position
属性设置 - 将sprite图片放到PS中,然后测量出指定图标的坐标位置
- 然后设置
background-position
属性值 - 注意:精灵图片只能用于背景background设置不能用于img元素
- Sprite图片制作(雪碧图、精灵图)
- 方法1:Photoshop
- 新建一个画布
- 将各个小图标拖到上面,按照一定的规则排列好,即可
- 方法2:https://www.toptal.com/developers/css/sprite-generator
- 打开之后选择”choose files“
- 选择想要放置的图片
-
该工具会自动添加,而且代码position也一并会生成出来
- 方法1:Photoshop
-
代码举例:
div { background-color: #ff0; width: 67px; height: 23px; background-image: url("images/cars_sprite.png"); background-repeat: no-repeat; background-position: -77px -51px; } <div></div>
- Sprite编写建议
-
优化前:
.div1 { background: url("images/cars_sprite.png") -10px -30px; } .div2 { background: url("images/cars_sprite.png") -60px -50px; } .div3 { background: url("images/cars_sprite.png") -110px -75px; }
-
优化后:
.div1, .div2, .div3 { background: url("images/cars_sprite.png"); } .div1 { background-position: -10px -30px; } .div2 { background-position: -60px -50px; } .div3 { background-position: -110px -75px; }
-
background-attachment
- background-attachment可以设置一下3个值
- scroll:背景图片跟随元素一起滚动(系统默认)
- local:背景图片跟随元素以及元素内容一起滚动
- 当前元素内容很多,有滚动条,滚动,背景也一起滚动
- fixed:背景图片相对于浏览器窗口固定
- 浏览器右边有滚动条,滚动,当前控件的背景图片不动。直到滚出当前控件,背景图片也会消失
- 使用场合
- 比如有个背景墙
- 内容滚动背景也要一起跟着滚动,这样才不会看的眼花缭乱
- 此时使用
local
属性
background
- background是一系列背景相关属性的简写属性,常用格式是:
image position/size repeat attachment color
- background-size可以省略,如果不省略,/background-size必须紧跟在background-position的后面
- 其他属性也都可以省略,而且顺序任意
background: url("images/cars_sprite.png") center center/150px 200px no-repeat #f00;
-
background实现图片链接
/* 通过背景图片实现图片链接 */ a { background: url("images/btn_1.png") no-repeat; width: 150px; height: 150px; display: inline-block; } <a href="https://www.baidu.com"></a> <!-- 通过图片打开链接 --> <!-- <a href="https://www.baidu.com"> <img src="./images/btn_1.png" alt="图片"> </a> -->
background-image与img的选择
-
利用background-image与img都能实现显示图片的需求,在开发中该如何选择?
-
总结:
- img:作为网页内容的重要组成部分,比如广告图片、LOGO图片、文章配图、产品图片
- background-image:可有可无,不影响用户获取信息,有,能让网页更加美观;无,也不影响用户获取完整网页的内容信息
- 宗旨:
- 在没有任何CSS样式的情况下,用户也能浏览到网页中完整的内容信息(ps:网络出现问题或服务器出现问题时,有可能会导致CSS文件加载失败)
- 没有样式也要显示的就用img,可有可无仅仅是为了美化的就用background-image
特殊元素的背景
- 没有HTML元素对应着文档画布,如何设置文档画布的背景?
- html或者body元素的背景都能够延伸到整个文档画布
- 如果同时设置了html和body元素的背景,根元素html的背景才会作为文档画布背景
- 建议通过body元素来设置文档画布背景
- body、跟html元素默认的都是block元素,没有内容,默认尺寸为0,并不是占据整个屏幕
- 伪元素
::first-line
的背景::first-line
虽然意为第一行元素内容,但是他的背景并不一定填满一行,取决于各种因素- 取决于:文字大小、容器宽度、文字对齐方式
- 即:
::first-line
的背景紧紧的包裹文字内容
CSS属性-cursor
- cursor可以设置鼠标指针(光标)在元素上面的显示样式
- cursor常见的设值有:
- auto:浏览器根据上下文决定指针显示的样式,比如根据文本和非文本切换指针样式
- default:由操作系统决定,一般就是一个小箭头
- pointer:一只小手,鼠标指针挪动到链接上面默认就是这个样式
- text:一条竖线,鼠标指针移动到文本输入框上面默认就是这个样式
- none:没有任何指针显示在元素上面
div:hover { /* 挪上去变成小手 */ cursor: pointer; }
- cursor除了可以设置系统自带的一些值外,还可以设置图片
-
就是让鼠标的指针变成一张图片
div:hover { cursor: url("./images/btn_1.png") 0 0 , pointer; }
- url()后面的2个数字
- 分别代表图片在水平、垂直方向上的偏移,不能设置负数
- 0和0代表图片在左上角和指针是重叠的,数值变大,图片左上角会朝着指针左上角方向偏移
- 如果水平、垂直分别设置为图片宽高的一半,图片的中心点将和指针重叠
- 如果图片找不到,就会使用pointer作为cursor的值
- url()后面的2个数字
-