透明背景
opacity可以用来设置元素背景的透明,
- 它需要一个0-1之间的值
- 0 表示完全透明
- 1 表示完全不透明
- 0.5 表示半透明
opacity属性在IE8及以下的浏览器中不支持,IE8及以下的浏览器需要使用如下属性代替,这种方式支持IE6
- alpha(opacity=透明度),透明度,需要一个0-100之间的值
- 0 表示完全透明
- 100 表示完全不透明
- 50 半透明
.box{
opacity: 0.5;
filter: alpha(opacity=50);
}
背景图片
background-color设置背景颜色
background-image来设置背景图片
如果背景图片大于元素,默认会显示图片的左上角
- 如果背景图片和元素一样大,则会将背景图片全部显示
- 如果背景图片小于元素大小,则会默认将背景图片平铺以充满元素
可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色, 一般情况下设置背景图片时都会同时指定一个背景颜色,background-repeat用于设置背景图片的重复方式,可选值:
- repeat,默认值,背景图片会双方向重复(平铺)
- no-repeat ,背景图片不会重复,有多大就显示多大
- repeat-x, 背景图片沿水平方向重复
- repeat-y,背景图片沿垂直方向重复
导航条上的渐变色可以截取背景图片
可以截取一个像素的竖条,然后使用背景进行平铺
.box1{
width: 990px;
height: 32px;
background-color: #bfa;
margin: 50px auto;
/*
* 设置为背景图片
*/
background-image: url(img/bg.gif);
/*
* 设置水平方向重复
*/
background-repeat: repeat-x;
}
背景图片默认是贴着元素的左上角显示通过background-position可以调整背景图片在元素中的位置
可选值:top right left bottom center中的两个值 来指定一个背景图片的位置
top left 左上
bottom right 右下
如果只给出一个值,则第二个值默认是center
也可以直接指定两个偏移量, 第一个值是水平偏移量
- 如果指定的是一个正值,则图片会向右移动指定的像素
- 如果指定的是一个负值,则图片会向左移动指定的像素
第二个是垂直偏移量
- 如果指定的是一个正值,则图片会向下移动指定的像素
- 如果指定的是一个负值,则图片会向上移动指定的像素
{
background-repeat: no-repeat;
background-position: -80px -40px;
}
background-attachment用来设置背景图片是否随页面一起滚动
可选值:
scroll,默认值,背景图片随着窗口滚动
fixed,背景图片会固定在某一位置,不随页面滚动
{
background-attachment:fixed;
}
当背景图片的background-attachment设置为fixed时,背景图片的定位永远相对于浏览器的窗口
不随窗口滚动的图片,我们一般都是设置给body,而不设置给其他元素
按钮练习
图片资源
active.png
hover.png
link.png
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.btn:link{
/*将a转换为块元素*/
display: block;
/*设置宽高*/
width: 93px;
height: 29px;
/*设置背景图片*/
background-image: url(img/btn/link.png);
/*设置背景图片不重复*/
background-repeat: no-repeat;
}
.btn:hover{
background-image: url(img/btn/hover.png);
}
.btn:active{
background-image: url(img/btn/active.png);
}
</style>
</head>
<body>
<a class="btn" href="#"></a>
</body>
</html>
做完功能以后,发现在第一次切换图片时,会发现图片有一个非常快的闪烁,这个闪烁会造成一次不佳的用户体验。
产生问题的原因:
背景图片是以外部资源的形式加载进网页的,浏览器每加载一个外部资源就需要单独的发送一次请求,但是我们外部资源并不是同时加载,浏览器会在资源被使用才去加载资源
我们这个练习,一上来浏览器只会加载link.png由于hover和active的状态没有马上触发,所以hover.png和active.png并不是立即加载的当hover被触发时,浏览器才去加载hover.png当active被触发时,浏览器才去加载active.png
由于加载图片需要一定的时间,所以在加载和显示过程会有一段时间,背景图片无法显示,导致出现闪烁的情况
为了解决该问题,可以将三个图片整合为一张图片,这样可以同时将三张图片一起加载,就不会出现闪烁的问题了,
然后在通过background-position来切换要显示的图片的位置,这种技术叫做图片整合技术(CSS-Sprite)
优点:
1 将多个图片整合为一张图片里,浏览器只需要发送一次请求,可以同时加载多个图片,提高访问效率,提高了用户体验。
2 将多个图片整合为一张图片,减小了图片的总大小,提高请求的速度,增加了用户体验
btn.png
<style type="text/css">
.btn:link{
/*将a转换为块元素*/
display: block;
/*设置宽高*/
width: 93px;
height: 29px;
/*设置背景图片*/
background-image: url(img/btn/btn2.png);
/*设置背景图片不重复*/
background-repeat: no-repeat;
}
.btn:hover{
/*
* 当是hover状态时,希望图片可以向左移动
*/
background-position: -93px 0px;
}
.btn:active{
/*
* 当是active状态时,希望图片再向左移动
*/
background-position: -186px 0px;
}
</style>
同时设置背景属性
background
- 通过该属性可以同时设置所有背景相关的样式
- 没有顺序的要求,谁在前睡在后都行,也没有数量的要求,不写的样式就使用默认值
body{
height: 5000px;
/*设置一个背景颜色*/
/*background-color: #bfa;*/
/*设置一个背景图片*/
/*background-image: url(img/3.png);*/
/*设置背景不重复*/
/*background-repeat: no-repeat;*/
/*设置背景图片的位置*/
/*background-position: center center;*/
/*设置背景图片不随滚动条滚动*/
/*background-attachment: fixed;*/
background-color: #bfa;
background: #bfa url(img/3.png) center center no-repeat fixed;
}
雪碧图
使用雪碧图
1、量想要使用图标的大小,设置宽高
.box1{
width: 129px;
height: 45px;
background-image:url(img/amazon-sprite_.png) ;
}
2、量所需图标到左上角的距离,设置偏移量
{
background-position: -58px -338px;
}
制作雪碧图
使用ps制作雪碧图
1、增加画布大小
2、把其他图片复制到画布