热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

关于css中的em单位

使用px定义字体的话无法用浏览器字体放大功能,还有在做响应式网页时,字体响应大小也非常不方便。px:像素(plxels),相对长度单位。像素px是相对于显示器屏幕分辨率而言的。em:相对长度单位。相对

使用px定义字体的话无法用浏览器字体放大功能,还有在做响应式网页时,字体响应大小也非常不方便。

px:像素(plxels),相对长度单位。像素px是相对于显示器屏幕分辨率而言的。

em:相对长度单位。相对于当前对象内文本的字体尺寸(em是基于排版转换的一种量度,在css中em的大小参考字符框的高度)。

默认1em=16px,那为什么等于16px?因为浏览器默认的字体大小都是16px,所以没有重新设置浏览器默认字体大小的话1em就等于16px。在页面里要用到em作为单位的话,默认的1em=16px会使得在计算他们转换的值时非常不方便,比如我要把一个块里面的内容字体大小设置成18px,但我只想用em做为单位,那么情况就会这样,1em=16px,1px=0.0625em,得18px=1.125em(0.0625em*18)。擦,多麻烦!所以为了简化px和em之间的换算,需要在body里定义font-size:62.5%,即将浏览器初始化为即1em=10px,这样的话,上面的font-size:18px就等于font-size:1.8em

上面说过在em的大小参考字符框的高度,所以在css其他属性中,包括width,height,margin,padding,text-indent等使用em作为单位的话,大小计算也跟计算font-size一样的道理。

计算公式:1/父元素font-size值*需要转换的px=em值       (PS:父元素font-size的单位没有关系,无论px还是em)

不过如果当一个元素本身设置了字体大小,其自身的width,height,margin,padding等属性是以自己的font-size值去计算em的值,在这个元素下的子元素也同理。

所以当元素自身有设置font-size时,除font-size外其他属性的计算公式应该是这样:

1/元素自身的font-size值*需要转换的px=em值

在响应式中的应用

在响应式网页中,字体在不同尺寸的设备下要有不同的大小,以达到最佳的阅读效果,比如一个响应式页面在手机和平板里的字体大小是不一样的,所以用em作为字体大小单位的话,在响应式布局中改变字体大小非常方便。

XHTML
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 content="name="viewport">charset=utf-8 />  class="container">    class="header">      class="header-title">        src="#"alt="">        

囧橙

        

前端收藏夹

            class="header-menu">        href="#">菜单        href="#">菜单        href"#">菜单        href="#">菜单              class="content">      class="content-main">        class="mod-article">          class="mod-article-box">            class="mod-article-content">              

我是标题

              

我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容

                                      class="mod-article">          class="mod-article-box">            class="mod-article-content">              

我是标题

              

我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容

                                            class="footer">

底部在此

  

运行以上代码,改变窗口大小,可看到当窗口大小大于或小于指定尺寸时字体会随着变化,在所有字体都用em作为单位的情况下,只需要改变body{font-size:xx%}即可,当然这只是随便举个简单的例子,看具体情况去设置。


em有如下特点:

1、em的值并不是固定的;

2、em会继承父级元素的字体大小。

所以我们在写CSS的时候,需要注意两点:

1、body选择器中声明Font-size=62.5%;

2、将你的原来的px数值除以10,然后换上em作为单位;

3、重新计算那些被放大的字体的em数值。避免字体大小的重复声明。

也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。

但是12px汉字例外,就是由以上方法得到的12px(1.2em)大小的汉字在IE中并不等于直接用12px定义的字体大小,而是稍大一点。这个问题 Jorux已经解决,只需在body选择器中把62.5%换成63%就能正常显示了。原因可能是IE处理汉字时,对于浮点的取值精确度有限。不知道有没有其他的解释。


原文链接1

原文链接2


推荐阅读
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 深入理解ExtJS:从入门到精通
    本文详细介绍了ExtJS的功能及其在大型企业前端开发中的应用。通过实例和详细的文件结构解析,帮助初学者快速掌握ExtJS的核心概念,并提供实用技巧和最佳实践。 ... [详细]
  • CentOS 系统管理基础
    本文介绍了如何在 CentOS 中查询系统版本、内核版本、位数以及磁盘分区的相关知识。通过这些命令,用户可以快速了解系统的配置和磁盘结构。 ... [详细]
  • 本文详细探讨了 PHP 中 method_exists() 和 is_callable() 函数的区别,帮助开发者更好地理解和使用这两个函数。文章不仅解释了它们的功能差异,还提供了代码示例和应用场景的分析。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 推荐几款高效测量图片像素的工具
    本文介绍了几款适用于Web前端开发的工具,这些工具可以帮助用户在图片上绘制线条并精确测量其像素长度。对于需要进行图像处理或设计工作的开发者来说非常实用。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了一种高效的算法——线性筛法,用于快速筛选出一定范围内的所有素数。通过该方法,可以显著提高求解素数问题的效率。 ... [详细]
  • 本文详细介绍了get和set方法的作用及其在编程中的实现方式,同时探讨了点语法的使用场景。通过具体示例,解释了属性声明与合成存取方法的概念,并补充了相关操作的最佳实践。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
  • Java中的基本数据类型与包装类解析
    本文探讨了Java编程语言中的8种基本数据类型及其对应的包装类。通过分析这些数据类型的特性和使用场景,以及自动拆装箱机制的实现原理,帮助开发者更好地理解和应用这些概念。 ... [详细]
author-avatar
烟为你吸_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有