自适应页面设计: Viewport控制, media query和相对单位
viewport,视口,就是对用户的可见部分, 大小因设备而不同。H5引入。
* 没有它: 整体缩放 ( 老网页是固定的大小,浏览器在手机上只是简单地缩放整个页面,所以用户体验很差)
* 有了它: 浏览器会重新排版。而且,
屏幕大小就是Chrome仿真器提示的size。 所以, mobile页面必须要它
用户习惯:
*
用户都习惯上下滚动网站,而不是横向滚动,因此,如果用户必须横向滚动或缩放页面才能阅读,那么这将给用户带来糟糕的体验。
Best Practice:
* 自适应设计的主要概念基础是流畅性和比例可调节性
自适应网页设计(这一概念最初是由 Ethan Marcotte 在’A
List Apart’中提出的)回应了用户及其所用设备的需求。版式会因根据设备的大小和功能而变化。例如,手机可能会以单列视图的形式呈现内容,而同样的内容可能会以双列的形式呈现在平板电脑上。
一、视口元素 (viewport meta tag是Apple 的Mobile Safari 引入的,专门对Mobile, 并非标准, 但是多数Mobile浏览器支持)
(Apple官方资料见
https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html)
其HTML文档中必须包含元视口元素(如下),指示浏览器如何对网页尺寸和缩放比例进行控制。
<meta
name="viewport"
content="width=device-width, initial-scale=1.0">
(以上是正式的写法 HTML5的)
or simplified
as:
<meta
viewport="width=device-width, initial-scale=1.0">
其中:
width=device-width指令浏览器给网页重排内容,使之适合不同的屏幕大小
initial-scale=1 指示浏览器在不考虑设备方向的情况下,将 CSS 像素与设备无关像素的比例设为 1:1,并允许网页完全占用横向宽度 (特别是 手机旋转模式下)
注意
- 使用英文逗号分隔属性,确保旧版浏览器可以准确解析相关属性。除了设置 initial-scale 外,您还可以在视口上设置以下属性:
- minimum-scale
- maximum-scale
- user-scalable
但是,设置后,这些属性可以停用用户缩放视口的功能,可能会造成网页访问方面的问题。
实例:
<meta name="viewport" content="width=device-width,
initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
视图参数:
宽度是Device的宽度, 不缩放 (初始比例1,最小比例1,
最大比例1)
二、不要使用很宽的元素,浏览器无法自动重排它。
如果图片宽度大于视口宽度,那么就会导致视口横向滚动。您应该调整此内容,使其适合视口内的宽度,以便用户无需横向滚动
1) 如果元素的css宽度过大,则它在窄视口的设备上水平超界. ==》用相对单位100%好. (例如,iPhone 等宽度为 320 CSS 像素的设备)
2) 如果元素的css位置过大,则它超界,显示在屏幕外.
。因此,请改为使用相对宽度值,例如 width: 100%。同样请注意,使用较大的绝对定位值可能会使元素脱离小屏幕上的视口
设计元素的最佳效果,不要依赖于viewport的宽度。 因为以css像素单位表达的某些屏幕的分辨率和宽度变化很大。
三、媒体查询(@media)
媒体查询是可应用于 CSS 样式的简单过滤器。有了这些过滤器,我们可以根据设备呈现内容的特点轻松更改样式,包括显示屏类型、宽度、高度、方向甚至是分辨率
您可以将打印必需的所有样式放在打印媒体查询中:
<link
rel="stylesheet" href="print.css"
media="print">
* 在样式表链接中使用 media 属性
* 嵌入 CSS 文件的媒体查询:@media 和 @import。(尽量避免使用 @import,以提高性能)。
例如: 下面的代码片段, 当 设备的宽度介于500px到 600px之间, 而其是 横屏的时候,定义一组样式。
@media (min-width: 500px) and (max-width: 600px) and (orientation: landscape) {
h1 {
color: blue;
}
.desc:after {
content:" 本设备的宽度介于500px到 600px, 而其是 横屏";
}
}
其中使用了media的min-width, max-width和orientation参数,用了逻辑运算and, 还可以查询min-height, max-height等参数, 更多参数和逻辑运算参考:https://www.w3schools.com/cssref/css3_pr_mediaquery.asp
不同媒体查询适用的逻辑并不是互斥的,因此,开发者可以根据 CSS 中优先级的标准规则,应用满足生成的 CSS 区块标准的任何过滤器。
<link
rel="stylesheet" media="(max-width: 640px)"
href="max-640px.css">
<link
rel="stylesheet" media="(min-width: 640px)"
href="min-640px.css">
- 当浏览器宽度介于 0 像素和 640 像素之间时,系统将会应用 max-640px.css。
- 当浏览器宽度为 640 像素或大于此值时,系统将会应用 min-640px.css。
<l <link
rel="stylesheet" media="(orientation: portrait)"
href="portrait.css">
<link
rel="stylesheet" media="(orientation: landscape)"
href="landscape.css">
- 在竖版Portrait时,使用 portrait.css。
- 在横版Landscape时,使用 landscape.css。
用min-width创建查询, 不要用min-device-width。因为:min-width 以浏览器窗口尺寸为依据,浏览器支持度好。
备注( min-device-width
屏幕尺寸为依据,浏览器支持差, 或者误报为预期的视口宽度。另外,使用 *-device-width 会阻止内容适应允许窗口调整大小的桌面设备或其他设备,因为该查询基于设备的实际大小,而非浏览器窗口大小)
四、使用相对单位
在顶级 div 上设置 width: 100% 可以确保其横跨视口的宽度,对视口来说既不会太大也不会太小。无论设备是宽度为 320 像素的 iPhone、宽度为 342 像素的 Blackberry Z10,还是宽度为 360 像素的 Nexus 5,div 均会适合这些屏幕。
此外,使用相对单位可让浏览器根据用户缩放程度呈现内容,而无需为网页添加横向滚动条。
div.fullWidth {
width: 100%; }
https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/size-content-to-the-viewport?hl=zh-cn
(RWD: Responsive Web Design)
五、基于视口大小的相对单位,vw, vh,vmin和vmax
这4个相对单位是CSS3新增的
vw: 1% viewport width
vh: 1% viewport height
vmin: 就是min(vw, vh)
vmax: 就是max(vw, vh)
举个例子,如果视口宽 = 1024, 高=768, 那么
10vw 就是102.4
10vh 就是76.8
在横屏的时候, vmin就等于 vh, 768
在竖屏的时候, vmin就等于 vw
使用此单位的设计,能够自动使用各种手机屏幕的大小。省去了media query。
附录: 常见手机的设备分辨率和viewport分辨率 (http://www.cnblogs.com/GameEngine/p/7237405.html)
自适应页面设计: Viewport控制, media query和相对单位的更多相关文章
- viewport和media query
viewport: 你可以定义viewport的宽度.如果你不使用width=device-width,在移动端上你的页面延伸会超过视窗布局的宽度(width=980px),如果你使用了width=d ...
- CSS3 Media Query实现响应Web设计(宽度为不同的移动设备)
现在的屏幕分辨率.小到320px(iPhone),大到2560px或甚至更高(大显示屏).范围内变化很大.除了使用传统的台式机.用户会越来越多的通过手机.上网本.iPad一类的平板设备来浏览页面. 这 ...
- 手机web——自适应网页设计(html/css控制)
一. 允许网页宽度自动调整: "自适应网页设计"到底是怎么做到的? 其实并不难. 首先,在网页代码的头部,加入一行viewport元标签. <meta name=" ...
- 【转】手机web——自适应网页设计(html/css控制)
手机web——自适应网页设计(html/css控制) 就目前形势来看,Web App 正是眼下的一个趋势和潮流,但是,对于Web App的设计可能大家有的不是很了解,下面就将整理好的网页设计的技巧奉献 ...
- 使用rem设计移动端自适应页面三(转载)
使用rem 然后根据媒体查询实现自适应.跟使用JS来自适应也是同个道理,不过是js更精确一点.使用媒体查询: html { font-size: 62.5% } @media only screen ...
- 手机web——自适应网页设计(html/css控制) - 51CTO.COM
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- 手机web——自适应网页设计(html/css控制)【转】
一. 允许网页宽度自动调整: "自适应网页设计"到底是怎么做到的?其实并不难. 首先,在网页代码的头部,加入一行viewport元标签. <meta name="v ...
- 手机web——自适应网页设计(html/css控制)http://mobile.51cto.com/ahot-409516.htm
http://mobile.51cto.com/ahot-409516.htm 一. 允许网页宽度自动调整: "自适应网页设计"到底是怎么做到的? 其实并不难. 首先,在网页代码的 ...
- 手机web——自适应网页设计(html/css控制)(转)
一. 允许网页宽度自动调整: "自适应网页设计"到底是怎么做到的?其实并不难. 首先,在网页代码的头部,加入一行viewport元标签. <meta name="v ...
随机推荐
- http1.1 和 http2 的协议对比测试
http1.1 和 http2 的协议对比测试 http 协议发展了很多年,目前最为流行的是 http 2. 发现有些网站很流行的网站用的 http1.1, 询问后原来是因为有特殊用途. https: ...
- [转]分布式系统唯一ID生成方案汇总
系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结.生成ID的方法有很多,适应不同的场景.需求以及性能要求.所以有些比较复杂的系统会有多个ID生成的策略.下面就介绍一些常见 ...
- haproxy参数
https://blog.csdn.net/chengfei112233/article/details/78983026 https://www.cnblogs.com/dkblog/archive ...
- 六、springboot(三)配置双数据源
1.目录结构 2.jdbc.properties配置 #db houge spring.datasource.houge.jdbc-url=jdbc:oracle:thin:@:ORCL spring ...
- java中==与equals
== ==可用于比较基本类型与引用类型,对于基本类型变量比较的是其存储的值是否相等,对于引用类型则比较的是其是否指向同一个对象. 如: int a = 10; int b = 20; double d ...
- RedHat6.5安装kafka集群
版本号: Redhat6.5 JDK1.8 zookeeper-3.4.6 kafka_2.11-0.8.2.1 1.软件环境 1.3台RedHat机器,master.slave1. ...
- iOS开发 SourceTree将develop合并到master分支的详细步骤
- 开发人员行走Unix的随身四艺
Unix系统永远只会越来越多,开发人员就没必要特意学习它们的安装.配置和管理了,就全部交给集成人员吧. 但开发人员行走于Unix之间,依然有四样东西要熟练. 一.VI 虽然Unix上的 ...
- require的定义看不懂【2】
一段代码扔出来,前不着村后不着店的,各种全局变量 还有,现在还在纠结Id,url, 作者充其量也在写读书笔记,完全沿着自己思路走,也不管读者是否跟得上,这居然也能出书. 这一段,掌握源码,或者写过的人 ...
- line-height的理解
font-size:0清除display:inline-block元素换行符间隙,比如两个img标签之间有换行符 行内元素的高度是由其行高决定的. Div或者其他元素内的图片,底部会有间隙,原因是图片 ...