你可能没注意的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-01 19:46:17

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

7个你可能不认识的CSS单位

众所周知CSS技术我们虽然很熟悉,在使用的过程却很容易被困住,这让我们在新问题出现的时候变得很不利. 随着web继续不断地发展,对于新技术新解决方案的要求也会不断增长.因此,作为网页设计师和前端开发人员,我们别无选择,必须熟悉我们手上的工具,做到知己知彼,这样才能百战不殆. 这就意味着有那么些个特别的货,虽然平常都不怎么会用上,但是一旦某个地方需要它们了,他们就真的是特么得合适不过来了呢. 今儿,我就准备向大伙儿介绍一些你们之前可能很少见过CSS家伙们.他们每个都是度量的单位,类似pixel 和

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

如果你是一名前端开发工程师,一般px和em使用频率比较高.但是今天本文的重点是介绍一些我们使用很少.甚至么有听说的单位. 一.重温em <style type="text/css">     body {font-size: 12px;}     div  {font-size: 1.5em;} </style> <body>     <div>         Test-01 (12px * 1.5 = 18px)         &l

容易忽略的七个CSS非常有用的单位

今天,我将要向你介绍一些你以前可能不知道的CSS工具.这些工具都是计量单位,就像像素或者相对单位,但是很可能你从来没听说过它们!让我们一探究竟吧. rem 我们将从你已经熟悉的东西开始.em单位被定义为当前字体大小.例如,如果你在body元素上设置一个字体大小,那么在body元素内的任何子元素的em值都等于这个字体大小. <body>    <div class="test">Test</div></body> body {    fon

javascript 进阶篇2 CSS XML学习_基础知识

CSS全称是cascading style sheets,中文名字叫级联样式单,也叫层叠样式表.它的好处就是能让代码整齐,并且可以批量处理一些样式. 基本语法: 注释符:/* */ 选择符:selector {attribute:value} 同一个属性的值用空格符号隔开,不同属性用分号隔开. 区分大小写. 比如要给页面中的table定制样式,则写table {.....;.....;} 选择符的使用方法有很多种,于是我又一次懒得打,从网上抄来的: 选择符模式 说明 * 匹配任意元素.(通用选择

CSS长度单位的区别 - pt,px和cm的区别

在CSS样式表中,我们经常会看到pt, px,em,ex ,in等这类长度单位.它们各是什么意思,有什么区别呢? 我又写了另外一个HTML例子,测试一下cm. 在CSS样式表中,长度单位分两种: 相对长度单位,如px, em等 绝对长度单位,如pt,mm等 也谈px和pt的区别 经常看 到有人拿px和pt比较,主要是为了争辩在确定字体大小(font-size)或其它CSS属性大小时,用什么样的CSS长度单位更加好.有人说,用pt更好,因为pt是绝对长度单位,不会因为屏幕分辨率大小,或者其它因素而

师傅们推荐几本CSS的书吧

问题描述 师傅们推荐几本CSS的书吧 解决方案 解决方案二:手册比较管用,看网上的教程然后跟着做解决方案三:精通css+div解决方案四:你用dreamweaver嗎,裡面的參考很有用的,[幫助]-[參考],在下面顯示的列表中選擇書籍.夠用了.解决方案五:css权威指南解决方案六:看视频更好啊解决方案七:css比较容易上手,找本书看看就行解决方案八:看看留个言解决方案九:我觉得搞css的话,弄css手册是应该的,然后最关键的是自己有什么需求的时候就动手测试,实在弄不出来的话就上网搜答案,一般而言

【转】在html中引入CSS的方法

在html中,引入css的方法主要有行内式.内嵌式.导入式和链接式4种 1.行内式 即在标记的style属性中设定css样式,这种方式本质上没体现出css的优势,因此不推荐使用. 2.嵌入式 在对页面中各种元素的设置集中写在<head>和</head>之间的,对于单个页面来说,这种方式很方便 <style type="text/css"> div{margin: 0;padding: 0;border:1px red solid;} </sty

移动端的rem单位

rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. rem是什么? rem(font size of the root element)是指相对于根元素的字体大小的单位.简单的说它就是一个相对单位.看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位.它们之间其实很相似,只不过一

在css加载完毕后自动判断页面是否加入css或js文件_jquery

最近在写项目的framework,写个JQueryMessageBox的类,以使用jquery ui中的dialog()来显示消息框,为了使方法方便调用,便加入了自动判断页面是否加入了ui.js和ui.css,代码如下: //如果没有包含ui.js,则引用 if ($('script[src$=""jquery-ui-1.8.11.custom.min.js""]').length == 0) {{ $(""<script src='/js