css布局-基础,单列,双列,三列

2017-02-17  本文已影响0人  愁容_骑士

什么是布局

现有样式

不能满足人们的需求.

人们需要:

CSS 2 并没有提供原生支持,所以需要将一些属性组合起来,以实现布局

“DIV + CSS 布局”?

国外一般不这么叫.<div> 是一个无语义的标签,适合用来做与内容无关的事情.

只能用<div> 吗?

常见布局(pc)

无固定宽度.一般需要百分比来适配
优点:页面好看.
缺点:无论设计还是实现,都比较复杂,要考虑多种情况

常见具体布局

  1. 单列布局

实现:
#定宽
width: 1000px; 或 max-width: 1000px;
#水平居中
margin-left: auto; margin-right: auto; 

max-width 和 width的区别:

优化:
省标签,便于控制局部 范例

通栏

给通栏加背景色 范例

通栏优化:
给 body 设置min-width 去掉滚动背景色 bug

内部元素水平居中
.parent{text-align:center;}
.child{display: inline-block;}

如果child高度不一致,需要设置 vertical-align:top实现顶部对齐.

IE 6 不支持 inline-block :

.child{*display: inline; *zoom: 1;}

bfc可以让元素呈现块级特性,即使是行内元素
使用zoom1可以触发bfc.设置height,width,
加*表示ie浏览器识别

范例

  1. 双列布局

一列固定宽度,另外一列自适应宽度


如何实现

浮动元素 + 普通元素margin 范例

<style>
    #content:after{
      content: '';
      display: block;
      clear: both;
    }
    .aside{
      width: 200px;
      height: 500px;
      background: yellow;
      float: left;
    }
    .main{
      margin-left: 210px;
      height: 400px;
      background: red;
    }
    
    #footer{
      background: #ccc;
    }
  
  </style>
  <div id="content">
    <div class="aside">aside</div>
    <div class="main">content</div>
  </div>
  <div id="footer">footer</div>

如果侧边栏在右边:

.aside{float: right;}
.main{ margin-right: 210px;}

注意:考虑到浏览器的渲染顺序,

  <div id="content">
    <div class="aside">aside</div>
    <div class="main">content</div>
  </div>`

aside和main顺序不可更改.

  1. 三列布局

两侧两列固定宽度,中间列自适应宽度


如何实现

范例

    #content:after{
      content: '';
      display: block;
      clear: both;
    }
    .menu{
      width: 100px;
      height: 500px;
      background: pink;
      float: left;
    }
    .aside{
      width: 200px;
      height: 500px;
      background: yellow;
      float: right;
    }
    .main{
      margin-left: 110px; /*为什么要加margin-left*/
      margin-right: 210px;
      height: 400px;
      background: red;
    }
    
    #footer{
      background: #ccc;
    }

  <div id="content">
    <!-- 注意main的位置 -->
    <div class="menu">aside</div>
    <div class="aside">aside</div>
    <div class="main">content</div>
  </div>
  <div id="footer">footer</div>
上一篇 下一篇

猜你喜欢

热点阅读