12 CSS中的盒子模型

技术交流QQ群:1027579432,欢迎你的加入!

欢迎关注我的微信公众号:CurryCoder的程序人生

  • 页面布局要学习三大核心,盒子模型、浮动和定位。学好盒子模型能非常好的帮助我们布局。
    网页布局.png

1.看透网页布局的本质

  • 网页布局过程
    • 先准备好相关的网页元素,网页元素基本都是盒子Box;
    • 利用CSS设置好盒子样式,然后摆放到相应的位置
    • 往盒子里面装内容;
  • 网页布局的核心本质:就是利用CSS摆放盒子!!!

2.盒子模型(Box Model)组成

  • 盒子模型:就是把HTML页面中的布局元素看成是一个矩形的盒子,也就是一个装着内容的容器。
  • CSS盒子模型的本质是一个盒子,封装周围的HTML元素,它包括:边框、外边距、内边距、实际的内容
    盒子模型组成1.png

    盒子模型组成2.png

3.边框border

边框.png
  • border可以设置元素的边框,边框有三部分组成:边框宽度(粗细)、边框样式、边框颜色
  • 语法格式:
    border: border-width || border-style || border-color
    
边框属性.png

4.边框的复合写法

  • CSS边框属性允许你指定一个元素边框的样式和颜色
  • 边框的复合写法:
    border: 1px solid red;  /* 三个参数是没有顺序的! */
    
  • 边框分开写法:
    border-top: 1px solid red;   /*  只设定上边框,其余方向同理  */
    

5.表格的细线边框

  • border-collapse属性控制浏览器绘制表格边框的方式它控制了相邻两个单元格之间的边框。
  • 语法格式:
    border-collapse: collapse;
    
  • collapse单词是合并的意思,border-collapse: collapse;表示相邻的边框合并在一起。

6.边框会影响盒子实际的大小

  • 边框会额外增加盒子的实际大小,因此有两种方法来解决:
    • 测量盒子大小的时候,不测量边框;
    • 如果测量的时候包含了边框,则需要width/height减去边框宽度

7.内边距padding

  • padding属性用于设置内边距,即边框与内容之间的距离。
    内边距属性.png

8.padding的复合写法

  • padding属性(简写属性)可以有1到4个值
    padding简写属性.png

9.padding会影响盒子的实际大小

  • 当我们给盒子设置padding值之后,发生了两件事情:
    • 内容和边距有了距离,添加了内边距;
    • padding会影响盒子实际的大小;
  • 注意:如果盒子已经有了宽度和高度,此时再指定内边距,就会撑大盒子。解决方法:如果保证了盒子与效果图大小保持一致,则让width/height减去多出来的内边距大小即可
  • 如果盒子本身没有指定width/height属性,则此时padding不会撑开盒子大小。

10.外边距margin

  • margin属性用于设置外边距,即控制盒子与盒子之间的距离。


    外边距的具体属性值.png
  • margin简写方式代表的意义与padding完全一致!

11.外边距的典型应用之块级盒子水平居中对齐

  • 外边距可以让块级盒子水平居中,但是必须满足两个条件:
    • 盒子必须指定了宽度width
    • 盒子左右的外边距都设置为auto
  • 语法格式:
    .header {
        width: 960px;
        margin: 0 auto;
    }
    
  • 常见写法用下面的三种:
    • margin-left: auto; margin-right: auto;
    • margin: auto;
    • margin: 0 auto;
  • 注意:上面的方法是让块元素水平居中对齐,如果想让行内元素或行内块元素水平居中,只需要给它的父元素添加text-align: center即可

12.外边距合并

  • 使用margin定义块元素的垂直外边距(即margin-top和margin-bottom)时,可能会出现外边距的合并。主要有下面的两种情况:
    • 相邻元素垂直外边距的合并
    • 嵌套元素垂直外边距的塌陷
1.相邻块元素垂直外边距的合并
  • 当上下相邻的两个块元素(兄弟关系的块元素)相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top时,它们之间的垂直间距不是margin-bottom与margin-top之和。取两个值中的较大者这种现象被称为相邻块元素垂直外边距的合并
    相邻块元素垂直外边距的合并.png
  • 解决方法:尽量只给一个盒子添加margin值!
2.嵌套元素垂直外边距的塌陷
  • 对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值
    嵌套元素垂直外边距的塌陷.png
  • 解决方法
    • 可以为父元素定义上边框;
    • 可以为父元素定义上内边距;
    • 可以为父元素添加overflow: hidden;

13.清除内外边距

  • 网页元素很多都带有默认的内外边距,而且不同的浏览器默认的值也不一致。因此,我们在布局前,首先要清除网页元素的内外边距。
  • 语法格式:
    * {
        padding: 0;  /* 清除内边距 */
        margin: 0;   /* 清除外边距 */
    }
    
  • 注意:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是,将它转换为块级元素和行内块元素就可以设置上下内外边距了

14.PS的基本操作

  • 因为网页美工大部分效果图都是利用PS软件来做的,所以以后我们大部分切图工作都是在PS中完成。
  • 具体操作如下:
    • 1.文件→打开:打开我们要测量的图片;
    • 2.Ctrl+R:可以打开标尺,或者视图→标尺;
    • 3.右击标尺,把里面的单位改成像素;
    • 4.Ctrl+加号(+)可以放大视图,Ctrl+减号(-)可以缩小视图;
    • 5.按住空格键,鼠标箭头变成小手,拖到PS视图;
    • 6.用选区拖动,可以测量大小;
    • 7.Ctrl+D可以取消选区,或者在旁边空白处点击一下也可以取消选区;


      PS界面介绍.png

15.综合案例之产品模块

  • 网页布局分析如下:


    网页布局分析.png
  • 具体代码流程:
    • box布局
    * {
        margin: 0;
        padding: 0;
    }
    
    body {
        background-color: #f5f5f5;
    }
    
    .box {
        width: 298px;
        height: 415px;
        background-color: #ffffff;
        /* 让块级盒子水平居中对齐 */
        margin: 100px auto;
    }
    
    • 图片和段落制作
    .box img {
    /* 图片的宽度和父亲一样宽 */
        width: 100%;
    }
    
    .review {
        height: 70px;
        font-size: 14px;
        /* 因为这个段落标签p没有width属性, 所以padding不会撑开盒子的宽度*/
        padding: 0 28px;
        margin-top: 30px;
    }
        
    

    快递牛,整体不错蓝牙可以说秒连,红米给力

    • 评价和详情制作
    .appraise {
        font-size: 12px;
        color: #b0b0b0;
        margin-top: 20px;
        padding: 0 28px;
    }
    
    .info {
        font-size: 14px;
        margin-top: 15px;
        padding: 0 28px;
    }
    
    .info h4 {
        display: inline-block;
        font-weight: 400;
    }
    
    .info span {
        color: #ff6700;
    }
    
    
    来自89757的评价

    Redmi AirDots真无线蓝...

    | 99.9元
    • 竖线细节制作
    a {
        color: #333;
        text-decoration: none;
    }
    
    .info em {
        font-style: normal;
        color: #ebe4e0;
        margin: 0 6px 0 15px;
    }
    
    
    
  • 相关问题:
    • 1.布局为什么用不同的盒子,能否只用div
      • 答:标签都是有语义的,合理的地方用合理的标签。例如:产品的标题就用h标签,大量的文字就用p标签。
    • 2.为什么用那么多类名
      • 答:类名就是给盒子起了一个名字,可以更好的找到这个盒子,选取盒子更容易,后期维护也更方便。
    • 3.到底用padding还是margin
      • 答:大部分情况下两个可以混用,两者各有优缺点,但是根据实际情况,总是有更简单的方法实现。

16.综合案例之快报模板

  • 网页布局分析如下:


    网页布局分析.png
  • 具体代码流程:

    • 快报模块头部制作
    * {
        padding: 0;
        margin: 0;
    }
    
    .box {
        width: 248px;
        height: 163px;
        border: 1px solid #ccc;
        margin: 100px auto;
    }
    
    .box h3 {
        height: 32px;
        border: 1px dotted #ccc;
        font-size: 14px;
        font-weight: 400;
        line-height: 32px;
        /* 由于h3标签没有设定width属性,因此padding-left不会撑开盒子 */
        padding-left: 15px;
    }
    
    

    品优购快报

  • 去掉li标签前的项目符号(小圆点)

    list-style: none;
    
    • 快报模块列表制作
    li {
    /* 去掉li前面的小圆点 */
        list-style: none;
    }
    
    .box ul li a {
        font-size: 12px;
        color: #666;
        text-decoration: none;
    }
    
    .box ul li a:hover {
        text-decoration: underline;
    }
    
    .box ul li {
        height: 23px;
        line-height: 23px;
        padding-left: 20px;
    }
    
    .box ul {
        margin-top: 7px;
    }
    
    
    

16.圆角边框[重点]

  • 在CSS3中,新增加了圆角边框样式,这样盒子模型就可以变成圆角了。
  • radius半径(圆的半径)原理:椭圆与边框的交集形成的圆角效果。
    圆角边框原理1.png

    圆角边框原理2.png
  • 语法格式:
    border-radius: 参数值;
    
  • 参数值可以是具体数值或百分比的形式;
  • 如果是正方形,想要设置为一个圆,把数值修改为高度或宽度的一半即可,或者直接写为50%;
  • 如果是矩形,设置为高度为一半就可以了
  • 该属性是一个简写属性,可以跟四个值,分别代表左上角、右上角、右下角、左下角
  • 分开写:border-top-left-radius、border-top-right-radius、border-bottom-right-radius、border-bottom-left-radius;

17.盒子阴影[重点]

  • 在CSS3中,新增加了盒子阴影,可以使用box-shadow属性为盒子增加阴影。
  • 语法格式:
    box-shadow: h-shadow v-shadow blur spread color inset;
    
盒子阴影属性值.png
  • 默认的是外阴影outset,但是不可以写这个单词,否则会导致阴影无效
  • 盒子阴影不占用空间,不会影响其他盒子排列

18.文字阴影

  • 在CSS3中,我们可以使用text-shadow属性将阴影应用于文本。
  • 语法格式:
    text-shadow: h-shadow v-shadow blur color;
    
文字阴影.png

19.资料下载

  • 笔记及代码,欢迎star,follow,fork......

你可能感兴趣的:(12 CSS中的盒子模型)