你可能没注意的CSS单位

原文:你可能没注意的CSS单位

扶今追昔

CSS中的单位我们经常用到pxptem百分比,px和pt不用多说

em

em是相对单位,参考物是父元素的font-size,具有继承的特点

如果字体大小是16px(浏览器的默认值),那么 1em = 16px

这样使用换算很复杂,尤其是和px对应,大家总结出了经验

body {
font-size: 62.5%;
}

这样之后 1em = 10px 在布局等使用的时候好换算了很多

百分比

百分比也是很常见的用法,看似简单其实有些初学者可能注意不到的知识

相对于谁

首先要明确百分比是相对于谁,宽泛的讲是父元素,但是并不是十分准确

  1. 对于普通定位元素就是我们理解的父元素
  2. 对于position: absolute;的元素是相对于已定位的父元素(offset parent)
  3. 对于position: fixed;的元素是相对于 ViewPort

viewport:可视窗口,也就是浏览器的window那么大

意外

  1. padding、margin 如果设置了百分比,会发现左右和预期一样,用的父元素宽度的百分比,但是用的也是 ** 宽度 ** 百分比,而不是想象中的高度的百分比
  2. 后代元素继承的是百分比 计算后的值 ,而不是原百分比,这个对于line-height的时候经常会遇到坑,还有这样的面试题问你line-height设置为120%1.2的区别

CSS3开启新时代

rem

em是个很不错的单位,但是有个问题就是可能会带来混乱,因为em依赖于父元素的字体大小,各个元素父元素的字体尺寸不一定一样,会带来布局上很大的不确定性

rem font size of the root element

rem相对于根元素html(网页),这样使用起来就安全了很多

html {font-size: 62.5%; /10 ÷ 16 × 100% = 62.5%/}
body {font-size: 1.4rem; /1.4 × 10px = 14px /}
h1 { font-size: 2.4rem; /2.4 × 10px = 24px/}

IE9+ 和现代浏览器都已经支持了

vw和vh

  • vw Viewport宽度, ** 1vw ** 等于viewport宽度的1%
  • vh Viewport高度, ** 1vh ** 等于viewport高的的1%

vw和vh会随着viewport变化自动变化,再也不用js控制全屏神马的了

甚至有些人丧心病狂的字体大小都用vw和vh控制,来达到字体和viewport大小同步的效果

IE10+ 和现代浏览器都支持这两个单位

vmin和vmax

这两个单位是针对vw和vh

  • vmin vw和vh中比较 ** 小 ** 的值
  • vmax vw和vh中比较 ** 大 ** 的值

这两个属性也会随着viewport变化

IE10+ 和现代浏览器都已经支持vmin

webkit浏览器之前不支持vmax,现在已经支持,所有现代浏览器已经支持,但是IE ** 全部 ** 不支持vmax

ch和ex

这两个单位时根据 ** 当前font-family ** 的相对单位

  • ch 字符0的宽度
  • ex 小写字符x的高度

font-family改变的时候这两个单位的值也会变化,不同字体表现的样式不一样

IE9+ 和现代浏览器都已经支持

浏览器兼容性

写的时候介绍了一些,大神写了测试页面可以帮我们直观的看到

http://s.codepen.io/chriscoyier/fullgrid/CiwFD?type=embed&safe=true

参考

7 CSS Units You Might Not Know About

CSS的长度单位

你可能不知道的7个CSS单位

时间: 2024-08-26 13:17:03

你可能没注意的CSS单位的相关文章

转载:你可能没注意的CSS单位

出自:http://www.cnblogs.com/dolphinX/p/4097693.html 扶今追昔 CSS中的单位我们经常用到px.pt.em.百分比,px和pt不用多说 em em是相对单位,参考物是父元素的font-size,具有继承的特点 如果字体大小是16px(浏览器的默认值),那么 1em = 16px 这样使用换算很复杂,尤其是和px对应,大家总结出了经验 body { font-size: 62.5%; } 这样之后 1em = 10px 在布局等使用的时候好换算了很多

七个你可能不了解的CSS单位

我们很容易无法摆脱的使用我们所熟悉的CSS技术,当新的问题出现,这样会使我们处于不利的地位. 随着Web继续的发展,对新的解决方案的需求也会继续增大.因此,作为网页设计师和前端开发人员,我们别无选择,只有去了解我们的工具集并且熟悉它. 这意味着我们还要了解一些特殊的工具-那些不经常使用的,但是当需要它们的时候,它们恰恰是最正确的工具. 今天,我将要向你介绍一些你以前可能不知道的CSS工具.这些工具都是计量单位,就像像素或者相对单位,但是很可能你从来没听说过它们!让我们一探究竟吧. rem 我们将

css单位中px和em,rem的区别

css单位中分为相对长度单位.绝对长度单位. 今天我们主要讲解rem.em.px这些常用单位的区别和用法. px(绝对长度单位) 相信对于前端来说px这个单位是大家并不陌生,px这个单位,兼容性可以说是相当可以,大家对px的了解肯定是没有很大的问题的. em(相对长度单位) 使用:1.浏览器的默认字体都是16px,那么1em=16px,以此类推计算12px=0.75em,10px=0.625em,2em=32px: 2.这样使用很复杂,很难很好的与px进行对应,也导致书写.使用.视觉的复杂(0.

没学过CSS等前端的我,也想美化一下自己的博客

随便说几句: 自己一直学的都是 C++和 Java 以及 Python语言,根本不懂高大上的 CSS 和 著名的 HTML5.感觉那些能自己设计那么漂亮的博客的朋友都好厉害.可以自己加上博客公告栏的小宠物和微博以及加上背景音乐,都感觉好牛逼,好高大上,博客的亲切感立马就上来了. 可是我又没学过 CSS等前端的东西,心想,搞这么漂亮的博客会不会很难啊?那些</class>这些什么鬼?会不会很繁琐?难道要我把 前端的东西学习一边才行? 开始: 然而并非如此,我不会前端,可是我也可以弄:小宠物和微博

css - (单位)

今天主要来整理整理css中一些我会用到的单位,及区别. 1. px 2.% 3.em 4.rem 5.vh 6.vw 今天主要就来讲讲这6种css 单位 1.px   => 它的大小是相对于浏览器屏幕分辨率来决定的: 2.%   => 它的大小是相对于它的父级元素来决定的: 3.em  => 它是相对于当前对象的大小来决定的: 4.rem  => 它是相对于根目录(html)下的单位来决定大小的: 5.vh  => 它是相对于整个屏幕的高度来决定的: 6.vw  =>

CSS:CSS 单位

ylbtech-CSS:CSS 单位 1.返回顶部 1. 尺寸 单位 描述 % 百分比 in 英寸 cm 厘米 mm 毫米 em 1em 等于当前的字体尺寸. 2em 等于当前字体尺寸的两倍. 例如,如果某元素以 12pt 显示,那么 2em 是24pt. 在 CSS 中,em 是非常有用的单位,因为它可以自动适应用户所使用的字体. ex 一个 ex 是一个字体的 x-height. (x-height 通常是字体尺寸的一半.) pt 磅 (1 pt 等于 1/72 英寸) pc 12 点活字

CSS单位分析及CSS颜色表示法、颜色表(调色板)

CSS单位主要分析em.rem.fr这三个较难理解的单位吧,平常的px.%.cm那些就不谈了嘛. px在不同场景之下为同样的值,我们把它称作绝对单位,而em和rem受外部因素的影响下而改变,因此称作相对单位. 我们需要了解到为什么要拓展em,rem这样的相对单位呢? 比如我就特爱用px,感觉所有的东西都能用px来表现距离,而事实上这种做法早已跟不上时代的步伐了,随着更高分辨率的显示器出现,则需要原本的多栏定宽布局,则需要更加灵活多变的响应式布局. em是最常见的相对长度单位,这是排版中使用的一种

6th week blog1(CSS单位)

①CSS单位 1.fr:Tracks can be defined using any length unit. Grid also introduces an additional length unit to help us create flexible grid tracks. The new fr unit represents a fraction of the available space in the grid container. The next grid definiti

CSS单位计算总结

CSS单位总结 公共部分css body { background-color: #000; color: skyblue; margin: 0; padding: 0; } body>div>div { border: 1px solid cyan; padding: 10px; margin: 10px; font-weight: bolder; } .s { background-color: #ddd; margin: 10px; white-space: nowrap; color: