你可能不知道的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)
        <div>
            Test-02 (18px * 1.5 = 27px)
            <div>
                Test-03 (27px * 1.5 = 41px)
            </div>
        </div>
    </div>
</body>

因为font-size具有继承性,所以层数越深字体越大。

二、rem

虽然上面使用em的情况可能会在开发中用到,但是我们有时候想有一个基准来扩展。遇到这种需求时,我们可以使用rem单位,rem中的“r”代表“root”,这意味着设置当前元素的字体大小为根元素,大多数情况下,我们会设置在html元素上。

<style type="text/css">
    html {font-size: 12px;}
    div  {font-size: 1.5rem;}
</style>
<body>
    <div>
        Test-01 (12px * 1.5 = 18px)
        <div>
            Test-02 (12px * 1.5 = 18px)
            <div>
                Test-03 (12px * 1.5 = 18px)
            </div>
        </div>
    </div>
</body>

当然,rem单位不仅应用在字体上,还可以实现到CSS 网格系统中。

三、vh 和 vw

在进行响应式布局时,我们常常会使用百分比来布局,然而CSS的百分比不总是解决每个问题的最佳方案,CSS的宽度相对于离它最近的父元素的宽度。 如果你想使用视口的宽度、高度而不是父元素的宽高,可以使用vh和vw单位。 1vh = viewportHeight * 1/100; 1vw = viewportWidth * 1/100; 使用vh、vw就可以保证元素的宽高适应不同设备。

四、vmin 和 vmax

vw和vh对应于viewport的width和height,而vmin和vmax分别对应于width、height中的最小值和最大值,例如如果浏览器的宽/高被设置为1000px/600px,那么

1vmin = 600 * 1/100;

1vmax = 1000 * 1/100;

下面我们来看看几个实例:

4.1 一个正方形元件总是触摸至少两个屏的边缘

<style type="text/css">
.box {
    height: 100vmin;
    width : 100vmin;
}
</style>
<body>
    <div class="box" style="background-color: #f00">
        fdasjfdlas
    </div>
</body>

4.2 覆盖全屏

<style type="text/css">
    body {
        margin: 0;
        padding:0;
    }
    .box {
        /*宽屏显示器width > height*/
        height: 100vmin;
        width : 100vmax;
    }
</style>
 
<div class="box" style="background-color: #f00">
    fdasjfdlas
</div>

五、ex 和 ch

ex、ch单位与em、rem相似之处在于都依赖于font-size,但是ex、ch还依赖于font-family,基于font-specific来计算。 引用w3C规范:

ex unit Equal to the used x-height of the first available font. [CSS3-FONTS] The x-height is so called because it is often equal to the height of the lowercase "x". However, an ‘ex’ is defined even for fonts that do not contain an "x". The x-height of a font can be found in different ways. Some fonts contain reliable metrics for the x-height. If reliable font metrics are not available, UAs may determine the x-height from the height of a lowercase glyph. One possible heuristic is to look at how far the glyph for the lowercase "o" extends below the baseline, and subtract that value from the top of its bounding box. In the cases where it is impossible or impractical to determine the x-height, a value of 0.5em must be assumed.

ch unit Equal to the used advance measure of the "0" (ZERO, U+0030) glyph found in the font used to render it.  

用一副图来解释这两种单位的含义:

这两种单位,有许多用途,大部分是用于印刷时的微调整。例如,sup、sub元素分别显示上标和下标,但是我们可以使用position和bottom模拟:

<style type="text/css">
body {
    margin: 0;
    padding:0;
}
 
.sup {
    position: relative;
    bottom: 1ex;
}
.sub {
    position: relative;
    bottom: -1ex;
}
</style>
<div>
    AaB<span class="sup">b</span>CcXxD<span class="sub">d</span>EeFf
</div>

时间: 2024-10-31 15:33:34

你可能不知道的7个CSS单位的相关文章

你可能没注意的CSS单位

原文:你可能没注意的CSS单位 扶今追昔 CSS中的单位我们经常用到px.pt.em.百分比,px和pt不用多说 em em是相对单位,参考物是父元素的font-size,具有继承的特点 如果字体大小是16px(浏览器的默认值),那么 1em = 16px 这样使用换算很复杂,尤其是和px对应,大家总结出了经验 body { font-size: 62.5%; } 这样之后 1em = 10px 在布局等使用的时候好换算了很多 百分比 百分比也是很常见的用法,看似简单其实有些初学者可能注意不到的

你所不知道的CSS滤镜技巧与细节

本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! OK,下面直接进入正文.本文所描述的滤镜,指的是 CSS3 出来后的滤镜,不是 IE 系列时代的滤镜,语法如下,还未接触过这个属性的可以先简单到 MDN - filter 了解下: {      filter: blur(5px);      filter: brightness(0.4);      filter: contrast(200%);      filter: drop-shadow(16px 16px 20px 

你所不知道的 CSS 滤镜技巧与细节

承接上一篇你所不知道的 CSS 动画技巧与细节,本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 系列 CSS 文章汇总在我的 Github ,持续更新,欢迎点个 star 订阅收藏. OK,下面直接进入正文.本文所描述的滤镜,指的是 CSS3 出来后的滤镜,不是 IE 系列时代的滤镜,语法如下,还未接触过这个属性的可以先简单到 MDN -- filter 了解下: { filter: blur(5px); filter: brightness(0.4); filter: co

关于谷歌PR你可能不知道的一些事情

PR一直以来都被很多站长当成是唯一衡量网站权重的标准,我们在交换友情链接,在评估竞争对手网站的价值时总理不开它,这反而让很多站长只过分注重于PR值还忽略了其他方方面面的优化因素.那么谷歌PR的哪些事情可能是你所不知道的呢? 1. PR只能评估网页外链数量和网页外链质量,并不能指代网页权重.换而言之,PR只与外链数量和质量相关,与其他因素无关. 2. 一个PR4.只拥有5个出站链接的网页要比一个PR8,但拥有100个出站链接的网页要有价值得多. 3. 从PR0到PR1相对容易些,从PR1到PR3会

关于Java性能监控您不知道的5件事,第2部分:利用JDK内置分析器进行Java进程

关于Java性能监控您不知道的5件事,第2部分:利用JDK内置分析器进行Java进程监控 全功能内置分析器,如 JConsole 和 VisualVM 的成本有时比它们的性能费用还要高 - 尤其是在生产软件上运行的系统中.因此,在聚焦 Java 性能监控的第 2 篇文章中,我将介绍 5 个命令行分析工具,使开发人员仅关注运行的 Java 进程的一个方面. JDK 包括很多命令行实用程序,可以用于监控和管理 Java 应用程序性能.虽然大多数这类应用程序都被标注为 "实验型",在技术上不

14个你可能不知道的JavaScript调试技巧

以更快的速度和更高的效率来调试JavaScript.熟悉工具可以让工具在工作中发挥出更大的作用.尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug.文中已经列出了14个你可能不知道的调试技巧,但是可能需要你牢记在心,以便在下次需要调试JavaScript代码时使用!  1. debugger  除了console.log, debugger是我们最喜欢.快速且肮脏的调试工具.执行代码后,Chrome会在执行时自动停止.你甚至可以把它封装成条件

关于多线程编程您不知道的 5 件事 有关高性能线程处理的微妙之处

虽然很少有 Java 开发人员能够忽视多线程编程和支持它的 Java 平台库,更少有人有时间深入研究线程.相反地,我们临时学习线程,在需要时向我们的工具箱添加新的技巧和技术.以这种方式构建和运行适当的应用程序是可行的,但是您可以做的不止这些.理解 Java 编译器的线程处理特性和 JVM 将有助于您编写更高效.性能更好的 Java 代码. 在这期的 5 件事 系列 中,我将通过同步方法.volatile 变量和原子类介绍多线程编程的一些更隐晦的方面.我的讨论特别关注于这些构建如何与 JVM 和

你所不知道的陨石生意链:跨国交易疯狂 缺乏法律规范

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; [i黑马导读]2月15日,一颗陨石在俄罗斯车里雅宾斯克上空爆炸,目前已有上千人在这次"飞来横祸"中受伤.灾难中,有人受伤,也有人受益,据中国网报道,俄罗斯陨石坠落事件吸引了世界各地的陨石收藏爱好者,一家著名的购物网站上与"陨石"相关的商品超过1万件,最便宜的只要1元,贵的标价6000万元.黑马哥今天就为您摘录<创业家杂志

10 个你可能不知道的事,关于 Facebook 内部开发环境是如何使用 JavaScript 和 GraphQL 的

本文讲的是10 个你可能不知道的事,关于 Facebook 内部开发环境是如何使用 JavaScript 和 GraphQL 的, 最近, 来自 Facebook 的 Lee Byron (@leebyron) 在Hashnode上主办了一场 AMA( Ask Me Anything ). 这里提出了许多有趣的问题,并且 Lee 透露了一些关于 Facebook 如何使用 React .GraphQL .和 React Native 的惊人事实与细节.我拜读了他在 AMA 上的回答,思考并总结出