移动端页面 viewport的设置,横屏字体重置的问题

在最初做的时候因为一直没有在手机上实测页面,导致后来写了好些页面后实测发现页面特别小,几乎都看不见。

原因是每个移动设备都是自己默认的视口宽度

视口:在移动端浏览器当中有两种视口:可见视口(设备屏幕大小)和浏览器视口(网页宽度)。

拿iphone4s来说,它的屏幕是320*480的,但是它却能展示980像素宽度的内容(iphone默认都是980),所以你把网页放到移动端展示就相当于缩小了980/320。手机这样做的目的是可以显示更多的东西,但是结果就是在PC端做好的页面到了移动端就像蚂蚁一样小!

移动端有一个meta标签:viewport,你可以用这个标签设定浏览器视口宽度和可见视口宽度一样。

<meta name="viewport" content="width=device-width">

对于一些不支持viewport的古老的移动设备浏览器(嗯,也许还有,比如黑莓),可以使用如下代码

<meta name="HandheldFriendly" content="true">

不过我觉得现在应该没多少人用这个,一般就写第一行就行了。

说到viewport,他其实还有一些其他属性:

initial-scale:初始缩放比例

maximum-scale:允许缩放的最大比例

minimum-scale:允许缩放的最小比例

user-scalable:是否允许手动缩放

这些属性有什么用呢?

移动设备在竖屏切换到横屏的时候字体会被重置,会变得很大,如何解决呢?

只需要这样设置

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

这样设置页面默认缩放大小比例是1,允许缩放也是1-1,相当于禁止缩放,浏览器只会按照样式定义的字体大小渲染。

你也许会看到这种写法。

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" >

但其实当你使用user-scalable=no 这个属性的时候minimum-scale=1,maximum-scale=1已经被忽略掉了,因为你已经禁止缩放了。

在其他地方找到了一些更具体的说法:

1)、user-scalable=no就一定可以保证页面不可以缩放吗?NO,有些浏览器不吃这一套,还有一招就是minimum-scale=1.0, maximum-scale=1.0 最大与最小缩放比例都设为1.0就可以了。

2)、initial-scale=1.0   初始缩放比例受user-scalable控制吗?不一定,有些浏览器会将user-scalable理解为用户手动缩放,如果user-scalable=no,initial-scale将无法生效。

3)、手机页面可以触摸移动,但是如果有需要禁止此操作,就是页面宽度等于屏幕宽度是页面正好适应屏幕才可以保证页面不能移动。

4)、如果页面是经过缩小适应屏幕宽度的,会出现一个问题,当文本框被激活(获取焦点)时,页面会放大至原来尺寸。

所以为了保险起见,建议使用第二种写法。

当然,这样做的坏处就是禁止用户进行缩放,在《web开发实战》中有一个折中的办法,有兴趣的可以去看下,这里就不在叙述。

一点点题外话:

在CSS3中有一个属性:-webkit-text-size-adjust。

这个属性也是禁止字体缩放,这个属性的好处在于可以自定义范围,可以根据项目需求设定。

需要注意的是这个属性的作用是禁用Webkit内核浏览器的文字大小调整功能而不是对页面缩放控制。中文版chrome浏览器字体最小限制是12px。

不过由于该属性被滥用,在几年前桌面浏览器已经不支持了,所以我也没有真正去用过,都是在其他资料上看到的。

以上,如有错误,敬请指正。

时间: 2024-10-28 11:49:49

移动端页面 viewport的设置,横屏字体重置的问题的相关文章

html5移动端页面分辨率设置及相应字体大小设置的靠谱使用方式

对于动端网页编写CSS网上有很多介绍的文章,但在实际使用过程中还是会纠结. 网上的资料太多,且大多都是技术介绍型,特别是针对android上,网上写的各种麻烦,各种复杂,各种不接地气儿... 我在做移动端网页时,总是和美工设计的页面有出入,主要还是由于双方对移动端HTML5实现页面还了解还不够. 今天就研究一下各大互联网公司对于移动端页面的处理方式. 主要研究对象:BAT(度娘,阿狸,企鹅)这几家的移动端网站或webapp 主要研究点:viewport的设置,字体的设置,图片原始宽高设置 汝甚吊

移动端页面开发的一些常用的设置

viewport 视口(可视区窗口)设置详解 当我们试图在iPhone中输出屏幕宽度的时候,会发现屏幕宽度是980,居然和pc屏幕宽度差不多大 苹果主导的这些手机厂商,为了使用户获得完整的WEB体验,很多设备都会欺骗浏览器返回一个数值较大的视口,告诉浏览器,别以为我身子小,但是我想以980px宽度显示这个页面(分辨率和视口没有关系(开发中根据视口来算的)) 视口对于我们实现响应式是很不方便的.980太大了,不符合我们心中的期待,我们心中认为手机屏幕尺寸应该在320到400之间 默认不设置view

移动端应该如何动态设置字体大小?

rem由来:font size of the root element,那么rem是个单位,单位大小由它第一代老祖宗的font-size的大小决定.现在前端码农们为了能在各个屏幕上看到一个健康的网页在默默的牺牲着自己的健康,因为不仅要知道rem是个单位,更重要的是要知道怎么能在不同分辨率下呈现的页面都很NB. 事故造成原因:1.px单位在PC上很流行,在手机屏幕上一看,MLGB的,同样的12px却小的跟蚂蚁似的.2.好不容易在iPhone4上调的正常了,换个菊花牌手机,MBD不堪入目了.3.知道

移动端H5之动态设置html的font-size的横屏BUG修复以及横屏提示 by FungLeo

移动端H5之动态设置html的font-size的横屏BUG修复以及横屏提示 by FungLeo 前言 在上一篇 移动端之在不同尺寸大小的手机上展示同一效果解决方案 中,我们考虑的只是默认竖屏的情况.很显然,如果用户手机允许屏幕旋转,那么在横屏的情况下,页面就变得很恶心了. 因此我们需要进行一个处理,来判断浏览器是否是横屏,在横屏的情况下,要使用高度值来计算html的font-size. 代码 因为项目引入了jquery,因此下面的代码全部是jquery语法. function htmlFon

移动端页面应该使用什么字体?

设计师们通常喜欢用微软雅黑作为中文字体进行设计,于是我写页面的时候也定义font-family为微软雅黑,后来发到线上后,发现页面的字体不是微软雅黑,后来了解到的手机系统 ios.android 等是不支持微软雅黑字体,为了满足页面需要,保证视觉稿的还原度,手机端是如何定义微软雅黑字体呢? 相信大家会想到 @font-face 定义为微软雅黑字体并存放到 web 服务器上,在需要使用时被自动下载. @font-face {font-family: 'MicrosoftYaHei';src: ur

移动端页面开发总结[摘录]

1.浏览窗口宽带等于设备宽度 <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> 2.禁止数字识别为电话号码 <meta name="format-detection" content="telephone=no"

移动端页面开发

移动端页面开发 移动客户端的开发类型(站在前端立场上来说),主要是三种:Native App(原生APP),也就是完全使用移动设备系统语言写的客户端,iPhone iPad就是纯Object-C,安卓就是纯JAVA, 是性能最棒的开发方式,但灵活性不好.Web App, 就是在移动浏览器里打开的,纯HTML+CSS+JS,说白了就是个网页,只不过非常的富应用,比如手机浏览器访问的GMAIL.就是在浏览器里打开的页面.IOS支持可以在桌面创建访问的快捷方式,但是说到底还是打开Safari跑.而且对

移动端页面布局的那些事儿

移动端页面布局的那些事儿 http://www.xiaoxiangzi.com/Programme/CSS/4298.html 一. viewport 什么是viewport 简单来讲,viewport就是浏览器上,用来显示网页的那一部分区域了,也就是说,浏览器的实际宽度,是和我们手机的宽度不一样的,无论你的手机宽度是320px,还是640px,在手机浏览器内部的宽度,始终会是浏览器本身的viewport.如今的浏览器,都会给自己的本身提供一个viewport的默认值,可能是980px,或者是其

淘宝——移动端页面终端适配

注:本文参考自:http://www.cnblogs.com/xianyulaodi/p/5533201.html 阅读目录 适配的要求 适配的方法,3个步骤 适配中背景图片的处理 适配的原理解析 摘要:在进行移动端界面的书写的时候,如果把宽度高度或者字体大小全部写死的话,那么在所有手机上看到的大小都一样,存在的问题就是同样大小的字体,或者一个盒子模型, 在大屏幕手机上看起来会有点偏小.比如iphone6PLUS.如果是做成适配的话,就很好的解决了这个问题,大屏幕显示的内容大一点,小屏幕显示的小