美文网首页
样式中的margin、padding、translate百分比问

样式中的margin、padding、translate百分比问

作者: easy_code | 来源:发表于2018-12-17 15:26 被阅读0次

    在我们写样式的时候,常用到百分比这个东西,有时候很好用,有时候稍一混乱,可就掉入自己挖的坑里了

    1、margin、padding的百分比

    结论:margin、padding的百分比是按照父元素的宽度来计算的

    我在页面上添加一个div.parent,并且添加了一个子元素div.child,样式代码如下

    
    .parent{
    
        width:400px;
    
        height:200px;
    
        background-color:beige;
    
        border:1px solid #ddd;
    
    }
    
    
    
    .child{
    
        width:200px;
    
        height:100px;
    
        background-color:orange;
    
        margin-left:50%;
    
        margin-top:50%;
    
    }
    
    

    然后浏览器打开页面:

    页面效果图

    我们会发现子元素的margin-top:50%;中的50%,竟然是按照父元素的width来计算的,不光margin如此,padding也是如此。

    2、transform之translate

    结论:transform中translate,如果传入百分比参数,计算是分别根据自身的宽高来进行的

    我们都知道在css3里面引入了transform的样式,他可以实现多种元素转换效果,已达到我们想要的界面效果,那么translate的百分比是根据谁来计算的,你有没有注意呢?

    同样的,我在页面上添加一个div.parent,并且添加了一个子元素div.child,这次我给子元素设置的transform样式,如下:

    
    .parent{
    
        width:400px;
    
        height:200px;
    
        background-color:beige;
    
        border:1px solid #ddd;
    
    }
    
    
    
    .child{
    
        width:200px;
    
        height:100px;
    
        background-color:orange;
    
        transform:translate(50%,50%);
    
    }
    
    

    页面的效果如下:

    页面效果图

    所以说,transform:translate(50%,50%);样式的效果是,相对于原来的位置,移动各自宽度和高度的50%,这个样式用在我们居中效果上是非常好的,只要与absolute结合使用,就可以实现子元素的居中效果,而不用知道子元素自身的宽和高,比如下面的代码:

    
    .parent{
    
        width:100vw;
    
        height:100vh;
    
        position:relative;
    
    }
    
    
    
    .child{
    
        width:200px;
    
        height:100px;
    
        position:absolute;
    
        top:50%;
    
        left:50%;
    
        transform:translate(-50%,-50%);
    
    }
    
    

    就是我们想要的弹窗效果了,页面效果图:


    弹窗效果

    相关文章

      网友评论

          本文标题:样式中的margin、padding、translate百分比问

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