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

时间:2024-07-31 13:04:50

前端知识

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:;
height: 100%;
padding:;
font-size: 30px;
font-weight:;
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;
}