网站首页 > 技术文章 正文
网上关于响应式设计的教程好复杂,我写一个简版的。
简单说呢就针对不同的屏幕分辨率应用不同的CSS样式。比如在电脑、Pad设备上,屏幕比较宽,就可以一行放2个Div。到了手机上,或者Pad竖着拿的的时候,一行就只放1个Div。
这里有2个关键点:
一是如何在不修改Dom结构的前提下调整布局。
二是如何判断屏幕分辨率并应用对应的CSS。
以上两点都应该不依赖与JS。
实现第一点依靠的是流式布局。就是所有参与布局的DIV都用float:left,宽度都用百分比表示。比如下图,黄色部分的宽度是60%,橘色宽度是40%。
如果将黄色和橘色的宽度都width=100%,那么从1行变成2行了,如下图。从而实现不修改Dom实现布局变化。
那么如何不使用JS而实现动态调整CSS样式就是第二个关键点。
HTML5中提供了一种新的CSS语法——@media,学名是Media Query,可以为不同的分辨率设定不同的样式。
CSS
/* Phone Portrait (320px) */
@media only screen and (max-width: 320px) {
#head { width: 100%; }
#main { width: 100%; }
#foot { width: 100%; }
#left { width: 100%; }
#right { width: 100%; }
}
复制代码
上面这段代码的含义就是当屏幕宽度小于等于320像素时应用大括号中的样式。
下图是在CSS生效时在浏览器中的效果:
@media还有一些更复杂的用法,比如:
CSS
/* Phone Landscape (480px) */
@media only screen and (min-width: 321px) and (max-width: 480px) and (orientation: landscape) {
复制代码
这段语句就是针对iPhone横屏的。即,浏览器宽度在321-480像素之间,且方向是“横向”时生效。
不过自从Retina这中妖艳的屏幕推出,分辨率已经不能代表世界的真相了。小小的Note3的分辨率比一些17“显示的分辨率还高。
所以还有必要判断一下设备的像素密度-device-pixel-ratio。
CSS
@media only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)
复制代码
比如上面的语句就是判断终端的像素比是2的话,所渲染的样式。可以适用于iPhone4,iPhone5等设备。
除了上述两点,还需要在页面上增加一个viewport的meta标签,否则在手机上可能会有页面自动缩放的情况。例如:
HTML
<meta name="viewport" content="width=device-width; initial-scale=1.0">
复制代码
总结一下:响应式布局有三个关键点:
流式布局 Liquid Layout
Media Query
viewport
切图网(qietu.com)是一家专门从事web前端开发的公司,专注we前端开发,关注用户体验,欢迎订阅微信公众号:qietuwang
猜你喜欢
- 2024-11-11 可以让你受益匪浅的10个css使用技巧,值得收藏
- 2024-11-11 防御式CSS是什么?这几点属性重点防御
- 2024-11-11 不用@media,响应式设计实现也可以怎么“秀”
- 2024-11-11 零基础学网页—CSS的调用方式有哪些?
- 2024-11-11 web技术分享|css filter和getUserMedia的联合使用
- 2024-11-11 WEB前端工具推荐丨分享6个热门颜色选择器组件
- 2024-11-11 新的Google Chrome元标签将允许网站推荐设备节电策略
- 2024-11-11 如何构建一个响应式网站 创建一个响应式网页
- 2024-11-11 郑州Web前端入门之如何用CSS做响应式布局
- 2024-11-11 亲历 | 走上舞台 走上舞台实践活动宣传标语
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-