响应式布局
2016-02-28 11:04
387 查看
响应式设计的步骤
1.meta标签
在<head>标签里加入这个meta标签:<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
a、width : 控制viewport的大小,可以指定一个值,如600, 或者特殊的值,如device-width为设备的宽度(单位是缩放为100%的CSS的像素)
b、height : 和width相对应,指定高度
c、initial-scale : 初始缩放比例,页面第一次加载时的缩放比例
d、maximum-scale : 允许用户缩放到的最大比例,范围从0到10.0
e、minimum-scale : 允许用户缩放到的最小比例,范围从0到10.0
f、user-scalable : 用户是否可以手动缩放,值可以是:①yes、 true允许用户缩放;②no、false不允许用户缩放
2. 通过媒体查询来设置样式 Media Queries(核心)
CSS3 Media Queries得到了众多浏览器支持,除了IE6-8浏览器不支持之外,在所有现代浏览器中都可以完美支持。根据条件告诉浏览器如何为指定视图宽度渲染页面
假如一个终端的分辨率小于 980px,那么可以这样写:
@media screen and (max-width: 980px) {
#head { … }
#content { … }
#footer { … }
}
这里的样式就会覆盖上面已经定义好的样式。
在CSS2中常碰到的就是all(全部)、screen(屏幕)、print(页面打印或打印预览模式),其实媒体类型远不止这三种,W3C总共列出了10种媒体类型。如下表所示:
值 | 设备类型 |
All | 所有设备 |
Braille | 盲人用点字法触觉回馈设备 |
Embossed | 盲文打印机 |
Handheld | 便携设备 |
Print | 打印用纸或打印预览视图 |
Projection | 各种投影设备 |
Screen | 电脑显示器 |
Speech | 语音或音频合成器 |
Tv | 电视机类型设备 |
Tty | 使用固定密度字母栅格的媒介,比如电传打字机和终端 |
Media Queries使用方法
@media 媒体类型and (媒体特性){你的样式}Media Queries可以使用关键词"and"将多个媒体特性结合在一起。也就是说,一个Media Query中可以包含0到多个表达式,表达式又可以包含0到多个关键字,以及一种媒体类型。
常用的方式:
A.最大宽度max-width,是指媒体类型小于或等于指定的宽度时,样式生效
B.最小宽度min-width,是指媒体类型大于或等于指定的宽度时,样式生效
C.设备屏幕的输出宽度device-width
D.Not关键词,用来排除某种制定的媒体类型
E.Only关键词,only用来指定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器。其实only很多时候是用来对那些不支持Media Query但却支持Media Type的设备隐藏样式表的。其主要有:支持媒体特性的设备,正常调用样式,此时就当only不存在;表示不支持媒体特性但又支持媒体类型的设备,这样就会不读样式,因为其先会读取only而不是screen;另外不支持Media Queries的浏览器,不论是否支持only,样式都不会被采用
3.布局技巧
第一, 尽量少用无关紧要的div;第二,不要使用内联元素(inline);
第三,尽量少用JS或flash;
第四,丢弃没用的绝对定位和浮动样式;
第五,摒弃任何冗余结构和不使用100%设置。
第六,使用HTML5 Doctype和相关指南;
第七,重置好你的样式(reset.css);
第八,一个简单的有语义的核心布局;
第九,给重要的网页元素使用简单的技巧,比如导航菜单之类元素。
怎么样的布局或者说HTML结构才是简单干净的呢?这里教大家一个快速测试的方法。你首先禁掉你页面中所有的样式(以及与样式相关的信息),在浏览器中打开,如果你的内容排列有序,方便阅读,那么你的这个结构不会差到哪里去。
注意事项
1. 宽度需要使用百分比例如这样:
#head { width: 100% }
#content { width: 50%; }
2. 处理图片缩放的方法
简单的解决方法可以使用百分比,但这样不友好,会放大或者缩小图片。那么可以尝试给图片指定的最大宽度为百分比。假如图片超过了,就缩小。假如图片小了,就原尺寸输出。
img { width: auto; max-width: 100%; }
用::before和::after伪元素 +content 属性来动态显示一些内容或者做其它很酷的事情,在 css3 中,任何元素都可以使用 content 属性了,这个方法就是结合 css3 的 attr 属性和 HTML 自定义属性的功能: HTML结构:
<img src="image.jpg" alt="折腾响应式布局设计"
data-src-600px="image-600px.jpg"
data-src-800px="image-800px.jpg"
alt="">
CSS 控制:
@media (min-device-width:600px) {
img[data-src-600px] {
content: attr(data-src-600px, url);
}
}
@media (min-device-width:800px) {
img[data-src-800px] {
content: attr(data-src-800px, url);
}
}
3. 其他属性
例如 pre ,iframe,video 等,都需要和img一样控制好宽度。对于table,建议不要增加 padding 属性,低分辨率下使用内容居中:
table th, table td { padding: 0 0; text-align: center; }
相关文章推荐
- bzoj 1226 [SDOI2009]学校食堂Dining(状压DP)
- Java中的访问控制权限public protected default private
- 超级Log设想
- background-position 用法详细介绍
- vector list map 遍历删除制定元素 防止迭代器失效
- Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器
- html textarea标签的innerHTML属性和value属性的区别
- IO流 字符流=字节流+编码表
- IbeoSdk4.3.1使用问题【1】-- ibeosdk_VS2012.lib无法解析的外部符号
- clean code
- 4.1.3.1 Android Broadcast-Receiver的心得
- 2-8-双循环链表链式存储结构-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
- c++ gui qt4 chap01 age
- [iOS]Apple Pay接入详细教程
- 数据结构:索引之线性索引
- Error Unable to start the Genymotion virtual device.解决
- 当梦想照进现实
- 当前端也拥有 Server 的能力
- 【leetcode】【18】4Sum
- 使用IIS发布网址之后,访问时需要用户名和密码。