在进行页面响应式设计中,往往需要根据屏幕分辨率来显示不同大小的字体。通常的做法是通过media queries给不同的分辨率指定不同的字体样式,例如:

body
{
font-size: 22px;
}
h1
{
font-size:44px;
} @media (min-width: 768)
{
body
{
font-size: 17px;
}
h1
{
font-size:24px;
}
}

  除此之外,我们还可以通过下面的方式让字体自适应屏幕分辨率。

1vw = viewport宽度的1%
1vh = viewport高度的1%
1vmin = 1vw或者1vh中较小的值
1vmax = 1vw或者1vh中较大的值

  例如我们可以在样式表中定义如下样式:

h1 {
font-size: 5.9vw;
} h2 {
font-size: 3.0vh;
} p {
font-size: 2vmin;
}

什么是viewport?

  viewport是HTML5中新加入的一个meta标记,其主要作用是为移动客户端的浏览器进行显示优化。通过设置viewport的属性值,可以控制当前页面默认采用什么样的方式在移动端的浏览器中显示页面。下面是一个常用的针对移动网页优化过的页面的viewport meta标记的设置项:

<meta name="viewport" content="width =device-width, initial-scale=1, maximum-scale=1"/>

  如果想让页面支持响应式设计,需要给页面添加viewport meta标记。详见Bootstrap中的响应式设计

  完整的viewport语法如下:

<!-- html document -->
<meta name="viewport"
content="
height = [pixel_value | device-height] ,
width = [pixel_value | device-width ] ,
initial-scale = float_value ,
minimum-scale = float_value ,
maximum-scale = float_value ,
user-scalable = [yes | no] ,
target-densitydpi = [dpi_value | device-dpi | high-dpi | medium-dpi | low-dpi]
"
/>

height:控制viewport的高度,可以指定一个固定的值,或者device-height来表示设备的高度(单位为缩放100%时的像素值)。

width:和height对应,表示viewport的宽度。devive-width表示设备的高度。

initial-scale:页面的初始缩放比例,值允许为小数,表示当前页面大小的倍数。例如2.0表示页面初始状态下会被放大2倍。

minimum-scale:最小允许缩放比例,值允许为小数,表示页面最小能以多大的倍数显示。例如2.0表示页面不能缩小到2倍以下进行显示。

maxmium-scale:和minimun-scale对应,表示最大允许缩放比例。

user-scalable:是否允许用户缩放页面。默认值为yes,当设置为no时minimum-scale和maximum-scale无效。

target-densitydpi:指定页面在什么样的dpi下显示。屏幕像素密度是由屏幕分辨率来决定的,通常定义为每英寸点的数量,即dpi。Android支持三种dpi设置:低像素密度(low-dpi),中像素密度(medium-dpi),高像素密度(high-dpi)。低像素密度的屏幕每英寸上的像素点少,而高像素密度的屏幕每英寸上的像素点多。Android Browser和WebView默认屏幕为中像素密度。也可以直接指定一个具体的dpi值,该值允许的范围为70-400之间。device-dpi表示以设备默认的dpi来显示页面。

  注意:所有的缩放值都必须在0.01-10的范围之内,否则无效。

CSS中几种不同单位之间的比较

px:像素(Pixel)。相对长度单位,所占大小由屏幕分辨率决定。

em:相对长度单位。相当于当前对象内文本的字体尺寸,如果当前对行内文本的字体尺寸未被认为设置,则相对于浏览器的默认字体尺寸。em的值并不是固定的,它会继承父级元素的字体大小。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

rem:CSS3新增的一个相对单位。与em的主要区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。

pt:印刷业上常使用的单位,一般用于页面打印排版,即磅的意思。

%:另外我们还可以使用百分比来指定大小,它表示当前字体相对于浏览器默认字体大小的倍数。该单位在页面响应式设计中也被经常用到。

vw/vh/vmin/vmax:上面已经介绍了,表示字体相对于viewport高或宽的大小。

CSS中字体响应式的设置的更多相关文章

  1. 有关CSS中字体响应式的设置

    在进行页面响应式设计中,往往需要根据屏幕分辨率来显示不同大小的字体.通常的做法是通过media queries给不同的分辨率指定不同的字体样式,例如: body { font-size: 22px; ...

  2. bootstrap中图片响应式

    主要解决的是在轮播图中图片响应式的问题 目的 各种终端都需要正常显示图片 移动端应该使用更小(体积)的图片 实现方式 给标签添加两个data-属性(如:data-img-sm="小图路径&q ...

  3. (转)Spring Boot 2 (十):Spring Boot 中的响应式编程和 WebFlux 入门

    http://www.ityouknow.com/springboot/2019/02/12/spring-boot-webflux.html Spring 5.0 中发布了重量级组件 Webflux ...

  4. Spring Boot 2 (十):Spring Boot 中的响应式编程和 WebFlux 入门

    Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕. WebFlux 使用的场景是异步非阻塞的,使用 Webflux 作为系统解决方案,在大多数场景下可以提高系统 ...

  5. html中的响应式图片

    html中的响应式图片 img sizes 指定屏幕尺寸 srcset 指定可以使用的图片和大小,多个使用逗号分隔,需要指定图片的真实宽度,个人觉得没有picture好用 <img sizes= ...

  6. css中的border-collapse属性如何设置表格边框线?(代码示例)

    css中的border-collapse属性如何设置表格边框线?本篇文章就给大家介绍css中的border-collapse属性是什么? border-collapse属性设置表格边框线的方法.有一定 ...

  7. Vue3中的响应式对象Reactive源码分析

    Vue3中的响应式对象Reactive源码分析 ReactiveEffect.js 中的 trackEffects函数 及 ReactiveEffect类 在Ref随笔中已经介绍,在本文中不做赘述 本 ...

  8. css 字体单位之间的区分以及字体响应式实现

    问题场景: 在实现响应式布局的过程中,如何设置字体大小在不同的视窗尺寸以及不同的移动设备的可读性? 需要了解的有: 1.px,em,pt之间的换算关系 1em = 16px 1px  = 1/16 e ...

  9. Vue.set 向响应式对象中添加响应式属性,及设置数组元素触发视图更新

    一.为什么需要使用Vue.set? vue中不能检测到数组和对象的两种变化: 1.数组长度的变化 vm.arr.length = 4 2.数组通过索引值修改内容 vm.arr[1] = ‘aa’ Vu ...

随机推荐

  1. 〖Linux〗简单的将Shell和一些文件打包成一个单独的“可执行文件”

    有时候给别人分享一个工具的时候,同时需要提供的文件比较多: 如果分享一个压缩包还得教会对方如何解压.执行哪个脚本,感觉需要传输的内容多了就不方便: 把几个Shell脚本和文件打包成一个“单独的可执行文 ...

  2. Selenium得到当前页面的URL

    /** * getCurrentURL:(get the current page URL address). * @author huchan * @param driver --- the web ...

  3. Lotusscript统计在线用户数

    使用notessession的SendConsoleCommand方法向服务器控制台发送“show inetusers”命令,该命令返回一个结果(字符串),字符串类似如下: admin   192.1 ...

  4. mybatis 于 hibernate区别

    两者区别是还是非常大的,结合至今为止的经验,总结出以下几点: 1. hibernate是全自动,而mybatis是半自动. hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的Ja ...

  5. XC文件管理器-打造优美易用的文件管理器

    技术:Android+java   概述 XC文件管理器,是基于Android6.0+开发的一个方便易用的文件管理器,具有文件的目录管理和文件的管理,主要包括文件的新建.删除.重命名.复制,移动剪切以 ...

  6. Kubernetes 选择 IPVS

    什么是 IPVS ? IPVS (IP Virtual Server)是在 Netfilter 上层构建的,并作为 Linux 内核的一部分,实现传输层负载均衡. IPVS 集成在 LVS(Linux ...

  7. 给我一对公钥和私钥,我就能破解此RSA

    RSA密码系统如果暴露了一套公钥和私钥,那么这套密码系统就全部失效了.因为根据公钥和私钥可以完成大整数的分解.暴露了两个质数. 记公钥为e,私钥为d,因为ed%phi=1,所以就得到了一个k=ed-1 ...

  8. 查看/修改Linux时区和时间

    一.时区 1. 查看当前时区 date -R 2. 修改设置时区 方法(1) tzselect 方法(2) 仅限于RedHat Linux 和 CentOS timeconfig 方法(3) 适用于D ...

  9. golang项目结构

    一.概述 golang更新了环境变量,导致整个goproject的结构改变: [root@node175 goproject]# tree -L . ├── bin │   └── demo ├── ...

  10. c# 4.0 - how to i SMTP with c# 4/.NET 4 to port 465/SSL (...

    first, i've discovered through trial and error that c# 4/.NET 4 has some serious limitations which a ...