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

Posted luckyyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css3 calc()属性介绍以及自适应布局使用方法相关的知识,希望对你有一定的参考价值。

前端知识

Calc()介绍

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

Calc()的用处

calc()能让你给元素的做计算,你可以给一个div元素,使用百分比、em、px和rem单位值计算出其宽度或者高度,比如说“width: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
    width: 100%;
    height: 120px;
    position: absolute;
    background-color: greenyellow;
    

.main
    position: absolute;
    width: 100%;
    top: 120px;
    bottom: 120px;
    background-color: azure;
    height: auto;

.bottom
    position: absolute;
    bottom: 0;//别漏了
    width: 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 
    width: 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 
    width: 100%;
    height: 100%;
    float: left;


.main .content 
    margin: 0 200px;
    background-color: azure;
    height: 100%;


.left,
.right 
    width: 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;

 

以上是关于css3 calc()属性介绍以及自适应布局使用方法的主要内容,如果未能解决你的问题,请参考以下文章

CSS3中的calc()

2017年总结的前端文章——border属性的多方位应用和实现自适应三角形

前端CSS3弹性布局媒体查询实现响应式布局和自适应布局

七种实现左侧固定,右侧自适应两栏布局的方法

关于css3样式rem的自适应属性问题

处理移动端自适应布局的方法- calc()与vw