zoukankan      html  css  js  c++  java
  • Rem与Px的转换

    rem是CSS3中新增加的一个单位值,他和em单位一样,都是一个相对单位。不同的是em是相对于元素的父元素的font-size进行计算;rem是相对于根元素html的font-size进行计算。这样一来rem就绕开了复杂的层级关系,实现了类似于em单位的功能。

    Rem的使用

    前面说了em是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在我们多次使用时,就会带来无法预知的错误风险。而rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值,这个参考值设置为多少,完全可以根据您自己的需求来定。

    假设就使用浏览器默认的字号16px,来看一些px单位与rem之间的转换关系:


    | px | rem |
    ------------------------
    | 12 | 12/16 = .75 |
    | 14 | 14/16 = .875 |
    | 16 | 16/16 = 1 |
    | 18 | 18/16 = 1.125 |
    | 20 | 20/16 = 1.25 |
    | 24 | 24/16 = 1.5 |
    | 30 | 30/16 = 1.875 |
    | 36 | 36/16 = 2.25 |
    | 42 | 42/16 = 2.625 |
    | 48 | 48/16 = 3 |
    -------------------------


    如果你要设置一个不同的值,那么需要在根元素<html>中定义,为了方便计算,时常将在<html>元素中设置font-size值为62.5%:


    html {
    font-size: 62.5%; /* 10 ÷ 16 × 100% = 62.5% */
    }


    相当于在<html>中设置font-size为10px,此时,上面示例中所示的值将会改变:

    | px | rem |
    -------------------------
    | 12 | 12/10 = 1.2 |
    | 14 | 14/10 = 1.4 |
    | 16 | 16/10 = 1.6 |
    | 18 | 18/10 = 1.8 |
    | 20 | 20/10 = 2.0 |
    | 24 | 24/10 = 2.4 |
    | 30 | 30/10 = 3.0 |
    | 36 | 36/10 = 3.6 |
    | 42 | 42/10 = 4.2 |
    | 48 | 48/10 = 4.8 |
    -------------------------

    从上表可以清楚的知道,rem在众多浏览器中都已得到很好的支持,如果您的项目不用考虑IE低版本的话,你就可以放心的使用了,如果您的项目在IE低版本中还占有不少的比例,那么你还在担心使用rem不能兼容,而不敢使用。其实是没有必要的,可以针对低版本的IE浏览器做一定的处理:

    html { font-size: 62.5%; }
    body { font-size: 14px; font-size: 1.4rem; } /* =14px */
    h1 { font-size: 24px; font-size: 2.4rem; } /* =24px */


    这样一来解决了IE低版本的不能兼容的问题,但生出另一个不足地方,就是增加了代码量。必竟鱼和熊掌很多时候不能兼得嘛。

    转自:http://www.cn-sass.com/%E6%8A%80%E5%B7%A7/sass-px-to-rem-with-mixin-and-function.html

  • 相关阅读:
    慎用WSACleanup()
    WINAPI和APIENTRY是一样的
    LeetCode208:Implement Trie (Prefix Tree)
    C++学习笔记22,普通函数重载(1)
    代理server的理解(1):Windows环境下的代理server设置
    浅析android适配器adapter中的那些坑
    HTML网页之计算器代码
    Xcode 自己主动生成版本技术最佳实践
    封装RecyclerViewAdapter实现RecyclerView下拉刷新上拉载入很多其它
    Ubuntu下在Eclipse IDE for C/C++ Developers中怎样执行C语言的GTK程序?(已解决)
  • 原文地址:https://www.cnblogs.com/bokebi520/p/4217872.html
Copyright © 2011-2022 走看看