移动终端屏幕自适应的一点经验

1)地球人都知道采用标签:

<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-    scale=1.0,user-scalable=no;">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">

除此之外还有一个content属性 target-densitydpi= medium-dpi,device-dpi,low-dpi,high-dpi 也是会影响的,不过最好设置默认的值 medium-dpi .

2)对于采用<img>标签的图片我们必须明确它的宽高

<img style="width=200px;max-width:100%;height:200px;max-height:100%;"/>

之所以这样设置,原因是图片如果不明确设置宽高,它采用自身的宽高进行页面布局,从而打破了部分浏览器的屏幕自适应。那么我们采用width 与 max-width的目的其一是找一个最好的宽度,如果宽度无法满足,那么不能超越屏幕中设定的最大值,这样的话就不会因为图片而破坏布局了。另外,width与height一般不会同时指定,原因是图片的宽高设置其一,另一个按比例变化,所以设置二者反而适得其反。

3)页面布局时采用的宽度与高度

对于容器我们应该采用百分比设置width,height要么写死px,要么自适应,千万不要使用百分比设置高度,原因是复杂的页面根本控制不住高度的设置。对于容器的padding border margin 不用百分比设置大小,这些调解间距的属性只是粗糙控制而已,因为不同的分辨率下就算你写死了几个像素他们给你的显示也是不一样的。对于非容器类标签当然采用像素控制,不用百分比,或者采用自适应。因为这些标签已经是显示的内容了,内容是必须在UI设计师确定好大小的。

4)文字大小

很多人都认为采用em,相对单位,可是又有人知道吗?这个单位的计算是在父元素的基础上计算大小的,所以必须知道父元素字体的大小你才可能确定这个百分比。就因为这点,我非常不喜欢用它。页面中采用像素设置字体大小不也很好。

5)位置的设置

总是喜欢把文字居中,把位置居中等....写多了页面就知道,居中真的还不如靠右靠左强,原因是:页面中的文字在不断变化(需求还未明确之前),然后一贯居中后发现没有达到左右对齐。为了弥补居中对齐,我往往会采用<span visibility>来控制对齐,想想这会带来多少无意义的标签啊。

6)div 还是 table

一般大的容器我是不会使用table的,这个加载太慢,都懂的。但是小的容器就会采用,想想如果总是采用 div 去 float,你要去兼容多少浏览器啊,不同浏览器对float解析还是稍有差异的。

7)对于不同的屏幕分辨率采用不同的像素,个人觉得像我这种Java程序员真的没心思去那样写,可以接受就可以了,一个页面写那么多CSS,有点不分重点的感觉。

为了更好了解meta标签,下面是转载的内容:


下面是转载 http://my.68design.net/29551/news/14587.html 关于meta标签的真正意义

手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口” (viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网 页的不同部分。常用的viewport布局为:<meta name="viewport" content="width=device-width,user-scalable=no" />

具体的含义是:

width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素),默认的虚拟窗口为980像素宽(目前大部分网站的标准宽度),然后按一定的比例(3:1或2:1)进行缩放。

height:和 width 相对应,指定高度。

target- densitydpi:一个屏幕像素密度是由屏幕分辨率决定的,通常定义为每英寸点的数量(dpi)。Android支持三种屏幕像素密度:低像素密度, 中像素密度,高像素密度。一个低像素密度的屏幕每英寸上的像素点更少,而一个高像素密度的屏幕每英寸上的像素点更多。Android Browser和WebView默认屏幕为中像素密度。

下面是 target-densitydpi 属性的 取值范围

device-dpi –使用设备原本的 dpi 作为目标 dp。 不会发生默认缩放。

high-dpi – 使用hdpi 作为目标 dpi。 中等像素密度和低像素密度设备相应缩小。

medium-dpi – 使用mdpi作为目标 dpi。 高像素密度设备相应放大, 像素密度设备相应缩小。 这是默认的target density.

low-dpi -使用mdpi作为目标 dpi。中等像素密度和高像素密度设备相应放大。

<value> – 指定一个具体的dpi 值作为target dpi. 这个值的范围必须在70–400之间。

<meta name="viewport" content="target-densitydpi=device-dpi" />
<meta name="viewport" content="target-densitydpi=high-dpi" />
<meta name="viewport" content="target-densitydpi=medium-dpi" />
<meta name="viewport" content="target-densitydpi=low-dpi" />
<meta name="viewport" content="target-densitydpi=200" />

为了防止Android Browser和WebView 根据不同屏幕的像素密度对你的页面进行缩放,你可以将viewport的target-densitydpi 设置为 device-dpi。当你这么做了,页面将不会缩放。相反,页面会根据当前屏幕的像素密度进行展示。在这种情形下,你还需要将viewport的 width定义为与设备的width匹配,这样你的页面就可以和屏幕相适应。

initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。

maximum-scale:允许用户缩放到的最大比例,范围从0到10.0。

minimum-scale:允许用户缩放到的最小比例,范围从0到10.0。

user-scalable:用户是否可以手动缩放,值可以是:①yes、 true允许用户缩放;②no、false不允许用户缩放,如果你将其设置为no,那么minimum-scale 和 maximum-scale都将被忽略,因为根本不可能缩放。。

所有的缩放值都必须在0.01–10的范围之内。

将这些属性设置之后放入html5 的meta属性中,即可对手机屏幕进行适应,例:

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]
    "
/>

下面是两个实际使用的例子:

(设置屏幕宽度为设备宽度,禁止用户手动调整缩放)

<meta name="viewport" content="width=device-width,user-scalable=no" />

(设置屏幕密度为高频,中频,低频自动缩放,禁止用户手动调整缩放)

<meta name="viewport" content="width=device-width,target-densitydpi=high-dpi,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
时间: 2024-10-05 04:40:29

移动终端屏幕自适应的一点经验的相关文章

firemonkey 手机屏幕自适应程序问题

我是新手.在我才学了2个星期的时候,那个白痴老板说什么手机屏幕自适应程序,我当时不能理解呀,觉得用Delphi的布局设计不就行了吗.结果他说:我就是想让控件内容什么的放在小屏幕手机上也不出来.我就说,那用布局layout.结果那个傻x又是画控件关于屏幕的位置,又是记录控件的位置,整了一大套.整个把我给整晕了,新手伤不起啊,我不知道Delphi xe5有一个控件布局叫ScaledLayout,结果捣鼓了很长时间.我在Delphi交流群里说这个功能时,大家都说我想多了.唉 ,没办法自己又把控件布局什

virtualbox内部的客户机Fedora25安装扩展增强工具-实现文件共享、屏幕自适应等功能

virtualbox内部的客户机Fedora25安装扩展增强工具-实现文件共享.屏幕自适应等功能 20 如题,为了实现虚拟机和宿主机的文件共享.屏幕全屏等功能,需要给virtulbox内的客户机安装增强工具.请注意前提:虚拟机是Fedora25,其他发行版也可以参考,但请灵活运用.本文宿主机是win7 64,fedora25 LXDE,且二者都是联网状态. 第一步 在客户机开机前,在vbox设置里设置共享目录. 请点选自动挂载,完全控制也是可选的,如果不选客户机无法更改(只读模式)共享目录的内容

Android-关于屏幕适配的一些经验

刚开始,我开发时选取的模拟器是WVGA854,其分辨率为854*480.我开发完毕后装在800*480的手机上时感觉很OK,但是装到480*320.以及320*240分辨率上的手机时,很多界面都变形了,这时我感受到了app自适应的重要性. 自适应主要会遇到两个大问题:横屏和竖屏的切换,以及分辨率大小不同.           一.当横屏切换成竖屏时,解决的办法:      在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,当手机屏幕方向

使用VS2010开发Qt程序的一点经验(转载)

转载:http://www.cnblogs.com/csuftzzk/p/VS_Qt_Experience.html 导读 相比于Qt Creator,我更喜欢用VS2010来进行开发.虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手.其中最重要的一点是,有时候Qt Creator报的错误莫名其妙.要根据提示找到错误根源显得无从下手.而VS的一般错误说明都比较人性化,即便在某些时候无从解决,也可以通过搜索引擎大致定位出错误的源头.下面是

计算机顶级会议Rankings &amp;&amp; 英文投稿的一点经验

英文投稿的一点经验[转载] From: http://chl033.woku.com/article/2893317.html 1. 首先一定要注意杂志的发表范围, 超出范围的千万别投,要不就是浪费时间;另外,每个杂志都有他们的具体格式要求,一定要按照他们的要求把论文写好,免得浪费时间,前些时候,我的一个同事向一个著名的英文杂志投稿,由于格式问题,人家过两个星期就退回来了,而且说了很多难听的话,说投稿前首先就应该看清楚他们的格式要求: 2. 论文写作一定要言简意赅,特别是摘要,引言和结论部分,特

css语法规则屏幕自适应及条目应用优先权

1. !important 提升指定样式条目的应用优先权. div { color: #f00 !important; color: #000;}在上述代码中,IE6及以下浏览器div的文本颜色为#000,!important并没有覆盖后面的规则:其它浏览器下div的文本颜色为#f00 2.可以让屏幕自适应的方法: /* 样式代码导入 样式文件 */ 第一种方式: <link media="screen and (width:800px)" rel="styleshee

关于android屏幕自适应的个人心得

这是一些博主自己对安卓的屏幕自适应的理解,有什么不到之处也别喷. 首先,观察新建的项目res文件夹,大家估计都能找到drawable文件夹有很多个,如drawable-hdpi.drawable-ldpi.drawable-mdpi.drawable-xhdpi,这些文件夹是谷歌公司为屏幕自适应做的准备,意思说各位朋友在做屏幕自适应之前应该准备5套资源图片来出来该问题.相应的比例关系大概是 1 : 0.5 : 0.75 : 1.5 : 2 ,而现在大部分4.0的机子不再适用于240*320和32

4种必须知道的Android屏幕自适应解决方案

文章来源:http://blog.csdn.net/shimiso/article/details/19166167 demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQxN3w1NzAwOTV8MTczOTcz一.细说layout_weight    目前最为推荐的Android多屏幕自适应解决方案.    该属性的作用是决定控件在其父布局中的显示权重,一般用于

HTML5工具做屏幕自适应的两种方法

近一两年,HTML5在中国很火,也出了不少HTML5工具和模板.别的先不说,对于不同的H5工具,解决屏幕自适应问题的区别是什么? 简单来说,感应式设计是当用不同设备访问时,能够根据设备的宽度和高度对设备进行动态的适配.例如,用iPhone4.iPhone5.iPhone6.PC.iPad访问同一个H5网页,都能打开一个适合该设备的一个HTML5页面,不留白边,不变形. 由于设备分辨率和长宽比都不同,如果设计一次就能适应所有的屏幕(包括移动端和PC端),几乎不可能.原因有三: 1. 如果等比例缩放