zoukankan      html  css  js  c++  java
  • margin的用法

    margin塌陷问题

    当时说到了盒模型,盒模型包含着margin,为什么要在这里说margin呢?因为元素和元素在垂直方向上margin里面有坑。

    我们来看一个例子:

    html结构:

    <div class="father">
        <div class="box1"></div>        
        <div class="box2"></div>
    </div>

    css样式:

    复制代码
           *{
                padding: 0;
                margin: 0;
            }
            .father{
                 400px;
                overflow: hidden;
                border: 1px solid gray;
            }
            .box1{
                 300px;
                height: 200px;
                background-color: red;
                margin-bottom: 20px;}
            .box2{
                 400px;
                height: 300px;
                background-color: green;
                margin-top: 50px;
            }
    复制代码

    当给两个标准流下兄弟盒子 设置垂直方向上的margin时,那么以较大的为准,那么我们称这种现象叫塌陷。没法解决,我们称为这种技巧叫“奇淫技巧”。记住这种现象,在布局垂直方向盒子的时候主要margin的用法。

    当我们给两个标准流下的兄弟盒子设置浮动之后,就不会出现margin塌陷的问题。

    margin:0 auto;

    复制代码
          div{
                 780px;
                height: 50px;
                background-color: red;
                /*水平居中盒子*/
                margin: 0px auto;
                            /*水平居中文字*/
                text-align: center;
    
            }
        
    复制代码

    当一个div元素设置margin:0 auto;时就会居中盒子,那我们知道margin:0 auto;表示上下外边距离为0,左右为auto的距离,那么auto是什么意思呢?

    设置margin-left:auto;我们发现盒子尽可能大的右边有很大的距离,没有什么意义。当设置margin-right:auto;我们发现盒子尽可能大的左边有很大的距离。当两条语句并存的时候,我们发现盒子尽可能大的左右两边有很大的距离。此时我们就发现盒子居中了。

    另外如何给盒子设置浮动,那么margin:0 auto失效。

    使用margin:0 auto;注意点:

    1.使用margin: 0 auto;水平居中盒子必须有width,要有明确width,文字水平居中使用text-align: center;

    2.只有标准流下的盒子 才能使用margin:0 auto; 

    当一个盒子浮动了,固定定位,绝对定位(后面会讲),margin:0 auto; 不能用了

    3.margin:0 auto;居中盒子。而不是居中文本,文字水平居中使用text-align: center;

    另外大家一定要知道margin属性是描述兄弟盒子的关系,而padding描述的是父子盒子的关系

    善于使用父亲的padding,而不是margin

    实现下图的内容

    代码

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    
        <style>
            *{
                padding: 0;
                margin:0;
            }
            .box2{
                width:400px;
                height:550px;
                background-color: darkgreen;
                padding-top: 50px;  /*让你大盒子的内容距离顶部50*/
            }
            .box1{
                width:100px;
                height:200px;
                background-color: red;
                margin-top:50px; /*让你的盒子距离边框的距离*/
                float:left; /*让盒子嵌入大盒子里面*/
                /*padding-bottom: 50px;*/
            }
        </style>
    </head>
    <body>
    <div>
        <div class="box1"></div>
        <div class="box2"></div>
    </div>
    </body>
    </html>
    善用padding和margin

    因为父亲没有border,那么儿子margin-top实际上踹的是“流” 踹的是行,所以父亲掉下来了,一旦给父亲一个border发现就好了。

    那么问题来了,我们不可能在页面中无缘无故的去给盒子加一个border,所以此时的解决方案只有一种。就是使用父亲的padding。让子盒子挤下来。

  • 相关阅读:
    Js获取时间,当前,一周前,一月前的时间,时间戳转换,时间格式化,日期格式化
    echarts图随窗口大小的变化而变化
    Vue中使用Google地图插件
    element el-progress渐变色进度条
    Vue中使用mixins
    CSS3 使用 calc() 计算高度 vh px
    element-ui饿了么框架中导航菜单中箭头方向问题
    Vue中使用QRcode.js生成二维码---qrcodejs2
    鼠标经过时显示样式的两种方法
    element 按钮样式:确认按钮发布后样式发生改变
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/9085041.html
Copyright © 2011-2022 走看看