CSS之圣杯布局与双飞翼布局

圣杯布局

三行等高

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="docm.css">
</head>
<body>
    <div id="page">
      <div id="hd"></div>
         <div id="bd">
         <div class="main">1231111<p>我我我</p><p>我我我</p><p>我我我</p><p>我我我</p></div>
              <div class="sub">11222</div>
              <div class="extra">456</div>
         </div>
      <div id="ft"></div>
  </div>
</body>
</html>

 

css:(在.bd中设置内边距,然后在.sub和.extra中设置负边距把中间的内容显示出来)

*{
  margin: 0;
  padding: 0;
 }
 #hd{
  width: 100%;
  height: 100px;
  background-color: #FC3D83;
 }
.main {
           float: left;
           width: 100%;    //中间内容自适应
           background-color: #ccc;
           padding-bottom: 9999px;       //把内容撑出去后又收回来形成等高
           margin-bottom: -9999px;     //把内容撑出去后又收回来形成等高
 }
 .sub {
           float: left;
           width: 190px;
           margin-left: -100%;      //将内容设置到左边
           background-color: #ED1E25;
           padding-bottom: 9999px;
           margin-bottom: -9999px;
           position: relative;     //设置相对位置来配放,而双飞翼不设置
           left: -190px;      //在.bd中设置内边距,然后在.sub和.extra中设置负边距把中间的内容显示出来
            }
 .extra {
             float: left;
             width: 190px;
             margin-left: -190px;    //将内容设置到右边
             background-color: #f0f;
             padding-bottom: 9999px;
             margin-bottom: -9999px;
             position: relative;    //设置相对位置来配放,而双飞翼不设置
             right: -190px;      //在.bd中设置内边距,然后在.sub和.extra中设置负边距把中间的内容显示出来
 }
 #bd {
          padding: 0 190px 0 190px;    //在.bd中设置内边距,然后在.sub和.extra中设置负边距把中间的内容显示出来
          background-color: #ff0;
          overflow: hidden;     //超出内容隐藏,等高的设置
 }
 #ft{
  width: 100%;
  height: 100px;
  background-color: #5880F4;
 }

 

效果如图:

---------------------------------------------分割线看什么看-------------------------------------------------------------

 

双飞翼布局

 上面的圣杯布局其实已经挺好的,但是因为用了相对定位,所以对于布局就不太稳定,那么如何不用相对定位来实现这个效果呢,于是就有了双飞翼布局,在mian主要内容中加一个盒子包裹,再用margin-left使内容显示出来。

三行等高

HTML:

<div id="page">
      <div id="hd"></div>
         <div id="bd">
              <div class="main"><div class="inside">1231111</div></div>
              <div class="sub">234<p>我我我<p/><p>我我我<p/><p>我我我<p/><p>我我我<p/></div>
              <div class="extra">456</div>
         </div>
      <div id="ft"></div>
  </div>

 

CSS:

*{
  margin: 0;
  padding: 0;
 }

 #hd{
  width: 100%;
  height: 100px;
  background-color: #FC3D83;
 }
.main {
           float: left;
           width: 100%;        //自适应
           background-color: #ccc;
           padding-bottom: 9999px;       //把内容撑出去后又收回来形成等高
           margin-bottom: -9999px;     //把内容撑出去后又收回来形成等高
 }
 .sub {
           float: left;
           width: 190px;
           margin-left: -100%;
           background-color: #ED1E25;
           padding-bottom: 9999px;
           margin-bottom: -9999px;
            }
 .extra {
             float: left;
             width: 190px;
             margin-left: -190px;
             background-color: #f0f;
             padding-bottom: 9999px;
             margin-bottom: -9999px;
 }
 #bd {
          background-color: #ff0;
          overflow: hidden;       //超出的内容隐藏
 }
 .inside{
  margin: 0 190px;      //中间最里的盒子设置外边距把内容显示出来
 }

 

 #ft{
  width: 100%;
  height: 200px;
  background-color: #5880F4;
 }

 

效果如图:

posted on 2016-02-06 11:20  海源  阅读(147)  评论(0编辑  收藏  举报

导航