当页面需要适应各种尺寸的设备时,就应该使用弹性网格,让整个布局结构根据用户行为,以及设备环境进行响应式调整。

弹性网格是一个网格系统,它参考流式布局中网格系统的设计,将每个格子设置为百分比宽度,以便网格的宽度会随时根据浏览器窗口大小做出相应的调整。

那如何将固定宽度的网格系统,转换成弹性网格系统对应的百分比宽度呢?响应式设计之父 Ethan Marcotte 提供了一个简单易行的公式:

目标元素宽度 ÷ 上下文元素宽度 = 百分比宽度

先不要被这个公式吓到,在创建响应式布局时,它很快就会成为你的得力助手。先看看下面的设计,如何把它从固定宽度转换为百分比宽度:

  1. <body>
  2. <div id="wrapper">
  3.     <main></main>
  4.     <aside></aside>
  5. </div>
  6. </body>

这个页面相对简单,在一个 id = "wrapper" 的容器中,包括主内容区 main 和侧栏 aside两部分。采用固定布局的CSS代码如下:

  1. #wrapper {
  2.     margin: 10px auto;
  3.     width: 1000px;
  4. }
  5. aside {
  6.     width: 200px;
  7.     float: left;
  8. }
  9. main {
  10.     width: 780px;
  11.     float: right;
  12. }

上述代码中的所有尺寸,都使用像素值。页面的所有内容都包裹在一个 id = "wrapper" 的div 容器中,div 被设置为居中显示。容器的宽度为1000px,main 和aside 的宽度分别为 780px 和 200px。

要将固定宽度的网格系统,转换成弹性网格系统。首先,以视口的总宽度为基准,把页面容器的宽度转换为百分比宽度。然后,再以容器的宽度为基准,把子元素的固定像素宽度,转换为对应的百分比宽度。

现在,可以使用上面的公式,将固定宽度改成百分比宽度。外层的容器,将以窗口的总宽度为基准,定义其百分比宽度。假设对于宽度为 1024px 的屏幕,套用上面的计算公式,计算百分比宽度:

1000px ÷ 1024px = 97.65625%

得到的准确宽度为97.65625%,这样的话,得到的宽度跟固定宽度将完全相同。当然,你也可以选择 100% 或者 96%,以保证达到最佳的视觉效果。

接下来,再将里层的元素从固定宽度转换为百分比布局,由于 main 和aside 都包裹在#wrapper容器中,此时,main 和 aside 就是目标元素,#wrapper 则是上下文元素。得到 main 的百分比为:

780px ÷ 1000px = 78%

同理,计算出 aside 的百分比为 20%。经过上述一番转换之后,页面的基本结构都变成了百分比布局,相应的CSS代码如下:

  1. #wrapper {
  2.     margin: 10px auto;
  3.     width: 97.65625%;
  4. }
  5. aside {
  6.     width: 20%;
  7.     float: left;
  8. }
  9. main {
  10.     width: 78%;
  11.     float: right;
  12. }

如果 main 和 aside 也包含子元素,则使用相同的方法进行计算,只是上下文元素会随之发生改变。对于 main 的子元素,上下文元素就是 main 元素,对于 aside 的子元素,上下文元素就是 aside 元素,依次类推。

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

CSS3 响应式布局之弹性网格相关推荐

  1. html响应式弹性布局,CSS3响应式布局之弹性盒子

    CSS3弹性盒模型可以轻松的创建自适应浏览器流动窗口的布局或自适应字体大小的布局.同时该盒子决定了一个盒子在其他盒子的分布方式,及如何处理可用的空间. 自己写了一个弹性盒子的demo: 主要HTML代 ...

  2. html5/css3响应式布局介绍及设计流程

    html5/css3响应式布局介绍 html5/css3响应式布局介绍及设计流程,利用css3的media query媒体查询功能.移动终端一般都是对css3支持比较好的高级浏览器不需要考虑响应式布局 ...

  3. html5/css3响应式布局介绍

    转载链接:http://www.51xuediannao.com/html+css/htmlcssjq/694.html html5/css3响应式布局介绍 html5/css3响应式布局介绍及设计流 ...

  4. Henry前端笔记之响应式布局与弹性布局

    Henry前端笔记之响应式布局与弹性布局 弹性布局 Rem布局的原理解析(em 与 rem区别 ): rem如何实现自适应布局 使用CSS3 REM 和 VW 打造等比例响应式页面的便捷工作流 从网易 ...

  5. php响应式布局,响应式布局之弹性布局的介绍

    响应式布局的实现是前端工程中一个非常大的跨越,它非常灵活的可塑造性使得同一个网站能在不同的终端设备上展现出不同的活力.就今天这个机会,我想与大家分享并探讨一些常用来实现响应式布局方法中的弹性布局. 弹 ...

  6. 浅谈CSS3 响应式布局--Media Queries

    CSS3 Media Queries , CSS3媒体查询.使用 @media 查询,你可以针对不同的媒体类型定义不同的样式:也可以针对不同的屏幕尺寸设置不同的样式:当重置浏览器大小的过程中,页面也会 ...

  7. CCS3的过渡、变换、动画以及响应式布局、弹性布局

    CSS3 过渡 .变换.动画 在没有CSS3之前,如果页面上需要一些动画效果,要么你自己编写 JavaScript,要么使用 JavaScript 框架(如 jQuery)来提高效率. 但是CSS3出 ...

  8. 响应式布局,弹性布局

    响应式 Web 设计 - Viewport 响应式布局是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本. 优点: 面对不同分辨率设备灵活性强 能够快捷解决多设备显示适应问题 缺点: 兼容 ...

  9. 静态布局、自适应布局、流式布局、响应式布局、弹性布局简析、BFC

    静态布局:给页面元素设置固定的宽度和高度,单位用px,当窗口缩小,会出现滚动条,拉动滚动条显示被遮挡内容.针对不同分辨率的手机端,分别写不同的样式文件.例如:浏览器窗口是1000px,那么最小的宽度是 ...

最新文章

  1. 交换变量和String类初始化:JAVA入门基础
  2. jmeter基本测试步骤
  3. es6变量的解构赋值
  4. 启动jboss_3种启动JBoss BPM流程的基本方法
  5. 如何删除数据库中的所有用户表(表与表之间有外键关系)
  6. php能做的事情,成就事业要做的十件事
  7. 移动应用可以通过微信沟通接口连接公众号 微信涨粉多了一个新通道
  8. Excel2007数据透视表学习(一)
  9. HCIBench_2.3.1部署_VSAN_测试工具
  10. java通信rs485_基于VB6.0与485仪表的Modbus RTU通信(含代码)
  11. java new 新对象_java基础(五)-----new一个对象的具体过程
  12. ubuntu14.04LTS 安装后几个基本设置
  13. Windows Server 2012和2016从Evaluation评估版升级到正式版方法(附带产品密钥/key)
  14. 基于SSM的图书借阅管理系统的分析与设计(源码+文档+PPT)
  15. 云更新网吧系统服务器,云更新网吧服务器环境要求
  16. 2018大华软件大赛模拟赛第2题 (网络上有一台流媒体服务器S和一台客户端C,S向C发送流媒体数据。)...
  17. 树莓派USB摄像头和motion实现网络监控
  18. excel去除小数点后面的数据,将数字取整
  19. ec20 以太网_整车通讯系统——车载以太网系统系列文章(第一篇)
  20. 手机上的浏览器有几种内核

热门文章

  1. iOS 本地通知 操作
  2. 远程桌面超出最大连接数问题
  3. docker swarm 实战
  4. mysql开机自启动设置
  5. IntelliJ IDEA 安装使用 aiXcoder 智能编程助手
  6. pycharm在linux安装插件,Pycharm安装go插件,开始go之旅
  7. OpenJ_Bailian 4017 爬楼梯
  8. Rest Framework:二、序列化组件
  9. select a method for export 选项
  10. 构建高并发高可用的电商平台架构实践 转自网络