• css3 calc()属性介绍以及自适应布局使用方法


    前端知识

    Calc()介绍

    calc的英文是calculate的缩写,中文为计算的意思,是css3的一个新增的功能,用来只当元素的长度。比如说:你可以用calc()给元素margin、padding、border、font-size和width等属性设置动态值。为什么说是动态值呢?因为我们是使用来表示得到的值。不过calc()最大的好处就是用在流体布局上,可以通过calc()计算得到元素的宽度。

    Calc()的用处

    calc()能让你给元素的做计算,你可以给一个div元素,使用百分比、em、px和rem单位值计算出其宽度或者高度,比如说“calc(50%+2em)”,这样我们就不用考虑元素DIV的宽度值到底是多少,而把这个任务交由浏览器去计算。

    Calc()语法

    calc()语法很简单,使用数学表达式来表示就可以了,就像我们以前学习的加(+)、减(-)、乘(*)、除(/)一样,如下:

    .elm {
    
         width: calc(expression);
    
    }

    其中”expression”是一个表达式,用来计算长度的表达式。

    Calc()的运算规则

     DIV+CSS自适应布局

    1、高度自适应布局

      原理:把每个模块设置为绝对定位,然后设置中间自适应的模块的top和bottom属性的值分别为头部和底部模块的高,然后中间模块的高度就自适应。

    html代码如下:

    <body>
            <div class="top">
                120px
            </div>
            <div class="main">
                自适应
            </div>
            <div class="bottom">
                120px
            </div>
    </body>
    

     css代码如下:

     

    .top{
         100%;
        height: 120px;
        position: absolute;
        background-color: greenyellow;
        
    }
    .main{
        position: absolute;
         100%;
        top: 120px;
        bottom: 120px;
        background-color: azure;
        height: auto;
    }
    .bottom{
        position: absolute;
        bottom: 0;//别漏了
         100%;
        height: 120px;
        background-color:greenyellow ;
    }
    

    2、宽度自适应

    宽度自适应有三种方法:分别是绝对定位;利用margin,中间模块先渲染;自身浮动。

    1)、用绝对定位来设置宽度自适应布局,原理为:针对自适应模块使用绝对定位,再把left和right设置为左右两列的宽,其实原理和高度自适应的原理是一样的,另外左右两列分别左右浮动。

    html代码:

    <body>
            <div class="left">
                200px
            </div>
            <div class="main">
                自适应
            </div>
            <div class="right">
                200px
            </div>
    </body>
    

    css代码:

    html,
    body {
        margin: 0;
        height: 100%;
        padding: 0;
        font-size: 30px;
        font-weight: 500;
        text-align: center;
    }
    
    .left,
    .right {
         200px;
        display: inline;
        height: 100%;
        background-color: greenyellow;
    }
    
    .left {
        float: left;
    }
    
    .right {
        float: right;
    }
    
    .main {
        position: absolute;
        left: 200px;
        right: 200px;
        height: 100%;
        background-color: azure;
        display: inline;
    }
    

    2)、中间一列优先渲染的自适应三列布局,优先渲染(加载)的关键:内容在html里面必须放在前面。自适应的div必须放在left和right前面且包含在一个父div里。父div,left和right模块都向左浮动,然后对自适应的div(就是父div里的子div)设置margin:0  200px,然后对left的margin-left的属性值设置为100%的负数,就是margin-left:-100%;对right的margin-left的属性值设置为自身宽度的负数,就是margin-left:-200px。

    注:自适应的div必须放在left和right前面且包含一个父div里。

    html代码:

    <body>
            <div class="main"> <!--看清楚,这里用一个父div包住-->
                <div class="content">
                    自适应
                </div>
            </div>
            <div class="left">
                200px
            </div>
            <div class="right">
                200px
            </div>
    </body>
    

    css代码:

    html,
    body {
        margin: 0;
        height: 100%;
        padding: 0;
        font-size: 30px;
        font-weight: 500;
        text-align: center;
    }
    
    .main {
         100%;
        height: 100%;
        float: left;
    }
    
    .main .content {
        margin: 0 200px;
        background-color: azure;
        height: 100%;
    }
    
    .left,
    .right {
         200px;
        height: 100%;
        float: left;
        background-color: greenyellow;
    }
    
    .left {
        margin-left: -100%; //important
    }
    
    .right {
        margin-left: -200px; //important
    }
    

    3)、自身浮动,原理:中间列设置margin属性,就是把左右列分别左右浮动。

    注:使用这个方法布局自适应的话,必须把自适应的那一列在html中放在left和right后面。

    html代码:

    <body>        
            <div class="left">
                200px
            </div>
            <div class="right">
                200px
            </div>
            <div class="main">
                自适应
            </div>
    </body>
    

    css代码:

    html,
    body {
        margin: 0;
        height: 100%;
        padding: 0;
        font-size: 30px;
        font-weight: 500;
        text-align: center;
    }
    .main {
        margin: 0 200px;
        height: 100%;
        background-color: azure;
    }
    .left,
    .right {
        width: 200px;
        height: 100%;
        background-color: greenyellow;
    }
    .left {
        float: left;
    }
    .right {
        float: right;
    }
  • 相关阅读:
    mybatis逆向工程
    fastdfs搭建和使用
    solr学习笔记
    自己搭建anki服务器
    redis总结
    java基础——队列
    遍历文件夹下的文件,并且获取文件名字
    xls到xml
    xls文件导入数据库
    PyCharm怎样添加Qt designer
  • 原文地址:https://www.cnblogs.com/Luckyyan/p/10722196.html
Copyright © 2020-2023  润新知