CSS RWD网格视图

  • 什么是网格视图?

    许多网页都基于网格视图,这意味着页面分为列:
    在设计网页时,使用网格视图非常有用。它可以更轻松地在页面上放置元素。 响应式网格视图通常有12列,总宽度为100%,并在调整浏览器窗口大小时缩小和展开。 网格示例》》》
  • 构建响应式网格视图

    让我们开始构建响应式网格视图。首先确保所有HTML元素都box-sizing属性设置为border-box。这可确保填充和边框包含在元素的总宽度和高度中。在CSS中添加以下代码:
    * { box-sizing: border-box; }
    box-sizingCSS Box Sizing章节中阅读有关该属性的更多信息。以下示例显示了一个简单的响应式网页,其中包含两列:
    .menu {
      width: 25%;
      float: left;
    }
    .main {
      width: 75%;
      float: left;
    }
    尝试一下
    如果网页只包含两列,则上面的示例很好。但是,我们希望使用具有12列的响应式网格视图,以便更好地控制网页。首先,我们必须计算一列的百分比:100%/12列=8.33%。然后我们为12列中的每一列创建一个类,class="col-"并使用一个数字来定义该段应跨越的列数:
    .col-1 {width: 8.33%;}
    .col-2 {width: 16.66%;}
    .col-3 {width: 25%;}
    .col-4 {width: 33.33%;}
    .col-5 {width: 41.66%;}
    .col-6 {width: 50%;}
    .col-7 {width: 58.33%;}
    .col-8 {width: 66.66%;}
    .col-9 {width: 75%;}
    .col-10 {width: 83.33%;}
    .col-11 {width: 91.66%;}
    .col-12 {width: 100%;}
    尝试一下
    所有这些列应该浮动到左侧,并且填充(内边距padding)为15px:
    [class*="col-"] {
      float: left;
      padding: 15px;
      border: 1px solid red;
    }
    每行应包裹在一个<div>。行内的列数应始终加起来为12:
    <div class="row">
      <div class="col-3">...</div> <!-- 25% -->
      <div class="col-9">...</div> <!-- 75% -->
    </div>
    行内的列全部浮动到左侧,因此从页面流中取出,其他元素将被放置,就好像列不存在一样。为了防止这种情况,我们将添加一个清除流程的样式:
    .row::after {
      content: "";
      clear: both;
      display: table;
    }
    我们还想添加一些样式和颜色以使其看起来更好:
    html {
      font-family: "Lucida Sans", sans-serif;
    }
    
    .header {
      background-color: #9933cc;
      color: #ffffff;
      padding: 15px;
    }
    
    .menu ul {
      list-style-type: none;
      margin: 0;
      padding: 0;
    }
    
    .menu li {
      padding: 8px;
      margin-bottom: 7px;
      background-color :#33b5e5;
      color: #ffffff;
      box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
    }
    
    .menu li:hover {
      background-color: #0099cc;
    }
    尝试一下
    请注意,当您将浏览器窗口调整为非常小的宽度时,示例中的网页看起来不太好。在下一章中,您将学习如何解决这个问题。