• css 盒模型、box-sizing 学习笔记


    默认情况下,给元素设置的高度和宽度元素内容区的宽度和高度,给元素加padding 和 border ,元素的实际宽度和高度的计算方式是下面的两个公式:

    元素的宽度= 元素的内容区宽度 + 内边距宽度 + 边框宽度;

    元素的高度= 元素的内容区高度 + 内边距高度 + 边框高度;

    别人说过的话,你记住了,时间久了你就会忘记了,为了加深记忆,这里亲自验证,并记录下验证过程,方便下次复习使用。验证结论我们先给处一张标准的盒模型

     

    如上图盒模型示例:元素是绝对定位的,上右下左均是0px,内容宽度420px, 加上左右内边距各10px,加上左右边框 各10px,元素的宽是460px; 

    验证结论,我们给盒子加一个父盒子:

    1、设置宽度为420px,overflow设置为自动,子盒子的宽超出父盒子内容区的宽度,父盒子出现横向的滚动条;

    2、设置宽度为460px,overflow设置为自动,子盒子的宽度不会超出父盒子内容区的宽度,父盒子不出现横向的滚动条;

    如果以上两点成立,则结论是正确的。

    效果看下面两张图片:

     从上面的两张图上我们可以看出,我们的结论是正确的,即,元素的宽度= 元素的内容区宽度 + 内边距宽度 + 边框宽度;

    我们可以用同样的方法验证:元素的高度= 元素的内容区高度 + 内边距高度 + 边框高度;当然本人是亲自验证过的,这里不再给出高度的截图了,贴出源码,有兴趣的可以自行验证一下,加深记录。

    源码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <style type="text/css">
    
            *{
                margin: 0;
                padding: 0px;
            }
            html,body{
                height:100%;
                overflow: hidden;
            }
    
            #wrapper{
                height:100%;
                overflow: auto;
            }
    
            #demo-parent{
                position: absolute;
                top:0px;
                left:0px;
                bottom:0px;
                right:0px;
                margin: auto;
    
                background-color:  pink;
    
                width: 460px;
                height:250px;
                overflow: auto;
            }
    
            /*居中定位*/
            #demo{
                position: absolute;
                top:0px;
                left:0px;
                bottom:0px;
                right:0px;
                margin: auto;
    
    
                width: 420px;
                height:200px;
    
    
                font-family: "楷体";
                font-size: 24px;
                line-height: 40px;
                text-align: center;
    
                font-weight: bold;
                color: black;
    
                background-color: #cccccc;
                padding:10px;
                border: solid 10px #c3c3c3;
    
                /*box-sizing: border-box;*/
            }
        </style>
    </head>
    <body>
    <div id="wrapper">
        <div id="demo-parent">
            <div id="demo">
                红军不怕远征难,
                万水千山只等闲。
                五岭逶迤腾细浪,
                乌蒙磅礴走泥丸。
                金沙水拍云崖暖,
                大渡桥横铁索寒。
                更喜岷山千里雪,
                三军过后尽开颜。
            </div>
        </div>
    </div>
    </body>
    </html>

    一般情况下我们的UI设计的图片的宽高是包含边框和内边距的,那么我们程序员怎么设置元素内容区的宽度和高度呢,这里我们需要使用box-sizing设置。

    box-sizing,盒子大小,默认值是 content-box,效果就是我们上面证明的结论,为了解决我们上述提出的新问题,这里需要把box-sizing 的 属性值设置为 :border-box;

    效果如下图:即使文本的高度超出了子盒子内容区高度,出现了垂直滚动条,子盒子的实际宽度仍然为 420px;

  • 相关阅读:
    讨论下NOSQLDB使用场景的问题
    控制反转IOC与依赖注入DI dodo
    ASp.net中Froms验证方式 dodo
    SQL Server 2008阻止保存要求重新创建表的更改 dodo
    依赖注入容器Unity介绍 dodo
    mvc UrlHelper dodo
    ASP.NET MVC 使用TempData dodo
    ASP.NET MVC的生命周期与网址路由 dodo
    强制将IE,Chrome设置为指定兼容模式来解析 dodo
    LINQ to XML 常用操作(转) dodo
  • 原文地址:https://www.cnblogs.com/spqin/p/12949171.html
Copyright © 2020-2023  润新知