美文网首页
CSS-盒子模型

CSS-盒子模型

作者: 哎呦呦胖子斌 | 来源:发表于2018-09-09 12:12 被阅读0次

    下面这个图很好的解释了两种盒子模型。


    image.png

     可以看到,在设置width的时候,标准的盒子模型是不包括border和padding的,而在IE浏览器中是包括这两项的。

    border

    border:width style color
    style属性
    none 没有边框
    solid 边框为实线
    dashed 边框为虚线
    dotted 边框为点线
    double 边框为双实线
    表格的细线边框合并:border-collapse:collapse
    圆角边框(CSS3):border-radius:左上角 右上角 右下角 左下角

    padding

    可以分开设置:padding-left padding-top padding-right padding-bottom
    也可以放在一起设置:padding:10px 20px 30px 40px;
    顺序为↑→↓←
    如果设置1个值,表示四个方向是同一个值
    如果设置两个值,表示上下 右左
    如果设置三个值,表示上 右左 下

    margin

    设置方法和padding相同,可以分开设置也可以放在一起设置。
    行内元素只有左右外边距,没有上下外边距。在ie6等低版本中是没有内边距的。
    外边距可以实现盒子居中,必须满足两个条件:
    1. 必须是块级元素
    2. 盒子必须指定宽度
    然后设置左右外边距为auto,就可以实现水平居中
    清除元素默认内外边距
    padding: 0;
    margin: 0;
    外边距合并
    场景一:
     使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。当上下相邻的两个块元素相遇时,如果上面的元素有margin-bottom,下面的元素有margin-top,则他们之间的垂直间距不是margin-bottom和margin-top的和,而是取两者中的较大的值作为两个元素的边距,这种现象称为相邻块元素垂直外边距的合并。
    解决方法:
    避免!(如此羞涩的解决方案)
    场景二:
     对于两个嵌套关系的块元素,如果父元素没有padding-top和border,则父元素的margin-top会与子元素的margin-top发生合并,合并后的外边距为两者中的较大者。
    解决方法:
    1. 为父元素设定1px的border或padding-top
    2. 为父元素添加overflow:hidden

    注意事项

    1. 宽度属性width和高度属性height仅适用于块级元素,对行内元素无效(img和input除外)
    2. 计算盒子模型的总高度时,应考虑上下两个盒子垂直外边距合并的情况
    3. 如果是一个盒子没有给定宽度或高度或继承父类的宽度或高度,则padding不会影响本盒子的大小。

    <div id="p">
          <div id="s">啦啦啦</div>
    </div>
    
    #p{
        background-color: pink; 
        width: 200px;
        height: 200px;
        margin-top: 100px;
        border: 1px red solid;
    }
    
    #s{
        background-color: blue;
        /* width: 100px;
        height: 100px; */
        /* margin: 30px; */
        padding:20px;
    }
    
    设置前 image.png
    设置后 image.png
    中间蓝色没有设置宽高,设置了padding后并没有撑大宽度

    CSS3盒子

    可变的盒子

    box-sizing:content-box padding和border都会撑开盒子,改变盒子的宽度高度
    box-sizing:border-box padding和border都不会撑开盒子,不会改变盒子的宽度,盒子的内容会相应缩小

    <div id="content">content-box</div>
    <div id="border">border-box</div>
    
    #content {
        width: 100px;
        height: 100px;
        background-color: pink;
        padding: 20px;
        border: 10px red solid;
        box-sizing: content-box;
    }
    
    #border {
        width: 100px;
        height: 100px;
        background-color: purple;
        padding: 20px;
        border: 10px red solid;
        box-sizing: border-box;
    }
    
    image.png

    盒子阴影

    box-shadow:水平位置 垂直位置 模糊距离 阴影尺寸 阴影颜色 内/外阴影
    h-shadow 必选,水平阴影的位置,允许负值
    v-shadow 必选,垂直阴影的位置,允许负值
    blur 可选,模糊距离
    spread 可选,阴影的尺寸(影子大小)
    color 可选,阴影的颜色
    inset 可选,将外部阴影改为内部阴影(外阴影为默认属性,不需要写,没有outset属性)

    相关文章

      网友评论

          本文标题:CSS-盒子模型

          本文链接:https://www.haomeiwen.com/subject/ahgrgftx.html