页面布局

一、三列布局实现方法:

1、绝对定位法

这个呢或许是最直观,最容易理解的 :左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离。于是实现了三栏自适应布局。

html,body{margin:0; height:100%;}

#left,#right{position:absolute; top:0; width:200px; height:100%;}

#left{left:0; background:#a0b3d6;}

#right{right:0; background:#a0b3d6;}

#main{margin:0 210px; background:#ffe6b8; height:100%;}

<div id="left"></div>

<div id="right"></div>

<div id="main"></div>

 

2,margin负值法

首先呢,中间的主体要使用双层标签。外层div宽度100%显示,并且浮动(本例左浮动,下面所述依次为基础),内层div为真正的主体内容,含

有左右210像素的margin值。左栏与右栏都是采用margin负值定位的,左栏左浮动,margin-left为-100%,由于前面的div宽度100%与浏览器,所

以这里的-100%margin值正好使左栏div定位到了页面的左侧;右侧栏也是左浮动,其margin-left也是负值,大小为其本身的宽度即200像素。

html,body{margin:0; height:100%;}

#main{width:100%; height:100%; float:left;}

#main #body{margin:0 210px; background:#ffe6b8; height:100%;}

#left,#right{width:200px; height:100%; float:left; background:#a0b3d6;}

#left{margin-left:-100%;}

#right{margin-left:-200px;}

<div id="main">

<div id="body"></div>

</div>

<div id="left"></div>

<div id="right"></div>

 

3、自身浮动法

应用了标签浮动跟随的特性。左栏左浮动,右栏右浮动,主体直接放后面,就实现了自适应。

html,body{margin:0; height:100%;}

#main{height:100%; margin:0 210px; background:#ffe6b8;}

#left,#right{width:200px; height:100%; background:#a0b3d6;}

#left{float:left;}

#right{float:right;}

<div id="left"></div>

<div id="right"></div>

<div id="main"></div>

 

二、双飞翼布局

特点是中间自适应,两边固宽,实现思路:中间盒子必须放在第一个,然后统一进行浮动,左右给固定宽,左边margin-left:-100%,右边margin-left:-自身宽度,中间宽100%;就可以简单实现一个双飞翼布局。

* {

margin: 0;

padding: 0;

}

body{

min-width: 700px;

}

.left,

.right,

.center {

float: left;

min-height: 300px;

}

.left {

width: 300px;

margin-left: -100%;

background: lightpink;

}

.right {

width: 200px;

margin-left: -200px;

background: limegreen;

}

.center {

width: 100%;

background: red;

}

.bottom {

width: 100%;

height: 40px;

background: skyblue;

position: fixed;

bottom: 0;

}

.header {

width: 100%;

height: 40px;

background: purple;

position: fixed;

top: 0;

}

.content {

margin-top: 40px;

width: 100%;

}

<div class="header"></div>

<div class="content">

<div class="center"></div>

<div class="left"></div>

<div class="right"></div>

</div>

<div class="bottom"></div>

容器有一个指向三角,实现步骤:

<div class="wrap">

       <div class="childs"></div>

</div>

.wrap {

position: relative;

box-sizing: border-box;

width: 125px;

height: 150px;

border-radius: 5px;

border: 1px solid limegreen;

}

.childs {

width: 10px;

height: 10px;

background: #fff;

border-right: 1px solid limegreen;

border-top: 1px solid limegreen;

transform: rotate(-45deg);

-ms-transform: rotate(-45deg);

-moz-transform: rotate(-45deg);

-webkit-transform: rotate(-45deg);

-o-transform: rotate(-45deg);

position: absolute;

top: -7px;

left: 50%;

margin-left: -7px;

}

等高布局:

实现思路1:首先一个父盒子,下面n个子盒子,想要这些子盒子实现等高布局,首先父盒子转display:table;下面的子盒子使用display:table-cell.就可以实现等高布局。

 <div class="mains">
        <div class="left">
            <p>测试</p>
            <p>测试</p>
            <p>测试</p>
            <p>测试</p>
            <p>测试</p>
        </div>
        <div class="centers">
            <p>测试</p>
            <p>测试</p>
            <p>测试</p>
            <p>测试</p>
        </div>
        <div class="right">
            <p>测试</p>
            <p>测试</p>
            <p>测试</p>
            <p>测试</p>
            <p>测试</p> <p>测试</p>
            <p>测试</p>
            <p>测试</p>
        </div>
    </div>

.mains{
            border:1px solid #000;
            display:table;
        }
  .left,.centers,.right{
            width:200px;
            border:1px solid limegreen;
            display:table-cell;
     }

实现思路2:

父元素通过相对定位,子元素通过绝对定位实现(左右高度不能大于中间内容高度)

<div class="parent">
    <div class="left">
        <p>left</p>
        <p>center</p>
        <p>center</p><p>center</p>
        <p>center</p>
    </div>
    <div class="center">
        <p>center</p>
        <p>center</p><p>center</p>
        <p>center</p>
        <p>center</p>
        <p>center</p>
        <p>center</p>
        <p>center</p><p>center</p>
        <p>center</p>
        <p>center</p>
        <p>center</p>
    </div>
    <div class="right">
        <p>right</p>

    </div>
</div>

.parent{
    position: relative;
}
.center{
    border-left: 200px solid lightblue;
    border-right: 300px solid lightgreen;
    background-color: pink;
}
.left{
    position: absolute;
    top: 0;
    left: 0;
    width: 200px;
}
.right{
    position: absolute;
    top: 0;
    right: 0;
    width: 300px;
}

实现思路3:利用弹性盒实现等高布局,父盒子转弹性盒:display:flex,所有的子盒子给予flex:1;

<div class="parent">
    <div class="left">
        <p>left</p>
        <p>center</p>
        <p>center</p>

    </div>
    <div class="center">
        <p>center</p>

    </div>
    <div class="right">
        <p>right</p>
        <p>center</p>
        <p>center</p>
        <p>center</p>
        <p>center</p>
        <p>center</p>
        <p>center</p>
        <p>center</p>
    </div>
</div>

.parent{
    display: flex;
    border:2px solid #000;
    width: 500px;
}
.left,.centerWrap,.right{
   flex:1;
   border:1px solid red;
}
.center{
    margin: 0 20px;
    border:1px solid red;
}

具体等高布局参照:https://blog.csdn.net/libin_1/article/details/51318708

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值