css中的百分比计算方法
来源:互联网 发布:破壁机原理 知乎 编辑:程序博客网 时间:2024/05/21 06:39
本文内容来源于http://www.ido321.com/1640.html
CSS支持多种单位形式,如百分比、px、pt、rem等,百分比和px是常用的单位,随着移动端和响应式的流行,rem、vh、vw也开始普遍使用。
今天在SegmentFault社区碰到了两个关于百分比计算的问题,一个是在translate
中使用百分比的时候,是相对于哪个DOM元素的大小计算的;另外一个是在padding
、margin
等中使用百分比时,百分比又是怎么转为px
的呢?
对于第一个,移动距离是根据自身元素的大小来计算的:
[The percentage] refer[s] to the size of the element’s box
例如:在不知道元素的宽度和高度的情况下,让元素水平垂直居中
创建类名为wrapper的div,并设置其样式
.wrapper { padding: 20px; background:orange; color:#fff; position:absolute; top:50%; left:50%; border-radius: 5px; -webkit-transform:translate(-50%,-50%); -moz-transform:translate(-50%,-50%); transform:translate(-50%,-50%);}
对于第二个,我认为percentage转px应该是浏览器根据css规定来完成的,但是具体怎么算呢?
Example 1: Margins
得到的offset如下:
然后,我又测试了padding
,原以为padding
的值会根据应用了该属性的相关元素来计算,但让我惊讶的是,padding
也是根据应用该属性的父元素的宽来计算的,跟margin
表现一致。(再插一句:当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的,元素竖向的百分比设定也是相对于容器的宽度,而不是高度。)
但有一个坑,上面都是对于未定位元素。好奇的我又很好奇,对于非静态定位元素的top
, right
, bottom
, 和left
的百分比值又怎么计算呢?
Example 2: Positioned Elements
得到的offset如下:
对于定位元素,这些值也是相对于父元素的,但与非定位元素不同的是,它们是相对于父元素的高而不是宽。
when the parent element does not have a height, then percentage values are processed as auto instead
虽然有点困惑,但只需要记住:对于margin
和padding
,百分比按照父元素的宽计算,对于定位元素,则按照父元素的高计算。
- css中的百分比计算方法
- CSS中的百分比(%)到底是谁的百分比?
- CSS 属性值中的百分比
- CSS中的line-height百分比
- css中的百分比单位详解
- css+div中的百分比自适应宽度格局
- MDX计算方法(百分比……)
- CSS 使用百分比布局
- div+css 百分比进度条
- CSS百分比布局
- css制定百分比宽度
- css margin,padding 百分比
- CSS 百分比 margin & padding
- css实现百分比进度条
- CSS 百分比 margin & padding
- CSS margin百分比
- css百分比问题
- MDX常见计算方法(百分比/分配/平均值/基于时间的计算)
- 文本域的设置
- Qt Question List
- OkHttp3几个简单的例子和在子线程更新UI线程的方法
- java继承,抽象类
- failed to obtain a cell from its dataSource
- css中的百分比计算方法
- PHD身边的时间陷阱
- Ubuntu 自己用的一些东西
- Unity中的DrawCall与NGUI原理
- UVa12108 代码短。。。。
- H5 缓存机制浅析 移动端 Web 加载性能优化
- C++ 创建windows 服务
- =、==、 ===的区别
- 恶补CSS的布局知识