一、盒子模型概述

image.png

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>菜鸟教程(runoob.com)</title>
  6. <style>
  7. div {
  8. background-color: lightgrey;
  9. width: 300px;
  10. border: 25px solid green;
  11. padding: 25px;
  12. margin: 25px;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <h2>盒子模型演示</h2>
  18. <p>CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。</p>
  19. <div>这里是盒子内的实际内容。有 25px 内间距,25px 外间距、25px 绿色边框。</div>
  20. </body>
  21. </html>

image.png
让我们自己算算:
300px (宽)
+ 50px (左 + 右填充)
+ 50px (左 + 右边框)
+ 50px (左 + 右边距)
= 450px

二、 盒子模型相关属性

1.边框样式

边框样式(border-style)

  1. border-style: 上边[右边 下边 左边]

solid 边框为单实线 dashed 边框为虚线
dotted 边框为点线 double 边框为双实线
写法:

  1. p{border-style:dashed solid solid solid;}

综合例子:

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>demo</title>
  6. <style type="text/css">
  7. h2{
  8. border:double;/*只有一个属性值 表示四边为改样式*/
  9. }
  10. p:nth-of-type(1){ /*两个属性值 上下一组 左右一组*/
  11. border-top-style:dotted;
  12. border-bottom-style:dotted;
  13. border-left-style:solid;
  14. border-right-style:solid;
  15. }
  16. p:nth-child(3){/*三个属性值,上 左右 下*/
  17. border-style:solid dotted dashed;
  18. }
  19. div:nth-last-of-type(1){
  20. border-style: dashed double solie dotted;/*四个属性值按照顺时针 上 右 下 左*/
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <h2>边框样式双实double线</h2>
  26. <p id="one"> 边框样式,上下为点线,左右为单实线</p>
  27. <p id="two"> 边框样式,上边框单实线,左右点线,下虚实线</p>
  28. <div>上虚线,下单实线,左点线,右双实线。</div>
  29. </body>
  30. </html>

image.png

2.边框宽度

  1. border-width: 上边[右边 下边 左边]
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>菜鸟教程(runoob.com)</title>
  6. <style>
  7. p.one
  8. {
  9. border-style:solid;
  10. border-width:5px;
  11. }
  12. p.two
  13. {
  14. border-style:solid;
  15. border-width:medium;
  16. }
  17. p.three
  18. {
  19. border-style:solid;
  20. border-width:1px;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <p class="one">一些文本。</p>
  26. <p class="two">一些文本。</p>
  27. <p class="three">一些文本。</p>
  28. <p><b>注意:</b> "border-width" 属性 如果单独使用则不起作用。要先使用 "border-style" 属性来设置边框。</p>
  29. </body>
  30. </html>

image.png

3.边框颜色

  1. border-color: 上边 [右边 下边 左边]

4.综合设置边框

border-style:属性1,属性2,属性3,属性4
上->右->下->左
border-style:属性1,属性2,属性3
上->左右->下
border-style:属性1,属性2
上下->左右
border-style:属性1
上下左右属性相同
最终样式

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>菜鸟教程(runoob.com)</title>
  6. <style>
  7. p
  8. {
  9. border:5px solid red;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <p>段落中的一些文本。</p>
  15. </body>
  16. </html>

image.png

5.圆角边框

实例
给div元素添加圆角的边框:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>菜鸟教程(runoob.com)</title>
  6. <style>
  7. div
  8. {
  9. border:2px solid #a1a1a1;
  10. padding:10px 40px;
  11. background:#dddddd;
  12. width:300px;
  13. border-radius:25px;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div>border-radius 属性允许您为元素添加圆角边框! </div>
  19. </body>
  20. </html>

image.png
语法:

  1. border-radius:100px/50px
  2. /*设置水平半径为100像素,垂直半径为50像素*/
  1. border-radius:50px; /*设置圆角半径为50像素*/

注意:如果第二个参数省略,会默认等于第一个参数.

  • 参数1和参数2设置一个参数值时,表示四角的圆角半径。
  • 参数1和参数2设置二个参数值时,第一个参数值代表左上圆角半径和右下圆角半径,第二个参数值代表右上和左下角圆角半径。

    1. img{border-radius:50px 20px/30px 60px;}
  • 参数1和参数2设置三个参数值时,第一个参数值代表左上圆角半径,第二个参数值代表右上和左下角圆角半径,第三个参数值代表右下角圆角半径。

    1. img{border-radius:50px 20px 10px/30px 40px 60px;}
  • 参数1和参数2设置四个参数值时,第一个参数值代表左上圆角半径,第二个参数值代表右上圆角半径,第三个参数值代表右下角圆角半径,第四个参数值代表左下圆角半径。

    1. img{border-radius:50px 30px 20px 10px/50px 30px 20px 10px;}

    注意第四个可以简写为

    1. img{border-radius:50px 30px 20px 10px;}

    6.图片边框

    通过一个例子来说明: ```css <!doctype html>

    1. **之前:**<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行代码中的图片填充方式改为"拉伸填充",具体代码如下:
    2. ```css
    3. border-image-repeat:stretch /*设置图片填充方式*/

    image.png
    综合设置:

    1. border-image:url{images/images.jpg} 33%/41px repeat;

    二、边距属性:

    1.内边距

    • padding-top:上内边距
    • padding-right:右内边距
    • padding-bottom:下内边距
    • padding-left:左内边距
    • padding-top:上内边距[右内边距 下内边距 左内边距]

    一个值为四边,两个值为上下/左右,三个值为上/左右/下

    在上面的设置中,padding相关属性的取值可为auto自动(默认值)、不同单位的数值、相对于父元素(或浏览器)宽度的百分比(%),实际工作中最常用的是像素(px)

    1. <!doctype html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>demo</title>
    6. <style type="text/css">
    7. .border{border:5px solid #F60;} /*为图像和段落设置边框*/
    8. img{
    9. padding:80px; /*图像4个方向内边距相同*/
    10. padding-bottom:0; /*单独设置下内边距*/
    11. } /* 上面两行代码等价于padding:80px 80px 0;*/
    12. p{padding:5%} /* 段落内边距为父元素宽度的5%*/
    13. </style>
    14. </head>
    15. <body>
    16. <img class="border" src="images/2.jpg" alt="2014课程马上升级"/>
    17. <p class="border">段落内边距为元素宽度的5%</p>
    18. </body>
    19. </html>

    image.png

    2.外边距

    • margin-top:上外边距
    • margin-right:右外边距
    • margin-bottom:下外边距
    • margin-left:左外边距
    • margin-top:上外边距[右外边距 下外边距 左外边距]

    当对块级元素应用宽度属性width,并将左右的外边距都设置为auto,可使块级元素水平居中,实际中作中常用 这种方式进行网页布局,示例代码如下.

    1. .header{width:960px;margin:0 auto;}
    1. <!doctype html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>box-shadow</title>
    6. <style type="text/css">
    7. img{
    8. width:300px;
    9. border: 5px solid red;
    10. float:left; /*设置图像左浮动*/
    11. margin-right:50px; /*设置图像的右外边距*/
    12. margin-left:30px;/*设置图像的左外边距*/
    13. /*上面两行代码等价于margin: 0 50px 0 30px;*/
    14. }
    15. </style>
    16. </head>
    17. <body>
    18. <div>盒子内容</div>
    19. <img src="images/3.png" alt="2014全新优化升级课程">
    20. <p>前端开发工程师,会熟练使用时下非常流行的HTLM5、CSS技术,架构炫酷的页面三弟旋转例子i笑熬过,对人才的额要求也越拉越高 ,前端开发工程师会全面掌握皮u从的撒娇发票商富士达发吉萨滴飘过解决方案,影响是技术是砍价的本领吗不仅是使用,我i满探讨的领域。
    21. </p>
    22. </body>
    23. </html>

    image.png

    三、box-shadow属性

    1. box-shadow:像素值1 像素值2 像素值3 像素值4 颜色值 阴影类型;

    像素值1 表示元素水平阴影位置,可以为负值(必选属性)
    像素值2 表示元素垂直阴影位置,可以为负值(必选属性)
    像素值3 阴影模糊半径(可选属性)
    像素值4 阴影扩展半径,不能为负值(可选属性)
    颜色值 阴影颜色(可选属性)
    阴影类型 内阴影(inset)/外阴影(默认)(可选属性)

    1. <!doctype html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>box-shadow</title>
    6. <style type="text/css">
    7. img{
    8. padding:20px;
    9. border-radius:50%;
    10. border:1px solid #ccc;
    11. box-shadow:5px 5px 10px 2px #999 inset;
    12. }
    13. </style>
    14. </head>
    15. <body>
    16. <img class="border" src="images/5.jpg" alt="2014全新优化升级课程">
    17. </body>
    18. </html>

    image.png
    值得一提的是,同text-shadow属性(文字阴影属性)一样,box-shadow属性也可以改变阴影的投射方向及添加多重阴影效果,示例代码如下:

    1. box-shadow:5px 5px 10px 2px #999 inset,-5px -5px 10px 2px #333 inset;

    image.png

    四、box-sizing属性

    box-sizing属性用于定义盒子的宽度值和高度值是否包含元素的内边框和边框。

    1. box-sizing:content-box/border-box;

    content-box:浏览器对盒模型的解释遵从W3C标准,当定义width和height时,他的参数值不包括border和padding。
    border-box:当定义width和height时,border和padding的参数值被包含在width和height之内。

    1. <!doctype html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>box-shadow</title>
    6. <style type="text/css">
    7. .box1{
    8. width:300px;
    9. height:100px;
    10. padding-right:10px;
    11. background:#F90;
    12. border:10px solid #ccc;
    13. box-sizing:content-box;
    14. }
    15. .box2{
    16. width:300px;
    17. height:100px;
    18. padding-right:10px;
    19. background:#F90;
    20. border:10px solid #ccc;
    21. box-sizing:border-box;
    22. }
    23. </style>
    24. </head>
    25. <body>
    26. <div class="box1">content_box属性</div>
    27. <div class="box2">border_box属性</div>
    28. </body>
    29. </html>

    image.png

    五、背景属性

    1.设置背景颜色

    1. body{background-color:#CCC;} /*设置网页的背景颜色*/
    2. h2{
    3. background-color:#FC3;/*设置标题背景颜色*/
    4. }

    2.设置背景图像

    1. body{
    2. background-image:url{images/jianbian.png};/*设置网页的背景图像*/
    3. }

    3.背景与图片不透明度设置

    1.RGBA模式
    该模式是在红,绿,蓝三原色的基础上添加了不透明度参数。其语法格式为:

    1. rgba{r,g,b,alpha};

    alpha参数是一个介于0.0(完全透明)和1.0(完全不透明)之间的数字。
    例如:使用RGBA模式为p元素指定透明度为0.5,颜色为红色的背景,代码如下:

    1. p{background-color:rgba(255,0,0,0.5);}

    2.opacity属性
    在CSS3中,使用opacity属性能够使任何元素呈现出透明效果。其语法格式为:

    1. opacity:opacityValues;

    下面是一个综合案例

    1. <!doctype html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>box透明</title>
    6. <style type="text/css">
    7. #boxwrap{width:330px;margin:10px auto; border:solid 1px #FF6666;}
    8. imgfirst-child{opacity:1;}
    9. img:nth-child(2){opacity:0.8;}
    10. img:nth-child(3){opacity:0.5;}
    11. img:nth-child(4){opacity:0.2;}
    12. </style>
    13. </head>
    14. <body>
    15. <div id="boxwrap">
    16. <img src="images/jingling.jpg" width="160" height="109">
    17. <img src="images/jingling.jpg" width="160" height="109">
    18. <img src="images/jingling.jpg" width="160" height="109">
    19. <img src="images/jingling.jpg" width="160" height="109">
    20. </div>
    21. </body>
    22. </html>

    image.png