巧用CSS3的calc()宽度计算做响应模式布局的方法


Posted in HTML / CSS onMarch 22, 2018

今天浏览这个http://www.sitepoint.com站时,因为好奇看了下人家写的代码,结果发现了这行代码,

巧用CSS3的calc()宽度计算做响应模式布局的方法

于是就研究了一下,calc()从字面我们可以把他理解为一个函数function。其实calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度。比如说,你可以使用calc()给元素的border、margin、pading、font-size和width等属性设置动态值。为何说是动态值呢?因为我们使用的表达式来得到的值。不过calc()最大的好处就是用在流体布局上,可以通过calc()计算得到元素的宽度。

calc()能做什么?

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

calc()语法

calc()语法非常简单,就像我们小时候学加 (+)、减(-)、乘(*)、除(/)一样,使用数学表达式来表示:

width: calc(expression);

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

calc()的运算规则

calc()使用通用的数学运算规则,但是也提供更智能的功能:

  1. 使用“+”、“-”、“*” 和 “/”四则运算;
  2. 可以使用百分比、px、em、rem等单位;
  3. 可以混合使用各种单位进行计算;
  4. 表达式中有“+”和“-”时,其前后必须要有空格,如”widht: calc(12%+5em)”这种没有空格的写法是错误的;
  5. 表达式中有“*”和“/”时,其前后可以没有空格,但建议留有空格。

浏览器的兼容性

巧用CSS3的calc()宽度计算做响应模式布局的方法

我们来个例子,我们做一个三列并排的模块,宽度按百分比、有padding值、有border值、还有margin-right,而且这三个值是px,

li{
float:left;

width:33.3333%;
height:50px;

padding:10px;
margin-right:10px;

background:#FF6666;
border:5px solid #DAC8A7;
}

效果图:

巧用CSS3的calc()宽度计算做响应模式布局的方法

它是不会好好并列的,在这种情况下就不好算了,就算算出来也有那么一点误差,不是吗?现在我们就用到了calc(),

li{
float:left;

//width:33.3333%;
height:50px;

padding:10px;
margin-right:15px;

background:#FF6666;
border:5px solid #DAC8A7;

width:calc(33.3333% - (10px + 5px) * 2 - 15px )

}

意思是(width-(padding+border)*2-margin)

现在可以并排了

巧用CSS3的calc()宽度计算做响应模式布局的方法

好了,到这就告一段络了,再稍微优化一下左右边15px的空距,让两边都挨边。就在父级上加个margin-right:-15px,OK 搞定,

现在拿这个去做响应模式应该很方便了,

还有一篇外国人写的具体如何做大家有兴趣的可以了解一下http://osvaldas.info/imitating-calc-fallback-fixed-width-sidebar-in-responsive-layout

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3 box-sizing属性使用参考指南
Jan 08 HTML / CSS
CSS3 @font-face属性使用指南
Dec 12 HTML / CSS
CSS3 按钮边框动画的实现
Nov 12 HTML / CSS
html+css实现自定义图片上传按钮功能
Sep 04 HTML / CSS
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
Dec 13 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
Jan 02 HTML / CSS
5 个强大的HTML5 API 函数推荐
Nov 19 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
Mar 27 HTML / CSS
canvas生成带二维码海报的踩坑记录
Sep 11 HTML / CSS
canvas绘制太极图的实现示例
Apr 29 HTML / CSS
5个HTML5的常用本地存储方式详解与介绍
Mar 27 HTML / CSS
html+css合并表格边框的示例代码
Mar 31 HTML / CSS
利用css3径向渐变做一张优惠券的示例
Mar 22 #HTML / CSS
css3 边框、背景、文本效果的实现代码
Mar 21 #HTML / CSS
利用CSS3 动画 绘画 圆形动态时钟
Mar 20 #HTML / CSS
css3 矩阵的使用详解
Mar 20 #HTML / CSS
CSS3 :default伪类选择器使用简介
Mar 15 #HTML / CSS
css3编写浏览器背景渐变背景色的方法
Mar 05 #HTML / CSS
CSS3下的渐变文字效果实现示例
Mar 02 #HTML / CSS
You might like
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
php生成html文件方法总结
2014/12/01 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python转换时间的图文方法
2019/07/01 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
优秀教师感人事迹材料
2014/05/04 职场文书
小学生植树节活动总结
2014/07/04 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
寻找成龙观后感
2015/06/12 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
python数字类型和占位符详情
2022/03/13 Python