在HTML文档中,每个元素都有盒子模型,所以说在Web世界里(特别是页面布局),盒子模型几乎无处不在,这个盒子就是一个矩形的块,可以对其进行幅面、边框和边距的设置。
每一个盒子都有三个必须了解的参数,border(边框)、padding(内边距)和margin(外边距),盒子模型规定了处理元素内容和内边距、边框以及外边距的方式。如下图所示:
示例代码如下:
<h1>一级标题</h1>
<p><b>段落文字(此处粗体强调):</b>感受CSS如何处理HTML元素盒子,每个盒子的<span>表现形式</span>如何?在例子中会为每个盒子添加边框和内外边距。</p>
<p><img src="img/li.jpg" width="200px"/>段落文字:每一个盒子都有三个必须了解的参数,border(边框)、padding(内边距)和margin(外边距),盒子模型规定了处理元素内容和内边距、边框以及外边框的方式。</p>
CSS部分代码如下:
<style type="text/css">
body,h1,p,b,span,img{
margin:5px;
padding:10px;
border:2px solid black;
}
b,span{
color:#6FF;
}
</style>
其运行效果如下图所示:
如图所示,为body,h1,p,b,span和img标签都加上了边框。
其基本用法如下:
width: auto | 长度 | 百分比;
height: auto | 长度 | 百分比;
说明:
根据目前多数主流高版本浏览器的盒子大小计算规则,width和height默认指的是内容部分的宽高,是不包含padding、margin和border在内的,要想改变盒子大小的计算规则,则要使用box-sizing属性。多数情况下,盒子所占据的真正大小为:
盒子所占宽度= width(内容宽度)+ padding(左右)+ margin(左右)+ border(左右)
盒子所占高度= height(内容高度)+ padding(上下)+ margin(上下)+ border(上下)
一般来说,如下定义时
<style type="text/css">
div{
width:300px; /*宽300像素*/
height:200px; /*高200像素*/
margin:15px; /*外边距15像素*/
padding:20px; /*内边距20像素*/
border:15px solid green; /*边框15像素绿色实线*/
}
</style>
...
<div>div盒子中的内容</div>
...
其基本用法如下:
width: 值;
height: 值;
box-sizing: content-box | border-box;
说明:
示例代码如下:
<div id="cbox">content-box方式</div>
<div id="bbox">border-box方式</div>
CSS部分代码如下:
<style type="text/css">
div{
width:200px; /*宽200像素*/
height:100px; /*高100像素*/
margin:15px; /*外边距15像素*/
padding:10px; /*内边距10像素*/
border:10px solid green; /*边框10像素绿色实线*/
}
#cbox{
box-sizing:content-box; /*width、height仅指内容宽高*/
}
#bbox{
box-sizing:border-box; /*width、height指内容宽高+margin+border*/
}
</style>
边框border用于指定盒子的边框应如何呈现,边框样式属性最基本的有style、color和width,分别表示边框的样式、颜色和厚度。
border-style属性用来控制对象的边框样式,可同时设定1个或多个边框样式。
另外还有四个分属性border-top-style、border-right-style、border-bottom-style和border-left-style分别对应上、右、下、左4个边的边框样式。
其基本语法如下:
border-style: 样式值{1,4};
border-top-style: 样式值;
border-bottom-style: 样式值;
border-left-style: 样式值;
border-right-style: 样式值;
示例代码如下:
<div id="bs1">none无边框</div>
<div id="bs2">1个值solid</div>
<div id="bs3">2个值solid dashed</div>
<div id="bs4">3个值solid dashed double</div>
<div id="bs5">4个值solid dashed double dotted</div>
<div id="bs6">groove3D凹槽</div>
<div id="bs7">ridge3D凸槽</div>
<div id="bs8">inset3D凹边</div>
<div id="bs9">outset3D凸边</div>
<div id="bs10">分别设定四个边</div>
CSS部分代码如下:
<style type="text/css">
div{
width:80px;
height:50px;
margin:10px;
float:left;
font-size:13px;
}
#bs1{ border-style:none; }
#bs2{ border-style:solid; }
#bs3{ border-style:solid dashed;}
#bs4{ border-style:solid dashed double; }
#bs5{ border-style:solid dashed double dotted; }
#bs6{ border-style:groove; }
#bs7{ border-style:ridge; }
#bs8{ border-style:inset; }
#bs9{ border-style:outset; }
#bs10{
border-top-style:solid;
border-right-style:dashed;
border-bottom-style:double;
border-left-style:dotted;
}
</style>
其基本语法为:
border-width: 厚度值{1,4};
border-top-width: 厚度值;
border-bottom-width: 厚度值;
border-left-width: 厚度值;
border-right-width: 厚度值;
说明:厚度值可以是长度或关键字,关键字可以是medium、thin和thick,分别表示中等厚度的边框、细边框和粗边框。其应用值的方式与border-style大致相同。
示例代码如下:
<div id="bw1">1个值thick</div>
<div id="bw2">2个值2px 4px</div>
<div id="bw3">3个值2px 4px 6px</div>
<div id="bw4">4个值2px 4px 6px 8px</div>
<div id="bw5">分别设定4个边2px、4px、6px和8px</div>
CSS部分代码如下:
<style type="text/css">
div{
width:80px;
height:50px;
margin:10px;
float:left;
font-size:13px;
border-style:solid;
}
#bw1{ border-width:thick; }
#bw2{ border-width:2px 4px;}
#bw3{ border-width:2px 4px 6px; }
#bw4{ border-width:2px 4px 6px 8px; }
#bw5{
border-top-width:2px;
border-right-width:4px;
border-bottom-width:6px;
border-left-width:8px;
}
</style>
其基本语法如下:
border-color: 颜色值{1,4};
border-top-color: 颜色值;
border-right-color: 颜色值;
border-bottom-color: 颜色值;
border-left-color: 颜色值;
说明:颜色值可以是任何合法CSS颜色值。其应用值的方式与border-style大致相同。
示例代码如下:
<div id="bc1">1个颜色值,样式groove</div>
<div id="bc2">2个颜色值,样式solid</div>
<div id="bc3">3个个颜色值,样式solid</div>
<div id="bc4">4个个颜色值,样式solid</div>
<div id="bc5">分别设定4个边,样式solid</div>
CSS部分代码如下:
<style type="text/css">
div{
width:80px;
height:50px;
margin:10px;
float:left;
font-size:13px;
border-style:solid;
border-width:10px;
}
#bc1{
border-style:groove;
border-color:#81409A;
}
#bc2{ border-color:#81409A #B7D5EF; }
#bc3{ border-color:#81409A #B7D5EF #B6CE44; }
#bc4{ border-color:#81409A #B7D5EF #B6CE44 #FDDA04; }
#bc5{
border-top-color:#81409A;
border-right-color:#B7D5EF;
border-bottom-color:#B6CE44;
border-left-color:#FDDA04;;
}
</style>
其基本语法如下:
border: [宽度] [样式] [颜色];
border-left: [宽度] [样式] [颜色];
border-right: [宽度] [样式] [颜色];
border-top: [宽度] [样式] [颜色];
border-bottom: [宽度] [样式] [颜色];
说明:属性值中“宽度”、“颜色”和“样式”可同时设定1个或多个,值之间无特定顺序,用空格分隔。
示例代码如下:
<div id="b1">border:solid,边框颜色默认使用前景色</div>
<div id="b2">border:double #81409A;</div>
<div id="b3">border:dashed #047C3F 6px;</div>
<div id="b4">4个边分别设置</div>
CSS部分代码如下:
<style type="text/css">
div{
width:100px;
height:60px;
margin:10px;
float:left;
font-size:13px;
}
#b1{
border:solid;
color:#159DD7;
}
#b2{ border:double #81409A;}
#b3{ border:dashed #047C3F 6px;}
#b4{
border-top:double;
border-right:solid #B6CE44;
border-bottom:dotted 2px;
border-left:ridge #B7D5EF 8px;
}
</style>
盒子中有内边距和外边距,分别指内容离边框的距离和边框离其它元素的距离。
其基本语法如下:
padding : 值{1,4};
padding-top :值;
padding-bottom :值;
padding-left :值;
padding-right :值;
说明:
其基本语法如下:
margin : 值{1,4};
margin-top :值;
margin-bottom :值;
margin-left :值;
margin-right :值;
说明:
CSS3增加了圆角边框、图像边框、盒子阴影和盒子倒影等新属性,这些属性已被部分浏览器支持。
border-top-left-radius: [水平半径] [垂直半径];
border-top-right-radius: [水平半径] [垂直半径];
border-bottom-right-radius: [水平半径] [垂直半径];
border-bottom-left-radius: [水平半径] [垂直半径];
说明:
同时设置4个角的语法:
border-radius: 取值{1,4} [ / 取值{1,4} ];
说明:
示例代码如下:
<div id="br1">分别设置4个角:<br />左上右上10px<br />左下右下20px</div>
<div id="br2">分别左上和右上:<br />值20px 10px</div>
<div id="br3">水平与垂直半径相同:<br />1个参数值:10px</div>
<div id="br4">水平与垂直半径相同:<br />2个参数值:10px 15px</div>
<div id="br5">水平与垂直半径相同:<br />3个参数值:10px 15px 20px</div>
<div id="br6">水平与垂直半径相同:<br />3个参数值:10px 15px 20px 25px</div>
<div id="br7">水平与垂直半径不同:<br />每组1个参数:10px/20px;</div>
<div id="br8">水平与垂直半径不同:<br />每组2个参数:10px 15px/20px 25px</div>
<div id="br9">水平与垂直半径不同:<br />每组4个参数:10px 15px 20px 25px/20px 25px 30px 35px</div>
CSS部分代码如下:
<style type="text/css">
div{
width:130px;
height:70px;
margin:10px;
float:left;
font-size:13px;
border:2px solid #000;
padding:5px;
}
#br1{ border-top-left-radius:10px;
border-top-right-radius:10px;
border-bottom-right-radius:20px;
border-bottom-left-radius:20px;}
#br2{border-top-left-radius:20px 10px;border-top-right-radius:20px 10px;}
#br3{ border-radius:10px; }
#br4{ border-radius:10px 15px; }
#br5{ border-radius:10px 15px 20px; }
#br6{ border-radius:10px 15px 20px 25px; }
#br7{ border-radius:10px/20px;}
#br8{ border-radius:10px 15px/20px 25px;}
#br9{ border-radius:10px 15px 20px 25px/20px 25px 30px 35px;}
</style>
其基本语法如下:
border-image:< border-image-source > || < border-image-slice > [ / < border-image-width > | / < border-image-width >? / < border-image-outset > ]? || < border-image-repeat >
说明:
控制对象的边框要使用的图像,属性值可以是none或者图像url,假如该属性的值为none或者无法显示图片,则将会使用border-style(如果定义了border-style)的设置显示边框。
其基本语法如下:
border-image-source: none | url(图像路径);
说明:
控制对象的边框图像的切片方式,属性可以是1-4个数字或百分比,也可以增加一个fill关键字。
其基本语法如下:
border-image-slice:[ 数字 | 百分比 ]{1,4} && fill?
说明:
该属性用于指定使用多厚的边框来承载被裁剪后的图像。
其基本语法如下:
border-image-width:[ 长度值 | 百分比 | 浮点数 | auto ]{1,4}
说明:
该属性用于指定边框图像的填充方式。可定义0~2个参数值,即水平和垂直方向。如果2个值相同,可合并成1个,表示水平和垂直方向都用相同的方式填充边框背景图;如果2个值都为stretch,则可省略不写。
其基本语法如下:
border-image-repeat:[ stretch | repeat | round | space ]{1,2}
说明:
该属性用于指定边框图像向外扩展所定义的数值,即如果值为10px,则图像在原本的基础上往外延展10px再显示。
其基本语法如下:
border-image-outset:[ 长度值 | 浮点数 ]{1,4}
说明:
示例代码如下:
<div id="bi1">切片:27<br />边框厚度:auto,即27px <br />平铺方式:repeat</div>
<div id="bi2"><h1>加关键字fill</h1></div>
<div id="bi3">切片:27<br />边框厚度:auto,即27px <br />外延:10px <br /> 平铺方式:repeat</div>
<div id="bi4">切片:27<br />边框厚度:15px <br /> 平铺方式:repeat</div>
<div id="bi5">切片:35<br />边框厚度:40px <br />平铺方式:repeat</div>
<div id="bi6">切片:20<br />边框厚度:27px <br />平铺方式:repeat</div>
<div id="bi7">切片:20<br />边框厚度:auto,即27px <br />平铺方式:stretch</div>
<div id="bi8">切片:20<br />边框厚度:auto,即27px <br />平铺方式:round</div>
<div id="bi9">切片:10 15 20 30<br />边框厚度:auto,即27px <br />平铺方式:repeat;</div>
CSS部分代码如下:
<style type="text/css">
div{
padding:30px;
margin:20px;
font-size:14px;
background-color:#9FF;
float:left;
width:160px;
height:80px;
}
#bi1{border-image-source:url("images/test.png");
border-image-slice:27;
border-image-width:auto;
border-image-repeat:repeat;}
#bi2{border-image-source:url("images/test.png");
border-image-slice:27 fill;
border-image-width:auto;
border-image-repeat:repeat;}
#bi3{border-image-source:url("images/test.png");
border-image-slice:27;
border-image-width:auto;
border-image-outset:10px;
border-image-repeat:repeat;}
#bi4{ border-image:url("images/test.png") 27/15px repeat; }
#bi5{ border-image:url("images/test.png") 35/40px repeat; }
#bi6{ border-image:url("images/test.png") 20/27px repeat; }
#bi7{ border-image:url("images/test.png") 27/auto stretch; }
#bi8{ border-image:url("images/test.png") 27/auto round; }
#bi9{ border-image:url("images/test.png") 10 15 20 30/auto repeat; }
</style>
box-shadow属性的值可以是none或者1到多个阴影的叠加效果。none表示没有阴影,为默认值;如果有阴影,则每个阴影有6个值可以设置:2~4个长度值、1个颜色值和1个阴影类型关键字inset(inset为可选)。
其基本语法如下:
box-shadow: none | 阴影 [ , 阴影 ]*;
阴影 = [inset] 水平偏移量 垂直偏移量 [阴影模糊半径] [阴影扩展半径] [阴影颜色]
说明:
示例代码如下:
<div id="bs1">外部阴影有模糊有外延</div>
<div id="bs2">外部阴影无模糊无外延</div>
<div id="bs3">外部阴影有模糊有外延</div>
<img id="bs4" src="img/li.jpg" />
<img id="bs5" src="img/li.jpg" />
<img id="bs6" src="img/li.jpg" />
CSS部分代码如下:
<style type="text/css">
div,img{
width:250px;
height:200px;
margin:15px;
padding:5px;
float:left;
font-size:13px;
}
#bs1{box-shadow:4px 4px 2px 2px #61f7eb;
background-color:#EC3B58;}
#bs2{box-shadow:4px 4px;
background-color:#9CDFFC;}
#bs3{box-shadow:-4px 4px 2px 2px #ef41d4;
background-color:#7afe84;}
#bs4{box-shadow:0 0 6px 6px #9366f7;}
#bs5{box-shadow:inset 0 0 6px 6px #9366f7;}
#bs6{box-shadow: 0 0 2px 2px #56f79a, 0 0 2px 4px #fcf276,0 0 2px 7px #5fcff5,0 0 2px 11px #f34ddf; }
</style>
遗漏之处日后补充,如有错误或不足,还望指正。