博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于响应式布局
阅读量:5308 次
发布时间:2019-06-14

本文共 2038 字,大约阅读时间需要 6 分钟。

一.PX

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的.这个单位应该不用多说,大家用得最多。在Web页面初期制作中,我们都是使用px来设置我们的文本,因为他比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,他改变了浏览器的字体大小,这时会使用我们的Web页面布局被打破。这样对于那些关心自己网站可用性的用户来说,就是一个大问题了。因此,这时就提出了使用em来定义Web页面的字体。

二.EM

em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。

任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合:

1em=16px

那么

12px=0.75em10px=0.625em

em需要一个参考点,一般都是以<body>font-size为基准。比如说我们使用1em=10px来改变默认值1em=16px,这样一来,我们设置字体大小相当于14px时,只需要将其值设置为1.4em。也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

body {	font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/}h1 {	font-size: 2.4em; /*2.4em × 10 = 24px */}p {	font-size: 1.4em; /*1.4em × 10 = 14px */}li {	font-size: 1.4em; /*1.4 × ? = 14px ? */}

为什么li1.4em是不是14px是一个问号呢?如果你了解过em后,你会觉得这个问题是多问的。前面也简单的介绍过一回,在使用em作单位时,一定需要知道其父元素的设置,因为em就是一个相对值,而且是一个相对于父元素的值,其真正的计算公式是:

1 ÷ 父元素的font-size × 需要转换的像素值 = em值

这样的情况下1.4em可以是14px,也可以是20px,或者说是24px,总之是一个不确定值,那么解决这样的问题,要么你知道其父元素的值,要么呢在任何子元素中都使用1em

说的有点绕口了…直接看看下面的例子:

em会继承父元素的字体大小

css:

body{font-size: 16px;}p{font-size:0.75em;}span{font-size:2em;}

html:

我大小为16px;

段落文字大小为12px(16*0.75); 我大小是2em,即24px,这里是相对父级字号*2的,而不是相对body里面的16px

如果你确实需要查看详细的对应关系,这个网站提供一个px,em,rem单位转换工具

地址:

三.REM

CSS3的出现,他同时引进了一些新的单位,包括我们今天所说的rem。在W3C官网上是这样描述rem的——font size of the root element 。下面我们就一起来详细的了解rem

前面说了em是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在我们多次使用时,就会带来无法预知的错误风险。而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*/}

我在根元素<html>中定义了一个基本字体大小为62.5%(也就是10px。设置这个值主要方便计算,如果没有设置,将是以16px为基准 )。从上面的计算结果,我们使用rem就像使用px一样的方便,而且同时解决了pxem两者不同之处。

恩,理想很丰满,但现实很骨感,看下面的代码:

	
Document

根据上面的理论,div的宽高设置是5rem,那么就应该是50*50的宽高,而a标签里面的padding,height,line-height,font-size都应该是10的倍数才对,但是实际情况呢?

这是这段代码在chrome浏览器上测试的结果

这是 div 的大小:

a 标签的大小:

span标签的大小

可以很明显的看出,明明都设置了html:62.5%,也就是10px,但是实际却是除了a标签的font-size,其他都是按照12px在进行计算。但是同样的效果,我们在Safari浏览器上试试,如图:

 

转载于:https://www.cnblogs.com/Qipahua/p/5066501.html

你可能感兴趣的文章
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
青海行--(7月19日)麦积山石窟
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
深入理解java集合框架(jdk1.6源码)
查看>>
php截取后台登陆密码的代码
查看>>
选假球的故事
查看>>
ul li剧中对齐
查看>>
关于 linux 的 limit 的设置
查看>>
模块搜索路径
查看>>
如何成为一名优秀的程序员?
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
C++期中考试
查看>>
Working with Characters and Strings(Chapter 2 of Windows Via C/C++)
查看>>
vim中文帮助教程
查看>>
Android 创建与解析XML(四)—— Pull方式
查看>>
CodeForces 411B 手速题
查看>>
同比和环比
查看>>
美国在抛弃慕课,中国却趋之若鹜
查看>>