在前端开发工作过程中曾碰到这样一问题:

.parent{ width:400px; height:300px; border:1px solid #ccc; }

.child{ margin:10%; background-color: red; }

问这类名为child元素在网页中显示的高宽?

答案:width:320px;height:160px;

如果您的答案正确,那说明您CSS功底比较强,如果您也不知所以然,希望这篇博文对您有所帮助

CSS中长度单位类型

css中长度单位有很多,可谓五花八门,但可分为这两类:

绝对长度单位

彼此固定,不会因为其他元素的尺寸变化而变化。主要有cm mm Q in pc pt px

相对长度单位

指定相对于另一长度的长度。主要有em ex ch rem %和可视区百分比长度单位 vm vh vmin vmax

由于各种单位比较多,我们这里只介绍常用的一些单位,其他单位的详细情况可查询W3C规范

px

px单位名称为像素,像素是固定大小的单元,用于屏幕媒体(即在电脑屏幕上读取)。一个像素等于电脑屏幕上的一个点 (是你屏幕分辨率的最小分割)。许多网页设计师在web文档使用像素单位以生产浏览器渲染的像素完美呈现的网站。

像素单位的一个问题是在IE下无法用浏览器字体缩放的功能(影响不是很大)。

%

百分比是一个相对长度单位,相对于包含块(containing block)的高宽或字体大小。

关于包含块(containing block)的概念,不能简单地理解成是父元素。

如果是静态定位和相对定位,包含块一般就是其父元素。

如果是绝对定位的元素,包含块应该是离它最近的 position为非static属性的祖先元素。

如果是固定定位的元素,它的包含块是视口(viewport)。

具体可以参考 W3Help。

在使用百分比单位的时候,最让人困惑的就是不清楚它到底是相对于谁计算的,下面将详细介绍列出

相对于包含块的宽度

left、right、

width、max-width、min-width、

margin、padding、

text-indent;

相对于包含块的高度

top、 bottom、

height、 max-height、 min-height;

相对于自身的高宽

border-radius、background-size、transform: translate()、transform-origin、zoom(css3缩放)、clip-path

相对于自身的字体大小

line-height

相对于自身的行高(不常用)

vertical-align

相对于继承字体大小

font-size

特殊对象

背景定位中的百分比 background-position 分别设置水平方向和垂直方向上的两个值,如果使用百分比,那么百分比值会同时应用于元素和图像。例如 50% 50% 会把图片的(50%, 50%)这一点与框的(50%, 50%)处对齐,相当于设置了 center center。同理 0% 0% 相当于 left top,100% 100% 相当于 right bottom。

filter(css3滤镜,不常用) filter: none | blur(%) | brightness(%) | contrast(%) | drop-shadow(%) | grayscale(%) | hue-rotate(%) | invert(%) | opacity(%) | saturate(%) | sepia(%) | url(%);

百分比的继承

如果某个元素设置了百分比的属性,则后代元素继承的是计算后的值。例如:

p { font-size: 10px;line-height: 120%; }

那么p的子元素继承到的值是 line-height: 12px,而不是 line-height: 120%。

em

em是相对字体长度单位。如果用于font-size属性本身,则是相对于父元素的font-size。若用于其他属性(width,height),则是相对于本身元素的font-size。国外使用比较多;

em单位有如下特点:

em的值并不是固定的;

em会继承父级元素的字体大小。

我们知道任意浏览器的默认字体大小都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

em是继承父元素的字体大小,可是当父元素字体大小改变时,又得重新计算了,这不怎么方便,还好rem解决了这个问题

rem

rem是CSS3新增的一个相对字体长度单位,只相对根元素即html元素字体大小

所以我们只要在html标签上设置字体大小为标准,文档中的字体大小都会以此为参照

html{font-size:62.5%; }

body{font-size:12px;font-size:1.2rem ;}

p{font-size:14px;font-size:1.4rem;}

兼容性:

IE 9 & IE 10 do not support rem units when used in the font shorthand property (the entire declaration is ignored) or when used on pseudo elements.

IE9/10中font缩写和伪元素中不支持rem单位

IE9/10部分支持,IE11+、Firefox、Chrome、Safari、Opera 的主流版本都支持,为了兼容不支持 rem 的浏览器,我们需要在 rem 前面写上对应的 px 值,这样不支持的浏览器可以优雅降级。

vm vh vmin vmax

响应式布局的实现依靠媒体查询( Media Queries )来实现,选取主流设备宽度尺寸作为断点针对性写额外的样式进行适配,但这样做会比较麻烦,只能在选取的几个主流设备尺寸下呈现完美适配。CSS3中引入一种新的办法去真正地适配所有设备尺寸。

视口单位

视口在桌面端,指的是浏览器的可视区域;而在移动端较为复杂,它涉及到三个视口:分别是 Layout Viewport(布局视口)、 Visual Viewport(视觉视口)、Ideal Viewport。

视口单位中的“视口”,在桌面端,毫无疑问指的就是浏览器的可视区域;但是在移动端,它指的则是Layout Viewport(布局视口) 。

根据CSS3规范,视口单位主要包括以下4个:

vw : 1vw 等于视口宽度的1%

vh : 1vh 等于视口高度的1%

vmin : 选取 vw 和 vh 中最小的那个

vmax : 选取 vw 和 vh 中最大的那个

兼容性

在PC端用的很少,主要在移动端

在移动端 ios 8 以上以及 Android 4.4 以上获得支持,并且在微信 x5 内核中也得到完美的全面支持。

搭配vw和rem,布局更优化

给根元素大小设置随着视口变化而变化的 vw 单位,这样就可以实现动态改变其大小。

限制根元素字体大小的最大最小值,配合 body 加上最大宽度和最小宽度

个人总结

在一般的PC端网页制作过程中,一般直接用px为单位,在移动端由于vw,vh单位的兼容性,目前一般采用rem + %或者rem + vw/vh。

参考文章

css中的单位换算_CSS中各种长度单位总结相关推荐

  1. css中的单位换算_CSS单位px、em、rem及它们之间的换算关系

    作者:WangMin 格言:努力做好自己喜欢的每一件事 国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者的区别与优势是什么?接下来我们就来学习一下吧! 单位px.em.rem分 ...

  2. css中的单位换算_css绝对长度单位主要有哪些?绝对长度单位之间如何换算?

    本篇文章就给大家介绍css长度单位中绝对长度单位主要有哪些,它们之间是怎么换算的.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. css中的长度单位有很多,可谓五花八门,但基本上可分 ...

  3. css中的单位换算_CSS像素、物理像素、逻辑像素、设备像素比、PPI、Viewport

    1.PX(CSS pixels) 1.1 定义 虚拟像素,可以理解为"直觉"像素,CSS和JS使用的抽象单位,浏览器内的一切长度都是以CSS像素为单位的,CSS像素的单位是px. ...

  4. css中的单位换算_css大小单位px em rem的转换和详解

    css大小单位px em rem的转换和详解 PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firef ...

  5. css中的单位换算_css 长度单位转换器

    由来 这是一个重构工具,试过有项目,本来用着 px 写单位,后来使用 rem 做适配,就要变更单位,有一些项目本来是按照 640 做设计稿宽度,后来做小程序了,做好的页面要变成基于 750 宽度的设计 ...

  6. 计算机存储中的单位换算

    计算机存储中的单位换算 备战蓝桥杯的第1天,此题出现在第十一届蓝桥杯模拟赛中.(小白一枚,记录所有在做题过程中,出现的问题.) ## Byte.KB.MB.GB之间的转换* 这四个单位从小到大的排序是 ...

  7. 计算机网络技术中的单位换算,计算机存储/网络传输中单位换算1000还是1024

    简写 ISQ - International System of Quantities 国际量制.以长度.质量.时间.电流.热力学温度.物质的量和发光强度七个基本量为基础的量制 SI - Intern ...

  8. 米的换算单位和公式_米的单位换算公式大全(长度单位大全表)

    位换算题是小学低年级数学学习重点之一.单位换算记忆不够深刻,孩子经常混淆运用,容易出现计算失误,进率错误等问题. 牢记单位换算口诀,才能准确计算. 口诀: 大化小,往右移,进率有几个"0&q ...

  9. 树的高度单位换算 c语言编辑,小数与单位换算的公式(小数长度单位换算口诀)...

    1千米=1000米 1米=10分米1分米=10厘米 1米=100厘米1厘米=10毫米 面积单位换算1平方千米=100公顷1公顷=10000平方米1平方米=100平方分米1平方分米=100平方厘米. 最 ...

最新文章

  1. 第十六届智能车竞赛浙江赛区比赛胜利结束
  2. 无水印pdf编辑器_偷偷告诉你如何编辑PDF文件,轻松解决这万恶的千古难题
  3. “内存不足”的九大原因及解决方法
  4. 设计干货素材模板|常见的UI设计手法
  5. django 中的用户身份验证和 session 的关系
  6. 天猫超市回应大数据杀熟;华为 Mate Xs 被热炒至 6 万元;Elasticsearch 7.6.1 发布| 极客头条...
  7. statspack report分析
  8. opencv4下使用SVM进行简单颜色分类
  9. html中有序列表的css样式,CSS 列表样式(ul)
  10. 51单片机学习笔记(郭天祥版)(5)——作业讲解、独立键盘、矩阵键盘
  11. 转本计算机知识普及软件,江苏专转本新政策的解读
  12. Tesseract-OCR安装简明教程
  13. 通过chrome应用商店安装vue调试工具
  14. 组合数据类型(集合)
  15. 将计算机移动到桌面,如何将图标移动到桌面 移动桌面图标的方法分享
  16. 【硬件和驱动相关】wifi设备没有工作 ubuntu18.0.4 无线网卡 intel 6 AX200
  17. 一些奇奇怪怪小问题汇总
  18. 基于requests+pyecharts的前程无忧工作岗位可视化分析
  19. c语言用字符输出李字,二级C语言历年真题汇总__第10篇对文件的输入输出-李赛红.doc...
  20. redis面试:缓存雪崩、缓存击穿、缓存穿透

热门文章

  1. c++ 双人五子棋(可直接复制)
  2. 触龙——可解释推荐系统
  3. 基于深度学习的红外和可见光图像融合论文及代码整理
  4. C语言教程(四):基础知识(最后一续)
  5. 题目52:输入两个正整数m和n,判断m和n是否互质(即最大公约数为1),是则输出Yes,否则输出No。
  6. HTML表单、表格制作个人简历
  7. tf神经网络模型预测泰坦尼克号生还
  8. 解决word文件由于扩展名不匹配问题
  9. 使用Notepad++实现文本编辑的豆沙绿背景颜色,护眼
  10. 用Java实现简单画板