zoukankan      html  css  js  c++  java
  • 三栏网页宽度自适应布局方法

    前言:三栏网页宽度自适应布局方法常见的方法有三种:绝对定位法,margin负值法,自身浮动法。详解如下:

    1、绝对定位法

    理解:左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离,也就是说主体栏的左margin大于或等于左栏的宽度,主体栏的右margin同样也要大于或等于右栏的宽度。于是实现了三栏自适应布局。

    具体代码如下:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>绝对定位法三栏自适应布局</title>
        </head>
        <style>
            html,body{
                margin: 0;
                height: 100%;
            }
            #left{
                position: absolute;
                top: 0;
                left: 0;
                 200px;
                height: 100%;
                background: red;
            }
            #right{
                position: absolute;
                top: 0;
                right: 0;
                 200px;
                height: 100%;
                background: blue;
            }
            #main{
                height: 100%;
                margin:0 210px;
                background: yellow;
            }
        </style>
        <body>
            <div id="left"></div>
            <div id="main"></div>
            <div id="right"></div>
        </body>
    </html>

    效果如下图:

    缺点:如果中间栏含有最小宽度限制,或是含有宽度的内部元素,当浏览器宽度小到一定程度,会发生层重叠的情况。

    2、margin负值法

    理解:中间的主体栏要使用双层标签。外层一个div宽度100%显示,并且浮动。并且内层content的div才是真正的主体内容,并给内层div含有左右210px的margin值,那样主体栏左右就空出了210px的宽度。

    左栏与右栏都是采用margin负值定位的。左栏左浮动,margin-left为-100%,由于前面主体栏的div宽度为100%,所以这里的-100%margin值正好使左栏div定位到了页面的左侧;右侧栏也是左浮动,其margin-left也是负值,大小为其本身的宽度即200px。

    具体代码如下:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>margin负值法三栏自适应布局</title>
        </head>
        <style>
            html,body{
                margin: 0;
                height: 100%;
            }
            #main{
                 100%;
                height: 100%;
                float: left;
            }
            #main #content{
                height: 100%;
                margin: 0 210px;
                background: yellow;
            }
            #left{
                 200px;
                height: 100%;
                float: left;
                margin-left: -100%;
                background: red;
            }
            #right{
                 200px;
                height: 100%;
                margin-left: -200px;
                float: left;
                background: blue;
            }
            
        </style>
        <body>
            <div id="main">
                <div id="content"></div>
            </div>
            <div id="left"></div>
            <div id="right"></div>
        </body>
    </html>

    效果与绝对定位法效果一致。

    需要注意的一点是:主体,左右侧栏都用了左浮动,但一定是主体栏部分先浮动,那是一定以及肯定的。至于左右两栏谁先谁后,都无所谓。

    3、自身浮动法

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

    具体代码如下:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>自身浮动法三栏自适应布局</title>
        </head>
        <style>
            html,body{
                margin: 0;
                height: 100%;
            }
            #main{
                height: 100%;
                margin: 0 210px;
                background: yellow;
            }
            #left{
                 200px;
                height: 100%;
                float: left;
                background: red;
            }
            #right{
                 200px;
                height: 100%;
                float: right;
                background: blue;
            }
            
        </style>
        <body>
            <div id="left"></div>
            <div id="right"></div>
            <div id="main"></div>
        </body>
    </html>

    效果同第一个相同。

    缺点:1)中间主体存在clear:both属性。如果要使用此方法,需避免明显的clear;2)样式在ie6下会有3px的bug,解决方法:使用hack指定main的margin:0 207px;

    需要注意:三个div标签的顺序的关键是要把主体栏div放在最后,左右两栏div顺序任意。

  • 相关阅读:
    leetcode二叉树翻转二叉树
    编译PBRTv2
    人最大的快乐不是赚多少钱,而是将一个一个的梦想付诸实现。
    今天终于把工作的事定下了安心开始新的学习
    Ogre学习(二)
    关于游戏引擎关于心情
    Ogitor的安装与使用
    软件随想录
    Lost in Island
    OGRE学习(一)
  • 原文地址:https://www.cnblogs.com/caojiayan/p/6308825.html
Copyright © 2011-2022 走看看