一、浮动布局+百分比

  1. .row {
  2. width:100%;
  3. overflow:hidden;
  4. zoom:1;
  5. }
  6. .item {
  7. float: left;
  8. width: 20%;
  9. }

该样式兼容性较好,但是无法实现当里面的列增多时比例也随着变化,必须手动修改,当然你也可以使用一个JS来调整了。

二、行内元素(inline-block)+百分比

  1. .row {
  2. width:100%;
  3. font-size: 0; /*行内元素间有字符,诸如回车符等会被浏览器解析成一个空格*/
  4. *word-spacing: -1px;
  5. }
  6. .item {
  7. display: inline-block;
  8. *display: inline;
  9. *zoom: 1;
  10. vertical-align: top;
  11. word-spacing: normal;
  12. letter-spacing: normal;
  13. width: 20%;
  14. }

三、display:table + display:table-cell

我们知道表格可以根据内容进行划分,CSS也有一个样式是display:table来实现类似表格的布局,不过不支持IE8以下浏览器。

  1. .row {
  2. width:100%;
  3. display: table;
  4. }
  5. .item {
  6. display: table-cell;
  7. }

四、使用css3 display:flex

  1. .row {
  2. width: 100%;
  3. display: box; /* OLD 2009版 - Android 4.4- */
  4. display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
  5. display: -webkit-flex; /* NEW - Chrome */
  6. display: flex; /* NEW, Spec - chrome21+ Opera 12.1, Firefox 20+ */
  7. }
  8. .item {
  9. -webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */
  10. -webkit-flex: 1; /* Chrome */
  11. flex: 1;
  12. }

该方法只适用于高级浏览器,哪怕是移动端兼容性也不好,IE10以下的还是算了。具体介绍看另一篇文章。

五、使用栅格化系统

例如Bootstrap的栅格化系统

  1. .col-md-3 { float:left; }
  2. @media (min-width: 992px) {
  3. .col-md-3 { width: 25%; }
  4. /* 父级容器的3/12 */
  5. }
  6. <div class="container">
  7. <div class="row">
  8. <div class="col-md-3"></div>
  9. ...
  10. </div>
  11. </div>

缺点和第一个的float一样,需要根据列数来跳出宽度调整。

总结

如果需要兼容IE6-IE7的,如果列数固定可以使用第一种(浮动布局+百分比)和第二种(行内元素+百分比)。如果列数不固定,可以加少量js支持。

如果是只考虑移动的,考虑第三种(table-ceil),兼容性比下面的flex支持的比较好。

如果单纯的不考虑低版本浏览器的,可以考虑使用第四种(flex)。

附布局基础html代码

  1. <style>
  2. .c-red {
  3. background-color: red;
  4. }
  5. .c-blue {
  6. background-color: blue;
  7. }
  8. .c-gray {
  9. background-color: gray;
  10. }
  11. .c-orange {
  12. background-color: orange
  13. }
  14. .c-green {
  15. background-color: green
  16. }
  17. .container {
  18. width: 1000px;
  19. height: 250px;
  20. margin: 50px auto;
  21. border: 5px solid black;
  22. }
  23. .item {
  24. height: 250px;
  25. }
  26. </style>
  27. <div class="container">
  28. <div class="row">
  29. <div class="item c-red"></div>
  30. <div class="item c-blue"></div>
  31. <div class="item c-gray"></div>
  32. <div class="item c-orange"></div>
  33. <div class="item c-green"></div>
  34. </div>
  35. </div>

css 一行自适应等比例布局的更多相关文章

  1. 常见css垂直自适应布局(css解决方法)

    css3的盒模型, css3中添加弹性盒模型,最新弹性盒模型是flex,之前为box <!DOCTYPE html> <html > <head> <titl ...

  2. 常见css水平自适应布局

    左右布局,左边固定,右边自适应布局 BFC方法解决 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  3. css实现div两列布局——左侧宽度固定,右侧宽度自适应(两种方法)

    原文:css实现div两列布局--左侧宽度固定,右侧宽度自适应(两种方法) 1.应用场景 左侧一个导航栏宽度固定,右侧内容根据用户浏览器窗口宽度进行自适应 2.思路 首先把这个问题分步解决,需要攻克以 ...

  4. CSS流体(自适应)布局下宽度分离原则

    CSS流体(自适应)布局下宽度分离原则 这篇文章发布于 2011年02月28日,星期一,00:48,归类于 css相关. 阅读 73990 次, 今日 5 次 by zhangxinxu from h ...

  5. 七种CSS左侧固定,右侧自适应两栏布局

    一 两栏布局基本HTML和CSS 首先创建基本的HTML布局和最基本的样式. 基本的样式是,两个盒子相距20px, 左侧盒子宽120px,右侧盒子宽度自适应 <div class="w ...

  6. 演示:纯CSS实现自适应布局表格

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. css高度已知,左右定宽,中间自适应三栏布局

    css高度已知,左右定宽,中间自适应三栏布局: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. CSS+DIV自适应布局

    CSS+DIV自适应布局 1.两列布局(左右两侧,左侧固定宽度200px;右侧自适应占满) 代码如下: <!doctype html> <html> <head> ...

  9. div等比例缩放-------纯CSS实现自适应浏览器宽度的正方形

    摘自:https://blog.csdn.net/u010513603/article/details/78200207 1.方案一:CSS3 vw 单位 CSS3 中新增了一组相对于可视区域百分比的 ...

随机推荐

  1. sql 日期表示

    今年时间 昨天,等于0表示今天 =month(时间对应列名) 上月

  2. particlesJS is not defined

    插件或者js文件在引入时需要注意引入顺序,每次都找很久的错误 一般引入min.js就可以,min.js意思就是压缩的js文件 引入时应该先加入min类的文件在引入配置文件 比如particles插件, ...

  3. 新iPhone又要提价,苹果靠什么基业长青?

    在股神巴菲特一番煽情言论之后,苹果股价再创新高,达到187.67美元,总市值约为9450亿美元,正大踏步向着1万亿美元市值的目标前进,这是一条科技.经济.财经.社会等领域的头条新闻,遭到全球各界人士的 ...

  4. Range Sum Query - Immutable(easy)

    1.这道题目与pat中的1046. Shortest Distance (20)相类似: 2.使用一个数组dp[i],记录0到第i个数的和 3.求i到j之间的和时,输出dp[j]-dp[i]+num[ ...

  5. [LC] 48. Rotate Image

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  6. 吴裕雄--天生自然Android开发学习:1.2.2 使用Android Studio开发Android APP

    1.下载Android Studio 官网下载:Android Studio for Window ... :http://developer.android.com/sdk/installing/s ...

  7. Android Studio调用系统隐藏接口EthernetManager

    google source签名文件参考:https://android.googlesource.com/platform/build/+/donut-release/target/product/s ...

  8. 吴裕雄--python学习笔记:BeautifulSoup模块

    import re import requests from bs4 import BeautifulSoup req_obj = requests.get('https://www.baidu.co ...

  9. 对Design model的理解与Java design model的归纳

    设计模式的起源是面向对象程序设计思想,是面向对象设计的精髓--抽象.面向对象通过类和对象来实现抽象,实现时产生了面向对象的三个重要机制:封装.继承.多态.正是这三个机制衍生出了各种各样的设计模式.在面 ...

  10. Substring(Codeforces-D-拓扑排序)

    D. Substring time limit per test 3 seconds memory limit per test 256 megabytes You are given a graph ...