CSS3中的背景图片可以通过设置边框来显示,也可以通过设置宽度和高度来显示。
例如:
.my-image {
background-image: url(image.jpg)
border: 1px solid #000
width: 300px
height: 200px
}
在理解css的背景图片之前需要清楚两个问题,在什么情况下去使用css的背景图片?又在什么情况下去使用img标签的内容图片?html中专门有一个img标签用于向页面中去插入内容图片,那么如何区分这两种情况呢?
网页中可以使用很多的图片格式,下面简单的列举一些:
background-position 属性既可以使用关键字,也可以使用像素、em、百分比,最简单的情况下:可以给两个值,一个表示相对于左侧的偏移量,一个表示相对于顶部的偏移量。
calc()可以让浏览器代替你计算任何数值,包括(角度、像素、百分比等),甚至还支持混合单位的计算,非常强大,比如:你使用的页面布局为百分比布局,但是在UI设计稿中又需要去进行20px的偏移,那么就可以写成“calc(100% + 20px)”。
同样的,背景图片右侧定位的问题也可以使用calc()去处理,比如:左侧为文本内容,右侧icon图标的定位。
默认的情况下,背景图片是绘制在元素边框以内的,如果把图片定位到边框的下方,而边框又被设置为半透明,那么图片边缘就会出现半透明的边框,使用background-clip属性可以处理这种情况,background-clip:border-box将其改为padding-box就可以把图片剪裁到内边距盒子内,content-box值会把图片位于内边距及其之外的部分剪裁掉。
背景会附着在指定的元素后面,如果滚动页面,那么背景也会随着页面的滚动而滚动,通过background-attachment属性改变这种行为。
除了fixed和默认值scroll,还可以把background-attachment设为local,它与scroll的区别在于,scroll会让图片相对于元素本身固定,而local会让背景图片相对于元素中的内容固定,也就是元素设置了固定大小,overflow设置了auto或scroll,则元素内部内容滚动显示时,图片会随之滚动。
background-size明确指定一个值,可以重新设置图片大小,也可以让它随着元素大小缩放.
如果希望图片随着元素的缩放而缩放,则必须设置为百分比的形式,不过,百分比设置时不是相对于图片固有的大小,而是相对于容器的大小,如果给图片的宽高都加以百分比的形式处理,那么会导致图片产生变形。
还有一个属性值contain,这个值会让浏览器尽可能的保持图片的最大化,同时不改变图片的宽高比,浏览器决定哪一边使用auto。
另一个属性值为cover,意思是图片会缩放,覆盖整个元素,同时不会变形,如果在一个高而窄的元素中,元素高度会填满,但是图片的两边会被切除掉。
css的应用十分广泛,即便用在图片的效果中也是方法多样,下面就介绍五种为图片添加特殊效果边框的CSS写法
阴影效果
通过使用带有一些padding之的背景图来添加阴影效果。
HTML<img class=”shadow” src=”sample.jpg” alt=”" />CSS
img.shadow {
background: url(shadow-1000×1000.gif) no-repeat right bottom
padding: 5px 10px 10px 5px
}
双边框效果
这应该是目前最常见的技巧,我们通过以下方式创建说边框
HTML<img class="double-border" src="sample.jpg" alt="" />CSS
img.double-border {
border: 5px solid #ddd
padding: 5px
background: #fff
}
图片外框效果
webdesignerwall.com上有最好的讲解,这个效果是基于在上面层叠一个有透明度的图片的技术。至于IE6的PNG透明度问题,可以参考这篇教程。
HTML<div class="frame-block">
<span>&nbsp</span>
<img src="sample.jpg" alt="" />
</div>CSS
.frame-block {
position: relative
display: block
height:335px
width: 575px
}
.frame-block span {
background: url(frame.png) no-repeat center top
height:335px
width: 575px
display: block
position: absolute
}
水印效果
你可以通过降低主图片的透明度来让背景图片透过来显示的方法添加水印
HTML<div class="transp-block">
<img class="transparent" src="sample.jpg" alt="" />
</div>CSS
.transp-block {
background: #000 url(watermark.jpg) no-repeat
width: 575px
height: 335px
}
img.transparent {
filter:alpha(opacity=75)
opacity:.75
}
为图片添加说明文字
使用绝对定位和透明度的设置来添加灵活的说明。
HTML<div class="img-desc">
<img src="sample.jpg" alt="" />
<cite>Salone del mobile Milano, April 2008 - Peeta</cite>
</div>CSS
.img-desc {
position: relative
display: block
height:335px
width: 575px
}
.img-desc cite {
background: #111
filter:alpha(opacity=55)
opacity:.55
color: #fff
position: absolute
bottom: 0
left: 0
width: 555px
padding: 10px
border-top: 1px solid #999