一、盒子模型概述
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<style>
div {
background-color: lightgrey;
width: 300px;
border: 25px solid green;
padding: 25px;
margin: 25px;
}
</style>
</head>
<body>
<h2>盒子模型演示</h2>
<p>CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。</p>
<div>这里是盒子内的实际内容。有 25px 内间距,25px 外间距、25px 绿色边框。</div>
</body>
</html>
让我们自己算算:
300px (宽)
+ 50px (左 + 右填充)
+ 50px (左 + 右边框)
+ 50px (左 + 右边距)
= 450px
二、 盒子模型相关属性
1.边框样式
边框样式(border-style)
border-style: 上边[右边 下边 左边]
solid 边框为单实线 dashed 边框为虚线
dotted 边框为点线 double 边框为双实线
写法:
p{border-style:dashed solid solid solid;}
综合例子:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
<style type="text/css">
h2{
border:double;/*只有一个属性值 表示四边为改样式*/
}
p:nth-of-type(1){ /*两个属性值 上下一组 左右一组*/
border-top-style:dotted;
border-bottom-style:dotted;
border-left-style:solid;
border-right-style:solid;
}
p:nth-child(3){/*三个属性值,上 左右 下*/
border-style:solid dotted dashed;
}
div:nth-last-of-type(1){
border-style: dashed double solie dotted;/*四个属性值按照顺时针 上 右 下 左*/
}
</style>
</head>
<body>
<h2>边框样式双实double线</h2>
<p id="one"> 边框样式,上下为点线,左右为单实线</p>
<p id="two"> 边框样式,上边框单实线,左右点线,下虚实线</p>
<div>上虚线,下单实线,左点线,右双实线。</div>
</body>
</html>
2.边框宽度
border-width: 上边[右边 下边 左边]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<style>
p.one
{
border-style:solid;
border-width:5px;
}
p.two
{
border-style:solid;
border-width:medium;
}
p.three
{
border-style:solid;
border-width:1px;
}
</style>
</head>
<body>
<p class="one">一些文本。</p>
<p class="two">一些文本。</p>
<p class="three">一些文本。</p>
<p><b>注意:</b> "border-width" 属性 如果单独使用则不起作用。要先使用 "border-style" 属性来设置边框。</p>
</body>
</html>
3.边框颜色
border-color: 上边 [右边 下边 左边]
4.综合设置边框
border-style:属性1,属性2,属性3,属性4
上->右->下->左
border-style:属性1,属性2,属性3
上->左右->下
border-style:属性1,属性2
上下->左右
border-style:属性1
上下左右属性相同
最终样式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<style>
p
{
border:5px solid red;
}
</style>
</head>
<body>
<p>段落中的一些文本。</p>
</body>
</html>
5.圆角边框
实例
给div元素添加圆角的边框:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<style>
div
{
border:2px solid #a1a1a1;
padding:10px 40px;
background:#dddddd;
width:300px;
border-radius:25px;
}
</style>
</head>
<body>
<div>border-radius 属性允许您为元素添加圆角边框! </div>
</body>
</html>
语法:
border-radius:100px/50px
/*设置水平半径为100像素,垂直半径为50像素*/
border-radius:50px; /*设置圆角半径为50像素*/
注意:如果第二个参数省略,会默认等于第一个参数.
- 参数1和参数2设置一个参数值时,表示四角的圆角半径。
参数1和参数2设置二个参数值时,第一个参数值代表左上圆角半径和右下圆角半径,第二个参数值代表右上和左下角圆角半径。
img{border-radius:50px 20px/30px 60px;}
参数1和参数2设置三个参数值时,第一个参数值代表左上圆角半径,第二个参数值代表右上和左下角圆角半径,第三个参数值代表右下角圆角半径。
img{border-radius:50px 20px 10px/30px 40px 60px;}
参数1和参数2设置四个参数值时,第一个参数值代表左上圆角半径,第二个参数值代表右上圆角半径,第三个参数值代表右下角圆角半径,第四个参数值代表左下圆角半径。
img{border-radius:50px 30px 20px 10px/50px 30px 20px 10px;}
注意第四个可以简写为
img{border-radius:50px 30px 20px 10px;}
6.图片边框
通过一个例子来说明: ```css <!doctype html>
**之前:**<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22016332/1645955086659-0b564287-7e16-4db9-a639-de8223bd90c3.png#clientId=u84ac92b7-d974-4&from=paste&height=230&id=ua810c678&originHeight=283&originWidth=295&originalType=url&ratio=1&rotation=0&showTitle=false&size=15091&status=done&style=none&taskId=u37fa6b77-702e-44a1-aaee-559c522f909&title=&width=240)<br />**之后:**<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22016332/1645955086989-0d791528-7d83-47eb-80d4-f12df5893797.png#clientId=u84ac92b7-d974-4&from=paste&height=376&id=ucc3fa171&originHeight=513&originWidth=608&originalType=url&ratio=1&rotation=0&showTitle=false&size=88125&status=done&style=none&taskId=u7e6d40d1-581f-4512-94a9-e65ca788d8c&title=&width=446)<br />将 1 3 7 9作为四角位置的图片,将2 4 6 8作为四边的图片,如果尺寸不够,则按照指定的方式自动填充。<br />例如:第14行代码中的图片填充方式改为"拉伸填充",具体代码如下:
```css
border-image-repeat:stretch /*设置图片填充方式*/
综合设置:border-image:url{images/images.jpg} 33%/41px repeat;
二、边距属性:
1.内边距
- padding-top:上内边距
- padding-right:右内边距
- padding-bottom:下内边距
- padding-left:左内边距
- padding-top:上内边距[右内边距 下内边距 左内边距]
一个值为四边,两个值为上下/左右,三个值为上/左右/下
在上面的设置中,padding相关属性的取值可为auto自动(默认值)、不同单位的数值、相对于父元素(或浏览器)宽度的百分比(%),实际工作中最常用的是像素(px)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
<style type="text/css">
.border{border:5px solid #F60;} /*为图像和段落设置边框*/
img{
padding:80px; /*图像4个方向内边距相同*/
padding-bottom:0; /*单独设置下内边距*/
} /* 上面两行代码等价于padding:80px 80px 0;*/
p{padding:5%} /* 段落内边距为父元素宽度的5%*/
</style>
</head>
<body>
<img class="border" src="images/2.jpg" alt="2014课程马上升级"/>
<p class="border">段落内边距为元素宽度的5%</p>
</body>
</html>
2.外边距
- margin-top:上外边距
- margin-right:右外边距
- margin-bottom:下外边距
- margin-left:左外边距
- margin-top:上外边距[右外边距 下外边距 左外边距]
当对块级元素应用宽度属性width,并将左右的外边距都设置为auto,可使块级元素水平居中,实际中作中常用 这种方式进行网页布局,示例代码如下.
.header{width:960px;margin:0 auto;}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>box-shadow</title>
<style type="text/css">
img{
width:300px;
border: 5px solid red;
float:left; /*设置图像左浮动*/
margin-right:50px; /*设置图像的右外边距*/
margin-left:30px;/*设置图像的左外边距*/
/*上面两行代码等价于margin: 0 50px 0 30px;*/
}
</style>
</head>
<body>
<div>盒子内容</div>
<img src="images/3.png" alt="2014全新优化升级课程">
<p>前端开发工程师,会熟练使用时下非常流行的HTLM5、CSS技术,架构炫酷的页面三弟旋转例子i笑熬过,对人才的额要求也越拉越高 ,前端开发工程师会全面掌握皮u从的撒娇发票商富士达发吉萨滴飘过解决方案,影响是技术是砍价的本领吗不仅是使用,我i满探讨的领域。
</p>
</body>
</html>
三、box-shadow属性
box-shadow:像素值1 像素值2 像素值3 像素值4 颜色值 阴影类型;
像素值1 表示元素水平阴影位置,可以为负值(必选属性)
像素值2 表示元素垂直阴影位置,可以为负值(必选属性)
像素值3 阴影模糊半径(可选属性)
像素值4 阴影扩展半径,不能为负值(可选属性)
颜色值 阴影颜色(可选属性)
阴影类型 内阴影(inset)/外阴影(默认)(可选属性)<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>box-shadow</title>
<style type="text/css">
img{
padding:20px;
border-radius:50%;
border:1px solid #ccc;
box-shadow:5px 5px 10px 2px #999 inset;
}
</style>
</head>
<body>
<img class="border" src="images/5.jpg" alt="2014全新优化升级课程">
</body>
</html>
值得一提的是,同text-shadow属性(文字阴影属性)一样,box-shadow属性也可以改变阴影的投射方向及添加多重阴影效果,示例代码如下:box-shadow:5px 5px 10px 2px #999 inset,-5px -5px 10px 2px #333 inset;
四、box-sizing属性
box-sizing属性用于定义盒子的宽度值和高度值是否包含元素的内边框和边框。
box-sizing:content-box/border-box;
content-box:浏览器对盒模型的解释遵从W3C标准,当定义width和height时,他的参数值不包括border和padding。
border-box:当定义width和height时,border和padding的参数值被包含在width和height之内。<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>box-shadow</title>
<style type="text/css">
.box1{
width:300px;
height:100px;
padding-right:10px;
background:#F90;
border:10px solid #ccc;
box-sizing:content-box;
}
.box2{
width:300px;
height:100px;
padding-right:10px;
background:#F90;
border:10px solid #ccc;
box-sizing:border-box;
}
</style>
</head>
<body>
<div class="box1">content_box属性</div>
<div class="box2">border_box属性</div>
</body>
</html>
五、背景属性
1.设置背景颜色
body{background-color:#CCC;} /*设置网页的背景颜色*/
h2{
background-color:#FC3;/*设置标题背景颜色*/
}
2.设置背景图像
body{
background-image:url{images/jianbian.png};/*设置网页的背景图像*/
}
3.背景与图片不透明度设置
1.RGBA模式
该模式是在红,绿,蓝三原色的基础上添加了不透明度参数。其语法格式为:rgba{r,g,b,alpha};
alpha参数是一个介于0.0(完全透明)和1.0(完全不透明)之间的数字。
例如:使用RGBA模式为p元素指定透明度为0.5,颜色为红色的背景,代码如下:p{background-color:rgba(255,0,0,0.5);}
2.opacity属性
在CSS3中,使用opacity属性能够使任何元素呈现出透明效果。其语法格式为:opacity:opacityValues;
下面是一个综合案例
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>box透明</title>
<style type="text/css">
#boxwrap{width:330px;margin:10px auto; border:solid 1px #FF6666;}
img:first-child{opacity:1;}
img:nth-child(2){opacity:0.8;}
img:nth-child(3){opacity:0.5;}
img:nth-child(4){opacity:0.2;}
</style>
</head>
<body>
<div id="boxwrap">
<img src="images/jingling.jpg" width="160" height="109">
<img src="images/jingling.jpg" width="160" height="109">
<img src="images/jingling.jpg" width="160" height="109">
<img src="images/jingling.jpg" width="160" height="109">
</div>
</body>
</html>