css3 属性——calc()
其实在之前学习CSS3的时候,我并没有注意到有calc()这个属性,后来在看一个大牛的代码的时候看到了这个,然后就引发了后来的一系列的查找、学习,以及这篇博客的诞生。好了,废话不多说了,来干正事。
一.基本介绍
其实,calc()这个形式看起来就很容易让人想到Javascript里的函数,当然他不是js里的函数,但是他有着类似函数的功能,可以用来计算,括号里是一个表达式,通常用calc()来指定元素的长度,不管是width、height、border还是padding等都可以用他来指定。说白了,calc()就是css3的一个指定元素长度的属性,他的特殊之处在于他可以做计算,而且支持混合使用各种单位,比如%、px、em等。所以这个属性特别适用于那些自适应的布局。
兼容性:在IE9+、FF4.0+、Chrome19+、Safari6+都得到了较好支持(据说在使用时要加上供应商前缀,但是我测试了一下,不加也是可以用的),但是在移动端的支持不是很好。
二.基本用法
.element{
width:calc(expression);
}
其中,expression是一个用来计算长度的表达式,支持“+”,“-”,“*”,“/”运算符。
特别声明:表达式中有“+”,“-”运算符的,前后必须要有空格,例如 “width:calc(100% - 20px)”这种写法;而对于“*”,“/”并没有这种要求,但为了风格的统一,建议前后也要留空格。
三.来看一个例子
<div class="container">
<div class="box"></div>
</div>
加一些基本样式:
.container{
background:red;
width:300px;
}
.box{
background:skyblue;
width:100%;
height:200px;
}
在浏览器中的效果是这样的(因为.box的宽度是100%,所以完全遮住了.container元素):

像这种宽度设置的是100%,若在加上padding,或者border,就会将外层盒子撑破,就像下面这样:
.container{
background:red;
width:300px;
padding:20px 0;/*加这个padding是为了能看到这个元素,不被box全部遮住*/
}
.box{
background:skyblue;
width:100%;
height:200px;
padding:0 20px;
}
效果是这样的(盒子被撑破了):

对于这种情况,以及其他一些用百分比来指定长度的情况,用calc()就能避免这种错误,上面的例子可以写成下面这样:
.container{
background:red;
width:300px;
padding:20px 0;
}
.box{
background:skyblue;
width:90%; /*写给那些不支持calc()属性的浏览器*/
border:2px solid green;
padding:0 20px;
width:calc(100% - (20px + 2px) * 2); /*用100%减去左右两个20px的padding和2px的border*/
height:200px;
}
然后效果是这样的:

对于calc(),总结以下要点:
1.兼容性:在IE9+、FF4.0+、Chrome19+、Safari6+支持较好,移动端支持不理想;
2.表达式支持加、减、乘、除运算,同时也支持单位的混合使用(%、px、em等);
2.表达式中有“+”,“-”运算符的,前后必须要有空格。
更多博客,请移步:个人小站
css3 属性——calc()的更多相关文章
- css3的calc属性不生效问题
css3的 calc:计算属性.由于自己做的项目中这个属性不常用到,偶尔用一次还没效果. 后来研究了下是因为运算符两边没加空格. 错误示例:.content{width:calc(100%-50px) ...
- css3的 calc属性无效问题解决
css3的 calc:计算属性. 运算符两边需要加空格,才有效. 错误示例:.mystyle{width:calc(100%-25px)}这样是不生效的 运算符"+ - * /"左 ...
- css3中样式计算属性calc()的使用和总结
calc的介绍 在css3样式中有一个类似与函数的计算属性calc(),它主要用于指定元素的长度,无论是border.margin.pading.font-size和width等属性都可以使用calc ...
- CSS3的calc()使用
CSS3的calc()使用 calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度.比如说,你可以使用calc()给元素的border.margin.pad ...
- CSS的单位及css3的calc()及line-height百分比
锚点:css中百分比减去固定元素 单位介绍 说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着 ...
- CSS中新属性calc()
CSS3的calc()使用 原文: http://www.w3cplus.com/css3/how-to-use-css3-calc-function.html © w3cplus.com calc( ...
- 转载文章CSS3的calc()使用
calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我,说CSS3中有一个属性 ...
- CSS3 的calc()方法的使用
calc()简单介绍 calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我, ...
- 【转】CSS3的calc()使用——精缩版
问题:在制作页面的时候,总会碰到有的元素是100%的宽度.如果元素宽度是100%时,只要在元素中添加了border,padding,margin任何一值,都将会把元素盒子撑破(标准模式下,除IE怪异模 ...
随机推荐
- ThinkPHP简单结构介绍!
thinkPHP简单结构介绍: application : 应用 extend:扩展 扩展内库 public:入口文件 index.php 在里面 runtime:缓存文件(里面的文件可以随便删除) ...
- 三维凸包求重心到面的最短距离(HDU4273)
http://acm.hdu.edu.cn/showproblem.php?pid=4273 Rescue Time Limit: 2000/1000 MS (Java/Others) Memo ...
- 从零打造在线网盘系统之Hibernate配置O/R映射
欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...
- 170515、mybatis批量操作
//Java代码 public void batchAdd(){ SqlSession sqlSession = SqlSessionFactoryUtil.getSqlSession(); Stud ...
- [EF]vs15+ef6+mysql这个问题,你遇到过么?
写在前面 因为最近用mysql比较多,所以想了解下ef+mysql的内容,发现ef连接mysql数据库,还有那么一段路折腾.折腾到最后,发疯了. 步骤 这里采用db first的方式来使用ef. 通过 ...
- 利用Dockerfile构建一个基于CentOS 7镜像
利用Dockerfile构建一个基于CentOS 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像. Dockerfile内容如下: FROM centosMAINTA ...
- Python菜鸟之路:Django Admin后台管理功能使用
前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin ...
- 约会安排---hdu4553(线段树,麻烦的区间覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4553 算是poj3667的加强版,建立两颗线段树,一个是DS区间,另一个是NS区间.那么根据题意, ...
- Linux eventfd分析
2017-07-20 eventfd在linux中是一个较新的进程通信方式,和信号量等不同的是event不仅可以用于进程间的通信,还可以用户内核发信号给用户层的进程.eventfd在virtIO后端驱 ...
- Python:笔记(6)——正则表达式
Python:笔记(6)——正则表达式 re模块 re模块用于在字符串中执行基于正则表达式模式的匹配和替换. 使用原始字符串 正则表达式使用 \ 对特殊字符进行转义,比如,为了匹配字符串 ‘pytho ...