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

今天,我将要向你介绍一些你以前可能不知道的CSS工具。这些工具都是计量单位,就像像素或者相对单位,但是很可能你从来没听说过它们!让我们一探究竟吧。

rem

我们将从你已经熟悉的东西开始。em单位被定义为当前字体大小。例如,如果你在body元素上设置一个字体大小,那么在body元素内的任何子元素的em值都等于这个字体大小。

<body>
    <div class="test">Test</div>
</body>

body {
    font-size: 14px;
}
div {
    font-size: 1.2em; // calculated at 14px * 1.2, or 16.8px
}

在这里,我们说这个div将有一个1.2em的font-size。它是所继承的字体大小的1.2倍,在这个例子中为14px。结果为16.8px.

但是,当你在每个元素内都级联em定义的字体大小将会发生什么?在下面的代码片段中我们应用和上面一模一样的CSS.每个div从它们的父节点继承字体大小,带给我们逐渐增加的字体大小。

<body>
    <div>
        Test <!-- 14 * 1.2 = 16.8px -->
        <div>
            Test <!-- 16.8 * 1.2 = 20.16px -->
            <div>
                Test <!-- 20.16 * 1.2 = 24.192px -->
            </div>
        </div>
    </div>
</body>

虽然在某些情况下可能需要这个,但是通常你可能想基于一个唯一的度量标准来按比例缩放。在这种情况下,你应该用rem。rem中的"r"代表"root";这等同于font-size基于根元素进行设置;在大多数情况下根元素为html元素。

html {
    font-size: 14px;
}
div {
    font-size: 1.2rem;
}

在上一个示例中三个嵌套的div的字体大小计算结果都为16.8px。

对网格布局的好处

rem不是只对定义字体大小有用。比如,你可以使用rem把整个网格系统或者UI样式库基于HTML根元素的字体大小上,然后在特定的地方使用em比例缩放。这将带给你更加可预测的字体大小和比例缩放。

.container {
    width: 70rem; // 70 * 14px = 980px
}

从概念上讲,像这样一个策略背后的想法是为了允许你的界面随着你的内容按比例缩放。然而,这可能不一定对每个案例都有意义。

"rem(root em)单位"的兼容性列表。

vh和vw

响应式网页设计技术很大程度上依赖于比例规则。然而,CSS比例不总是每个问题的最佳解决方案。CSS宽度是相对于最近的包含父元素。如果你想使用显示窗口的宽度或高度而不是父元素的宽度将会怎么样?这正是vh和vw单位所提供的。

vh等于viewport高度的1/100.例如,如果浏览器的高是900px,1vh求得的值为9px。同理,如果显示窗口宽度为750px,1vw求得的值为7.5px。

这些规则表面上看起来有无尽的用途。例如,做一个占满高度的或者接近占满高度的幻灯片,可以用一个非常简单的方法实现,只要用一行CSS:

.slide {
    height: 100vh;
}

设想你想要一个占满屏幕宽度的标题。为做到这一点,你将会用vw来设置一个字体大小。这个大小将会随着浏览器的宽度按比例缩放。

视窗单位: vw, vh "的兼容性列表。

vmin 和 vmax

vh和vm总是与视口的高度和宽度有关,与之不同的,vmin和vmax是与这次宽度和高度的最大值或最小值有关,取决于哪个更大和更小。例如,如果浏览器设置为1100px宽、700px高,1vmin会是7px,1vmax为11px。然而,如果宽度设置为800px,高度设置为1080px,1vmin将会等于8px而1vmax将会是10.8px。

所以你什么时候可能用到这些值?

设想你需要一个总是在屏幕上可见的元素。使用高度和宽度设置为低于100的vmin值将可以实现这个效果。例如,一个正方形的元素总是至少接触屏幕的两条边可能是这样定义的:

.box {
    height: 100vmin;
    width: 100vmin;
}

如果你需要一个总是覆盖可视窗口的正方形(一直接触屏幕的四条边),使用相同的规则只是把单位换成vmax。

.box {
    height: 100vmax;
    width: 100vmax;
}

这些规则的组合提供了一个非常灵活的方式,用新的、令人兴奋的方式利用你的可视窗口的大小。

Viewport units: vmin, vmax "兼容列表。

ex 和 ch

ex和ch单位,与em和rem相似,依赖于当前字体和字体大小。然而,与em和rem不同的是,这两个单位只也依赖于font-family,因为它们被定为基于特殊字体的法案。

ch单位,或者字符单位被定义为0字符的宽度的“先进的尺寸”。在"Eric Meyer's的博客"中可以找到一些非常有趣的讨论关于这意味着什么,但是基本的概念是,给定一个等宽字体的字体,一个N个字符单位宽的盒子,比如width:40ch;,可以一直容纳一个有40个字符的应用那个特定字体的字符串。虽然这个特殊规则的传统用途与列出盲文有关,但是这里创造性的可行性一定会超越这些简单的用途。

ex单位被定义为"当前字体的x-height或者一个em的一半"。给定的字体的x-height是指那个字体的小写x的高度。通常,这是这个字体的中间的标志。

ex

x-height:小写字母x的高度(阅读更多关于The Anatomy of Web Typography)

对于这种单位有很多的用途,大多数是用于排版的微调。例如,sup元素,代表上标,可以用相对定位和一个1ex的底部值在行内被推高。类似地,你可以拉低一个下标元素。浏览器默认支持这些利用上标和下标特性的vertical-align规则,但是如果你想要更精细的控制,你可以像这样更明确的处理样式:

sup {
    position: relative;
    bottom: 1ex;
}
sub {
    position: relative;
    bottom: -1ex;
}

ex单位在CSS1中已经存在,但是你不会找到对ch单位有像这样坚实的支持。具体支持,在Eric Meyer’s 的博客中查看CSS单位和值。
结论

密切关注CSS的持续发展和扩张是非常重要的,一边在你的工具集里知道所有的工具。也许你会遇到一个特殊的问题需要一个意想不到的解决方案,利用这些更隐蔽的计量单位之一。花时间去阅读新规范,记录来自好的资源的新闻资讯!

时间: 2024-09-11 15:41:48

容易忽略的七个CSS非常有用的单位的相关文章

移动端css文字使用什么单位最合适?

问题描述 移动端css文字使用什么单位最合适? 我之前的做法是使用px,然后做媒体查询,给不同的分辨率的手机设置不同的样式.这样导致的结果是需要写很多样式.后来,我想到了用cm这个单位来写,倒是解决了兼容性的问题了.但我怎么都感觉这个方法是不争取的.特来请教,你们在写移动端css的时候使用什么单位呢? 解决方案 移动端不是最好不要用绝对的,最好用相对的么 解决方案二: em rem % 都可以

DIV+CSS总结:有用的3个网页制作技巧

核心提示:我们在进行DivCSS布局的时候,非常关注CSS技巧的学习,今天向大家推荐3个所谓的 "顶级"CSS技巧!虽然没有什么新意,但对新手而言却非常重要! 我们在进行DivCSS布局的时候,非常关注CSS技巧的学习,今天向大家推荐3个所谓的 "顶级"CSS技巧!虽然没有什么新意,但对新手而言却非常重要! 一.在一行内声明CSS h2 { font-size:18px; border:1px solid blue; color:#000; background-c

HTML及CSS基础课(七) CSS: An Overview

What CSS is(什么是CSS) CSS(Cascading Style Sheets级联样式表)是一种描述你html的外观和格式的语言. 一个样式表(style sheet)是一个描述html页面看起来怎么样的文件. 我们说这些样式表是级联(cascading)的是因为这些表格可以应用超过一种的样式.例如,你想让所有的段落<p>的字都是蓝色的,但是只有其中某一个单词是红色的,CSS也可以做到这点. 只要这样子设置css文件: p { color: red; } span { /*Wri

WEB2.0标准教程:第七天 CSS入门

在了解XHTML代码规范后,我们就要进行CSS布局.首先先介绍一些CSS的入门知识. 如果你已经很熟悉了,可以跳过这一节. CSS是Cascading Style Sheets(层叠样式表)的缩写. 是一种对web文档添加样式的简单机制,属于表现层的布局语言. 1.基本语法规范 分析一个典型CSS的语句: p {COLOR:#FF0000;BACKGROUND:#FFFFFF}  ·其中"p"我们称为"选择器"(selectors),指明我们要给"p&qu

谈使用Dedecms建站容易忽略的七个安全细节

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 随着CMS的流行起来,越来越多的网友开始加入到个人站长的行业里,或许不少网友认为,只要买个域名,租个空间,随后解析域名,随后FTP上传程序,程序安装以后便可以发布内容了,发布内容了便开始到处做外链了,做外链了便是真正的站长了. 只是,做站长真的是这么简单吗?对于大部分站长来说,Dedecms都是很方便的开源CMS,因为使用的人数众多,所以de

Windows 7中被忽略的七个实用功能

  1.Sticky Notes(即时贴) 如果您是靠办公桌和电脑显示器上的黄色便利贴去随时提醒您的工作日程的话,那么Windows 7中的Sticky Notes(即时贴)功能就很适合您. 点击Windows 7的开始菜单,输入"Sticky"后按住Enter键,桌面上就会出现Sticky Notes应用程序.通过Windows 7中的Sticky Notes功能,用户可以设置便签的文本.改变颜色.调整大小.翻阅便签等.Sticky Notes功能存在于Windows 7家庭精装版.

CSS中常用的单位

css 一.长度单位 长度单位是Web页设计中最常用的一个单位.一个排列无序.杂乱无章的页面不可能给人们留下什么好的印象.于是,在设计的时候需要为元素的位置.尺寸精确地定义一些值,以使其达到预期的效果. CSS给予人们精确控制网页的能力,这一点为人们津津乐道.它允许人们定义外观.尺寸.空间及其他的样式.但是,CSS所给出的控制同时也是一个危险的东西,这不仅表现在设计者缺乏经验,更在于如何给出一个尺寸和空间值.为什么呢?因为一个设计者虽然能够决定某一个特殊的屏幕分辨率,但是不可能决定别人的

CSS尺寸和字体单位-em、px还是%

在页面整体布局中,页面元素的尺寸大小(长度.宽度.内外边距等)和页面字体的大小也是重要的工作之一.一个合理设置,则会让页面看起来层次分明,重点鲜明,赏心悦目.反之,一个不友好的页面尺寸和字体大小设置,则会增加页面的复杂性,增加用户对页面理解的复杂性:甚至在当下访问终端(iPhone.iPad.PC.Android-)层出不穷的今天,适应各式各样的访问终端,将成为手中的一块"烫手的山芋".所以在近几年,"九宫格"式的"流式布局"再度回归.为了提供页

了解并使用CSS中的rem单位

什么是 rem 可能在你使用收音机或者用其他音乐播放器之前,就已经听过"R.E.M."这个词了.在这个乐队眼中,这个词是"浅睡眠时眼球的快速转动"的缩写,而在 css 中,rem 代表着"以根元素为参照物的 em 单位".他不会让你抛弃你的宗教信仰也不会让你相信那个远在月球的人,但是它可以帮助你实现一个和谐.平稳的设计. 根据 W3C 规范中对 1rem 的定义: 1rem 与等于根元素 font-size 的计算值.当明确规定根元素的 font