巧用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实现银灰色动画效果的导航菜单代码
Sep 01 HTML / CSS
CSS3 分类菜单效果
May 27 HTML / CSS
CSS3制作皮卡丘动画壁纸的示例
Nov 02 HTML / CSS
HTML5使用Audio标签实现歌词同步的效果
Mar 17 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
Jan 09 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
Jan 14 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
May 07 HTML / CSS
HTML页面中添加Canvas标签示例
Jan 01 HTML / CSS
canvas学习和滤镜实现代码
Aug 22 HTML / CSS
HTML5 图片预加载的示例代码
Mar 25 HTML / CSS
css3 filter属性的使用简介
Mar 31 HTML / CSS
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
Apr 07 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
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
php中使用sftp教程
2015/03/30 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
Python列表对象实现原理详解
2019/07/01 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
Python线程threading模块用法详解
2020/02/26 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
幼儿师范毕业生自荐信
2013/11/09 职场文书
实习生自荐信范文
2013/11/13 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
如何用python绘制雷达图
2021/04/24 Python
python pygame入门教程
2021/06/01 Python
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers