在进行页面响应式设计中,往往需要根据屏幕分辨率来显示不同大小的字体。通常的做法是通过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. logstash写日志elaticsearch不响应

    在大量的解析日志并写入elasticsearch,在后端节点数据数量及磁盘性能等影响下,es不响应 问题描述: [--12T17::,][WARN ][logstash.outputs.elastic ...

  2. Highstock 演示 › 导航器包含多数据列

    $(function () { var seriesOptions = [], seriesCounter = 0, names = ['MSFT', 'AAPL', 'GOOG']; /** * C ...

  3. 说说JSON和JSONP,也许你会豁然开朗,含jQuery使用jsonp用例

    [原创]说说JSON和JSONP,也许你会豁然开朗,含jQuery用例  前言: 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了 ...

  4. bat批处理,实现获取目录

    @echo off echo 当前盘符:%~d0  echo 当前盘符和路径:%~dp0  echo 当前批处理全路径:%~f0  echo 当前盘符和路径的短文件名格式:%~sdp0  echo 当 ...

  5. sqlserver学习笔记(三)—— 为数据库添加新的用户

    首先,用windows或sa身份登录sqlserver, 打开安全性——登录名——右键新建登录名:在选择页——常规中,新建命为user_b的登录名,选择sqlserver身份验证方式,设置密码确认密码 ...

  6. 如何在windows server 2008 部署asp.net mvc

    我们做好的asp.net mvc网站,要部署到windows server 2008(IIS7.0)网站,首先要安装好.net framework 4.0,开发工具VS2010,VS2012,VS20 ...

  7. 搭建自己的 github.io 博客

    1.前言 github.io 是基于 Github 的 repo 管理,这意味着咱们对其是有绝对的控制,这个跟放在第三方的平台比,可控性要好太多. 使用 github pages 服务搭建博客的好处有 ...

  8. 替换SQL字段中的换行符,回车符

    替换SQL字段中的换行符,回车符: 在富文本内容中通常会出现回车.换行内容.在sql数据库中这些回车.换行符,输出html后,表现为空格. 这里是在数据导出.导入中发现的,通常把回车.换行符找出来,用 ...

  9. 《JAVA与模式》之模板模式(转载)

    模板方法在servlet中的应用:http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html 原文出处:http://blo ...

  10. Android如何实现点击一次返回键返回桌面而不是退出应用

    具体代码如下所示: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent. ...