与背景相关的新增属性
- background-clip:指定背景的显示范围
- background-origin:指定绘制背景图像时的起点
- background-size:指定背景中图像的尺寸
- background-break:指定内联元素的背景图像进行平铺时的循环方式
background-clip属性
background-clip:padding|margin
在HTML页面中,一个具有背景的元素通常由元素的内容、内部补白(padding
)、边框、外部补白(margin
)构成。
元素背景的显示范围在CSS2与CSS2.1、CSS3中并不相同。在CSS2中,背景的显示范围是指内部补白之内的范围,不包括边框;而在CSS2.1乃至CSS3中背景的显示范围是指包括边框在内的范围。在CSS3中,可以用background-clip
来修改背景的显示范围,如果将background-clip
的属性值设为border
,则背景范围包括边框区域,如果设为padding
,则不包括边框区域。
<style type="text/css">
div{
background-color: black;
background-image: url(flower-green.png);
border: dashed 15px green;
padding: 30px;
color:white;
font-size:2em;
font-weight:bold;
}
div.div1{
-moz-background-clip: border;
-webkit-background-clip: border;
}
div.div2{
-moz-background-clip: padding;
-webkit-background-clip: padding;
}
</style>
<body>
<div class="div1">示例文字1</div><br>
<div class="div2">示例文字2</div>
</body>
效果如图:
background-origin属性
background-origin:padding|border|content
在绘制背景图像时,默认是从内部补白(padding
)区域的左上角开始。利用background-origin
属性可以指定绘制时从边框的左上角开始或者从内容的左上角开始,或者从内部补白的左上角开始。
<style type="text/css">
div{
background-color: black;
background-image: url(flower-green.png);
background-repeat: no-repeat;
border: dashed 15px green;
padding: 30px;
color:white;
font-size:2em;
font-weight:bold;
}
div.div1{
-moz-background-origin: border;
-webkit-background-origin: border;
}
div.div2{
-moz-background-origin: padding;
-webkit-background-origin: padding;
}
div.div3{
-moz-background-origin: content;
-webkit-background-origin: content;
}
</style>
<body>
<div class="div1">示例文字1</div><br/>
<div class="div2">示例文字2</div><br/>
<div class="div3">示例文字3</div>
</body>
效果如图:
另外,将
background-clip
属性指定为padding
时,边框点、划线中点与点之间的图像不会显示,但仍然可以通过将background-origin
属性指定为border
来指定从边框的左上角开始绘制背景图像。
<style type="text/css">
div{
background-color: black;
background-image: url(flower-green.png);
background-repeat: no-repeat;
border: dashed 15px green;
padding: 30px;
color:white;
font-size:2em;
font-weight:bold;
}
div.div1{
-moz-background-clip: padding;
-webkit-background-clip: padding;
-moz-background-origin: border;
-webkit-background-origin: border;
}
</style>
<body>
<div class="div1">示例文字1</div><br>
</body>
效果如图:
background-size属性
background-size
属性指定背景图像的尺寸。
background-size:width height
第一个参数为背景的宽度,第二个参数为背景的高度。单位:px或百分比。可省略最后一个参数。
<style type="text/css">
div{
background-color: black;
background-image: url(flower-red.png);
padding: 30px;
color:white;
font-size:2em;
font-weight:bold;
background-size: 40px 20px;
-webkit-background-size: 40px 20px;
}
</style>
<body>
<div>示例文字</div><br>
</body>
效果如图:
如果要维持图像纵横比例,可以在设定图像宽度或高度时,将另一个参数设为
auto
。
background-break属性
background-break
属性指定平铺内联元素背景图像时的循环方式,可以指定bounding-box
,each-box
和continuous
这三种循环方式。
在使用Firefox浏览器时,需要将其书写成-moz-background-inline-policy
的形式。
将background-break
属性指定为bounding-box
的时候,背景图像在整个内联元素中进行平铺。指定为each-box
的时候,背景图像在每一行中进行平铺,指定为continuous
的时候,下一行中的图像紧接着上一行中的图像继续平铺 。
<style type="text/css">
span{
background-color: #888888;
background-image: url(flower-green.png);
padding: 0.2em;
color:gray;
line-height: 1.5;
font-size:1em;
font-weight:bold;
}
div.div1 span{
-moz-background-inline-policy: bounding-box;
}
div.div2 span{
-moz-background-inline-policy: each-box;
}
div.div3 span{
-moz-background-inline-policy: continuous;
}
</style>
<body>
<div class="div1" >
<span>示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字</span>
</div><br/>
<div class="div2">
<span>示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字</span>
</div><br/>
<div class="div3">
<span>示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字</span>
</div>
</body>
圆角边框的绘制
border-radius属性
只要使用border-radius
属性指定好圆角的半径,就可以绘制圆角边框了。
<style type="text/css">
div{
border: solid 5px blue;
border-radius: 20px;
-moz-border-radius: 20px;
-o-border-radius: 20px;
-webkit-border-radius: 20px;
background-color: skyblue;
padding: 20px;
width: 180px;
}
</style>
<div>
示例文字。示例文字。示例文字。示例文字。示例文字。示例文字。示例文字。示例文字。示例文字。示例文字。
</div>
效果如图:
在border-radius属性中指定两个半径
border-radius: 40px 20px;
针对这种情况,各种浏览器的处理方式并不一致。在Chrome与Safari中,会绘制出一个椭圆形边框,第一个半径为椭圆的水平方向半径,第二个半径为椭圆的垂直方向半径。在Firefox与Opera中,将第一个半径作为边框左上角与右下角的圆半径来绘制,将第二个半径作为边框右上角与左下角的圆半径来绘制。
div{
border: solid 5px blue;
border-radius: 40px 20px;
-moz-border-radius:40px 20px;
-o-border-radius:40px 20px;
-webkit-border-radius: 40px 20px;
background-color: skyblue;
padding: 20px;
width: 180px;
}
效果如图:
不显示边框的时候
如果使用了border-radius
属性但是把边框设定为不显示的时候,浏览器将把背景的四个角绘制为圆角。
div{
border: none;
border-radius: 20px;
-moz-border-radius:20px;
-o-border-radius:20px;
-webkit-border-radius: 20px;
background-color: skyblue;
padding: 20px;
width: 180px;
}
效果如图:
修改边框种类的时候
使用了border-radius
属性后,不管边框是什么种类,都会将边框沿着圆角曲线进行绘制。
div{
border: dashed 5px blue;
border-radius: 20px;
-moz-border-radius: 20px;
-o-border-radius: 20px;
-webkit-border-radius: 20px;
background-color: skyblue;
padding: 20px;
width: 180px;
}
效果如图:
绘制四个角不同半径的圆角边框
如果要绘制的圆角边框的四个角半径各不相同,可以将border-top-left-radius
属性、border-top-right-radius
属性、border-bottom-right-radius
属性、border-bottom-left-radius
属性结合起来使用。
div{
border: solid 5px blue;
border-radius-topleft: 10px;
border-radius-topright: 20px;
border-radius-bottomright: 30px;
border-radius-bottomleft: 40px;
-moz-border-radius-topleft: 10px;
-moz-border-radius-topright: 20px;
-moz-border-radius-bottomright: 30px;
-moz-border-radius-bottomleft: 40px;
-o-border-radius-topleft: 10px;
-o-border-radius-topright: 20px;
-o-border-radius-bottomright: 30px;
-o-border-radius-bottomleft: 40px;
-webkit-border-top-left-radius: 10px;
-webkit-border-top-right-radius: 20px;
-webkit-border-bottom-right-radius: 30px;
-webkit-border-bottom-left-radius: 40px;
background-color: skyblue;
padding: 20px;
width: 180px;
}
使用图像边框
border-image属性
border-image
属性,可以让处于随时变化状态的元素的长或宽的边框统一使用一个图像文件来绘制。使用border-image
属性,会让浏览器在显示图像边框肘,自动将所使用到的图像分割为9部分进行处理。
<style type="text/css">
div{
border-image: url(borderimage.png) 20 20 20 20 / 20px;
-webkit-border-image: url(borderimage.png) 20 20 20 20 / 20px;
-moz-border-image: url(borderimage.png) 20 20 20 20 / 20px;
}
</style>
<div>
示例文字
</div>
效果如图:
border-image属性最简单的使用方法
border-image:url(图像文件的路径) A B C D
-webkit-border-image:url(图像文件的路径) A B C D
-moz-border-image:url(图像文件的路径) A B C D
border-image
属性值中至少必须指定五个参数,其中第一个参数为边框所使用的图像文件的路径,A、B、C、D四个参数表示当浏览器自动把边框所使用到的图像进行分隔时的上边距、右边距、下边距及左边距。
边框使用的图像会被自动分割成9个部分。具体显示的时候,四个角上的部分没有任何展示效果的,不会平铺、 不会重复、也不会拉伸。上下左右四个边框使用的图像可以行平铺或伸缩。
<style type="text/css">
div{
border: solid 5px;
border-image: url(borderimage.png) 18 18 18 18;
-webkit-border-image: url(borderimage.png) 18 18 18 18;
-moz-border-image: url(borderimage.png) 18 18 18 18;
width:300px;
}
</style>
<div>
示例文字
</div>
效果如图:
使用 border-image属性来指定边框宽度
border-image:url( 图像文件的路径) A B C D/border-width
border-width
可以指定一个参数,也可以指定四个参数。一个参数表示四个值相同。
div{
border:solid;
border-image: url(borderimage.png) 18/5px 10px 15px 20px;
-webkit-border-image: url(borderimage.png) 18/5px 10px 15px 20px;
-moz-border-image: url(borderimage.png) 18/5px 10px 15px 20px;
width:300px;
}
效果如图:
中央图像的自动拉伸
浏览器将边框所用图像自动分割为9部分后,除了上下左右四个边框自动分配为四条边所用的图像之外,将位于中间部分的图像分配给元素边框所包围的中间区域,随着div
元素的内容变化的同时, 或在修改div
元素的宽度或高度的同时,中间部分的图像也会自动进行伸缩 ,以填满该中间区域。
<style type="text/css">
div{
border:solid;
border-image: url(borderimage.png) 18/5px;
-webkit-border-image: url(borderimage.png) 18/5px;
-moz-border-image: url(borderimage.png) 18/5px;
width:300px;
}
</style>
<div>
示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字示例文字
</div>
效果如图:
指定四条边申图像的显示方法
border-image: url( 文件路径) A B C D/border-width topbottom leftright
其中,topbottom
表示元素的上下两条边中图像的显示方法,leftright
表示元素的左右两条边中图像的显示方曲。在显示方法中可以指定的值为repeat
、stretch
与round
三种。
将显示方法指定为repeat
时,图像将以平铺的方式进行显示。如果四条边中图像均以平铺方式进行显示,则中间图像也以平铺方式进行显示。
div{
border-image: url(borderimage.png) 18/5px repeat repeat;
-webkit-border-image: url(borderimage.png) 18/5px repeat repeat;
-moz-border-image: url(borderimage.png) 18/5px repeat repeat;
width:300px;
height:200px;
}
效果如图:
将显示方能指定为
stretch
时,图像将以拉伸的方式进行显示。如果四条边中的图像均以拉伸方式进行显示,则中间图像也以拉伸方式进行显示。
div{
border-image: url(borderimage.png) 18/5px stretch stretch;
-webkit-border-image: url(borderimage.png) 18/5px stretch stretch;
-moz-border-image: url(borderimage.png) 18/5px stretch stretch;
width:300px;
height:200px;
}
效果如图:
可以将上下两条边中的图像的显示方式指定为平铺显示 ,左右两条边中的图像的显示方式指定为拉伸显示,或者将上下两条边中的图像的显示方式指定为拉伸显示 ,左右两条边中的图像的显示方式指定为平铺显示。使用第一种指定方式时 , 中央图像在水平方向为平铺显示,垂直方向为拉仰显示 ,使用第二种指定方式时,中央图像在水平方向为拉伸显示,垂直方向为平铺显示。
div{
border-image: url(borderimage.png) 18/5px repeat stretch;
-webkit-border-image: url(borderimage.png) 18/5px repeat stretch;
-moz-border-image: url(borderimage.png) 18/5px repeat stretch;
width:300px;
height:200px;
}
效果如图:
将显示方法指定为
round
时与指定为repeat
时类似,都是将图像进行平铺显示,区别在于如果最后显示的一幅图像不能被完全显示,且能够显示的部分不到图像的一半,就不显示最后的图像,然后扩大前面的图像,使显示区域正好完整平铺全部图像,如果能够显示的部分超过图像的一半,就显示最后的图像,但是将全部显示的图像缩小,使显示区域正好完整平铺全部图像。
div{
border-image: url(borderimage.png) 18/5px round round;
-webkit-border-image: url(borderimage.png) 18/5px round round;
-moz-border-image: url(borderimage.png) 18/5px round round;
width:300px;
height:200px;
}
效果如图:
使用背景图像
在使用border-image
属性的时候,仍然可以正常使用背景图像,但是为了不让边框图像挡住背景图像,需要使用中间为透明的边框图像,否则背景图像就有可能被边框图像的中央部分挡住部分或全体了。