响应式布局

作者: DJL箫氏 | 来源:发表于2017-09-11 18:27 被阅读109次

由于最近想开发一款响应式系统,之前对于响应式都只是略有了解,没有怎么归纳整理,现在来做一个总结。

@media媒体查询

响应式布局一定离不开媒体查询。

media mediatype and|not|only (media feature) {
    CSS-Code;
}
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }

在这里mediatype一般是screen,在这里media feature一般是max-widthmin-width定义的是可见区域。你也可以针对不同的媒体使用不同 stylesheets :

<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystylesheet.css">

当然在手机端我们一般是会禁止缩放的

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

bootstrap 栅格系统实现

http://v3.bootcss.com/css/#grid

这个开发工具是基于bootstrap的http://www.layoutit.com的布局工具

bootstrap中是使用float来进行布局,然后通过伪元素来进行浮动清除

@media (min-width: 992px)
.col-md-4 {
    width: 33.33333333%;
}
@media (min-width: 992px)
.col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9 {
    float: left;
}
.row:after, .row:before {
    clear: both;
    display: table;
    content: " ";
}

主流屏幕尺寸定义

/* 超小屏幕(手机,小于 768px) */
/* 没有任何媒体查询相关的代码,因为这在 Bootstrap 中是默认的(还记得 Bootstrap 是移动设备优先的吗?) */

/* 小屏幕(平板,大于等于 768px) */
@media (min-width: @screen-sm-min) { ... }

/* 中等屏幕(桌面显示器,大于等于 992px) */
@media (min-width: @screen-md-min) { ... }

/* 大屏幕(大桌面显示器,大于等于 1200px) */
@media (min-width: @screen-lg-min) { ... }

图片

img { max-width: 100%; }

当然还有一种比较巧妙的方式

![](image.jpg)
@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);
    }
}

也就是会根据不同尺寸,加载不同的图片资源,这个方法非常巧妙。data-*允许我们可以在HTML元素中存储一些数据。而且我们可以很方便的通过el.dataset来进行存取删除等等。

字体

另一个比较重要的就是字体的运用,em是根据父元素的font-size来进行计算,rem是根据根元素htmlfont-size来进行计算。

html { font-size:100%; }
@media (min-width: 640px) { body {font-size:1rem;} }
@media (min-width:960px) { body {font-size:1.2rem;} }
@media (min-width:1100px) { body {font-size:1.5rem;} }

移动端1px效果

css中的1px并不总是等于物理像素1px。
在移动端浏览器中以及某些桌面浏览器中,window对象有一个devicePixelRatio属性,它的官方的定义为:设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 / 独立像素。css中的px就可以看做是设备的独立像素,所以通过devicePixelRatio,我们可以知道该设备上一个css像素代表多少个物理像素。例如,在Retina屏的iphone上,devicePixelRatio的值为2,也就是说1个css像素相当于2个物理像素。例如在devicePixelRatio为2的设备中,我们设置1px,实际上是有两个物理像素的,关于移动端的1px解决办法,可以参考这篇文章。
http://www.cnblogs.com/lunarorbitx/p/5287309.html
http://blog.csdn.net/yuhk231/article/details/53976295

调试技巧:我们可以通过[]草料二维码生成器](https://cli.im/)生成二维码。然后手机扫码,就可以在手机上看到电脑上的页面。当然手机和电脑必须要在同一局域网。而且要用IP访问,也就是将localhost换成你的电脑IP地址。由于我使用的是webpack构建的项目,需要进行如下配置:

"dev": "webpack-dev-server -d --hot --inline --colors --progress --env.dev --public --host 0.0.0.0",

然后在webpack-dev-server中配置disableHostCheck: true

devServer: {
    // 配置监听端口
    port: 8080,
    disableHostCheck: true
}

参考资料

http://www.cnblogs.com/lhb25/archive/2013/03/06/making-a-website-responsive-in-3-easy-steps.html

相关文章

  • 响应式布局目录

    └─Web响应式布局├─1 响应式布局介绍├─2 响应式布局实例(Media Queries模块) 上├─3 响应...

  • 九、HTML5响应式布局

    @(HTML5)[相应式布局] [TOC] 九、HTML5响应式布局 什么是响应式网页设计(布局) 响应式网页设计...

  • 响应式网页开发

    响应式布局 什么是响应式布局?可以让一个网站兼容不同分辨率设备的布局 为什么要使用响应式布局?给用户更好的视觉使用...

  • 响应式开发

    响应式布局 什么是响应式布局?可以让一个网站兼容不同分辨率设备的布局 为什么要使用响应式布局?给用户更好的视觉使用...

  • js基础(6)

    27、移动端响应式布局开发 响应式布局开发 1、什么是响应式布局开发?把我们开发完成的产品,能够让其适配不同的设备...

  • flex布局及常用属性

    flex 布局 demo 圣杯响应式布局

  • VUE响应式原理

    VUE响应式原理 这里的响应式(Reactive)不同于CSS布局的响应式(Responsive), 这里的响应式...

  • 响应式布局与自适应布局

    前言 这几天工作的时候被提出需要响应式布局的需求,但是响应式布局和自适应布局有嗲傻傻分不清楚。所以响应式布局和自适...

  • bootstrap系列之响应式布局及相关的visible-sm、

    响应式布局:响应式工具不能用于table元素,而且 本身就不支持 响应式布局需要在处添加如下语句: 在...

  • 响应式布局

    什么叫做响应式布局? 也即是响应式Web设计。响应式布局是Ethan Marcotte在2010年5月份提出的一个...

网友评论

    本文标题: 响应式布局

    本文链接:https://www.haomeiwen.com/subject/ebbfsxtx.html