css中cale()函数的使用

问题分析

html

<div class="wrap"><div class="box">测试</div>
</div>

css:

.wrap{width: 300px;height: 300px;border: 1px solid #000;margin: 10px auto;padding: 10px;background-color: #666;
}
.box{width: 100%;background-color: #f00;height: 100%;padding: 10px;border: 5px solid #0f0;margin: 20px;
}

当box元素的宽度为100%;该元素的padding,border,margin的值都会导致box超出wrap元素

解决办法1:box-sizing:border-box;

可以把border和padding包进去,但是没法把margin包进去

html:

<div class="wrap"><div class="box box-size">测试</div>
</div>

css:

.box-size{box-sizing: border-box;
}

解决办法2:利用calc()

calc是calculate计算的简写,是css3新增的功能,用来指定元素的长度,是一个函数,通过计算算出来的,经常用于流动布局

语法

.elm{width:-webkit-calc(ecpression)width:-moz-calc(ecpression)width:calc(ecpression)
}

html:

<div class="wrap"><div class="box box-calc">测试</div>
</div>

css:

width:90%;
width: -moz-calc(100% - (10px + 5px + 20px)*2);
width: -webkit-calc(100% - (10px + 5px + 20px)*2);
width: calc(100% - (10px + 5px + 20px)*2);

calc()的运算规则

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

浏览器的兼容性

浏览器对calc()的兼容性还算不错,在IE9+、FF4.0+、Chrome19+、Safari6+都得到较好支持,同样需要在其前面加上各浏览器厂商的识别符,
不过可惜的是,移动端的浏览器还没仅有“firefox for android 14.0”支持,其他的全军覆没。

以下是一个自适应布局示例

html

<div class="wrapper"><div id="header"><h1>CSS3 calc() Function</h1></div><div id="main"><h1>Far far away…</h1><p>Far far away, behind the word mountains…</p></div><div id="accessory"><ul><li><a href="#">Far far away…</a></li><li><a href="#">Separated they live…</a></li><li><a href="#">A small river named…</a></li></ul></div><div id="footer">Visit the article…</div></div>

css

body {background: #E8EADD;color: #3C323A;padding: 20px;
}
.wrapper {width: 1024px; /* Fallback for browsers that don't support the calc() function */width: -moz-calc(100% - 40px);width: -webkit-calc(100% - 40px);width: calc(100% - 40px);margin: auto;
}
#header {background: #f60;padding: 20px;width: 984px;/*Fallback for browsers that don't support the calc() function*/width: -moz-calc(100% - 40px);width: -webkit-calc(100% - 40px);width: calc(100% - 40px);
}
#main {border: 8px solid #B8C172;float: left;margin-bottom: 20px;margin-right: 20px;padding: 20px;width: 704px; /* Fallback for browsers that don't support the calc() function */width: -moz-calc(75% - 20px * 2 - 8px * 2);width: -webkit-calc(75% - 20px * 2 - 8px * 2);width: calc(75% - 20px * 2 - 8px * 2);
}
#accessory {border: 8px solid #B8C172;float: right;padding: 10px;width: 208px; /* Fallback for browsers that don't support the calc() function */width: -moz-calc(25% - 10px * 2 - 8px * 2 - 20px);width: -webkit-calc(25% - 10px * 2 - 8px * 2 - 20px);width: calc(25% - 10px * 2 - 8px * 2 - 20px);
}
#footer {clear:both;background: #000;padding: 20px;color: #fff;width: 984px;/* Fallback for browsers that don't support the calc() function */width: -moz-calc(100% - 40px);width: -webkit-calc(100% - 40px);width: calc(100% - 40px);
}

下面是一个三栏自适应个布局,开发中会经常出现,下面是一种实现方式

html

<div class="wrapper"><ul id="js_list"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li></ul>
</div>
<p>改变ul的transform: translateY(-0px);可以使内容上下滑动</p>

css

*{margin: 0;padding: 0;
}
.wrapper{width: 100%;height: 205px;margin: 20px auto;background-color: #eee;border: 1px solid #666;overflow: hidden;
}
ul{list-style: none;overflow: hidden;margin-bottom: -5px;transform: translateY(-0px);transition: all 0.6s ease-in-out;
}
ul li{float: left;background: #999;color: #333;height: 100px;text-align: center;font-size: 16px;line-height: 100px;width: calc((100% - 5px*2)/3);margin-right: 5px;margin-bottom: 5px;}
ul li:nth-child(3n+3){margin-right: 0;}
p{width: auto;height: 20px;
}

这是一个完整的例子,点击我的github

转载于:https://www.cnblogs.com/bijiapo/p/5435834.html

css中cale()函数的使用相关推荐

  1. HTML5圆形线性渐变,css中linear-gradient()函数是干什么的?实现线性渐变的圆形边框(代码)...

    在前端开发过程中,有时会利用linear-gradient实现各种各样的效果,本章给大家介绍css中linear-gradient()函数是干什么的?实现线性渐变的圆形边框(代码).有一定的参考价值, ...

  2. min-width、max-width属性中min-content、max-content的含义,css中minmax()用法、1fr单位的含义----使页面具有相应性的属性以及属性值

    min-width.max-width属性中min-content.max-content的含义,css中minmax()用法.1fr单位的含义 min-width 表示容器的最小宽度 max-wid ...

  3. css除法,css中能加减乘除吗

    css中能加减乘除.在css中可以使用calc()函数来进行"加减乘除"四则运算,它允许使用"+"."-"."*".&q ...

  4. cubic-bezier_带CSS中的示例的cube-bezier()函数

    cubic-bezier Introduction: 介绍: How many times have we come across the word function? Well, it would ...

  5. 前端如何设置背景颜色的透明度 css中的 rgba() 函数详解 :background-color: rgba(255,192,203,0.3)

    目录 前言 rgba() 函数 详解 再分享一个小技巧哈哈哈 前言 今天在开发移动端的时候感觉没背景颜色有点丑,再加上自己做的是蛋糕app,觉得暖色应该会很好看,于是就用了这行代码 backgroun ...

  6. CSS中调用JS函数和变量

    在CSS来调用JS程序. 这个技术是网络安全里的,叫做CSS跨站. 我们知道CSS里是可以控制某些HTML元素的属性的,譬如background-image等等,而在URL里添加Javascript: ...

  7. html中的函数怎么显示变量,css - 原生变量及使用函数 var()

    零.序言 前两天在逛 blog 的时候看见一些内联样式新奇的写法时很纳闷,虽然说不上多么熟练,但是从来没见过  --color: brown 这样的写法,百度一番之后仍然没啥头绪,今天偶然看到一篇文章 ...

  8. css中默认值的灰色rgb_rgb()函数以及CSS中的示例

    css中默认值的灰色rgb Introduction: 介绍: Functions and properties go hand in hand while developing a website ...

  9. react中纯函数_如何在纯React中创建电子邮件芯片

    react中纯函数 by Andreas Remdt 由Andreas Remdt 如何在纯React中创建电子邮件芯片 (How to create email chips in pure Reac ...

  10. web前端培训:CSS中单行文本溢出显示省略号的方法

    CSS中单行文本溢出显示省略号的方法你知道吗?在web前端技术学习中,这个问题其实是属于老生常谈了,因为css单行文本的应用是非常频繁的,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没 ...

最新文章

  1. 建模揭秘----构建用户模型
  2. js 兼容event.target
  3. centOS 6 和centOS 7 防火墙指令
  4. 大道至简第七章读后感
  5. 如何解决 MacBook Pro Touch ID不起作用?
  6. Unity基础——List的用法
  7. 为什么产品经理总被吐槽是”水货“
  8. linux区分三种用户角色,Linux用户角色划分
  9. Fast is better than free: Revisiting adversarial training
  10. 南澳大学计算机科学专业学费,澳洲南澳大学生活费
  11. Java小学算术10以内的加减乘除运算
  12. Julia 构建对角矩阵 diag matrix
  13. linux操作系统版本_史上最全的Linux 各个发行版本的优点、缺点、发展史介绍
  14. 云安全:Cloudstack云平台搭建详解及经验总结
  15. 北京2008年地铁规划收集
  16. 路飞学城出品python全栈工程师学习感受
  17. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术
  18. OPPO R9m刷机包_OPPO R9m线刷包救砖包教程下载
  19. Java 应用性能监控系统 JavaMonitor
  20. 多个微信怎么管理更高效

热门文章

  1. 《初等数论及其应用》第三章 素数和最大公因子
  2. 2020算法提前批_2020年网页设计的极大沉默,算法可理解性的ni灭
  3. 墨刀怎么注册_墨刀的使用
  4. 六西格玛dfss_实施六西格玛设计(DFSS)的主要工具有哪些?
  5. 2016.7.14 noip2014模拟题 LGTB的日常~(自己乱安的名字hhh
  6. java date 年龄_Java 根据年月日精确计算年龄
  7. 设计模式04—工厂模式
  8. 《outliers》/《异类》读后有所思
  9. 笃情开源:我和 Apache DolphinScheduler 社区的故事
  10. kali linux系统下安装 VMware Tools