zoukankan      html  css  js  c++  java
  • 第四章两列等高

    两列等高主要是在两列定宽布局结构的基础上扩展的,实现两列等高的方法有:

    1.背景模拟

    在主要内容和侧边栏的父容器上使用背景图片,这个图片根据只要内容和侧边栏的宽度绘制,并可以纵向拉伸,使得主要内容和侧边栏的高度看起来是一样的,如下图所示

    更改的CSS

    优点:实现方法简单,缺点:一旦mainbox 、sidebox宽度改变或者调换位置,图片就要做相应的修改比较麻烦。

     2.利用负边距实现两列等高

    原理:利用padding-bottom:9999px;实现背景颜色拉伸,margin-bottom:-9999px;使底部信息拉近container,在利用overflow:hidden;把多余的背景颜色隐藏起来

        <style type="text/css" >
            
            *{ padding :0;margin :0; }
            .header,.footer{width:960px;height:30px;background-color:#E8E8E8; margin:0 auto; }
            
            .container{width:960px; margin:10px auto;overflow:hidden;}
            .mainbox{float:left; width:650px; color:#FFF; background-color:#333;  }
            .sidebox{float:right;width:280px;color:#FFF;background-color:#999; }
            
            .container:after{content:"";display:block;height:0;line-height:0;font-size:0;visibility:hidden;clear:both;}
           
           .sidebox,.mainbox{padding-bottom:9999px;margin-bottom:-9999px; }
             
        </style>
        <div>
            <div class ="header">头部信息</div>
            <div class ="container ">
                <div class ="mainbox ">
                主要内容主要内<br />
                
                </div>
                <div class ="sidebox">
                侧边栏<br />
                侧边栏<br />
                侧边栏<br />
                侧边栏<br />
                </div>
            </div>
            <div class ="footer clearfloat">底部信息</div>
        </div>

    使用负边距实现两列等高有两个问题:

    1.如果页面使用锚点链接跳转,跳转后部分内容会被隐藏

    没跳转之前:

    跳转后,大部分内容被隐藏了

    2.如果背景图片定位在mainbox、sidebox底部将会看不到图片

    如使用background-position:left bottom ;

    3.边框模拟

    利用mainbox的有边框设置边框宽度和颜色当作侧边栏的背景色,再利用定位把侧边栏定位在mainbox的右边

        <style type="text/css" >
            
            *{ padding :0;margin :0; }
            .header,.footer{width:960px;height:30px;background-color:#E8E8E8; margin:0 auto; }
            
            .container{width:960px; margin:10px auto; position:relative;}
            .mainbox{float:left; width:680px; color:#FFF; background-color:#333; border-right:280px solid #AAA;  }
            .sidebox{ position:absolute;top:0; right:0; width:280px;color:#FFF; }
            
            .container:after{content:"";display:block;height:0;line-height:0;font-size:0;visibility:hidden;clear:both;}
          
             
        </style>

    缺点:侧边栏高度必须小于mainbox否则无法撑开父容器高度,侧边栏的背景色需要设置在mainbox的边框中,且只能设置为单色,不能使用图片

    4.使用JavaScript

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>两列定宽布局</title>
        <style type="text/css" >
            
            *{ padding :0;margin :0; }
            .header,.footer{width:960px;height:30px;background-color:#E8E8E8; margin:0 auto; }
            
            .container{width:960px; margin:10px auto; }
            #mainbox{float:left; width:650px; color:#FFF; background-color:#333;  }
            #sidebox{  float:right; width:280px;color:#FFF;background-color:#999; }
            
            .container:after{content:"";display:block;height:0;line-height:0;font-size:0;visibility:hidden;clear:both;}
             
        </style>
    
        
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <div class ="header">头部信息</div>
            <div class ="container ">
                <div id ="mainbox">
                主要内容主要内<br />
                主要内容主要内<br />
                主要内容主要内<br />
                主要内容主要内<br />
                主要内容主要内<br />
                主要内容主要内<br />
                主要内容主要内<br />
                主要内容主要内<br />
                
                </div>
                <div id ="sidebox">
                <a href ="#a1">侧边栏</a><br />
                侧边栏<br />
                <%--侧边栏<br />
                侧边栏<br />
                侧边栏<br />
                侧边栏<br />
                侧边栏<br />
                侧边栏<br />
    
                侧边栏<br />
                侧边栏<br />
                侧边栏<br />
                侧边栏<br />
                <a id="a1" style ="color:Red;">侧边栏</a>--%>
                </div>
            </div>
            <div class ="footer clearfloat">底部信息</div>
        </div>
        <script type ="text/javascript" >
    
            var mh = document.getElementById('mainbox');
            var sh = document.getElementById('sidebox');
            if (sh.clientHeight < mh.clientHeight) {
                sh.style.height = mh.clientHeight + "px";
            } else {
                mh.style.height = sh.clientHeight + "px";
    
            }
                
        </script>
        </form>
    
        
    </body>
    </html>
  • 相关阅读:
    Web CI/CD Continuous Integration / Continuous Delivery / Continuous Deployment
    hd + TP-Link Switch / wanzhaojiaohuanji / spf+ / TL-ST1008F / TL-ST5016F
    彻底理解js中this的指向,不必硬背(转)
    H5本地存储(转)
    jquery获得 当前页面url的变量
    js中实现base64加密、解密
    项目中easyui-tooltip提示消息运用
    Jquery生成二维码(微信中长按图片识别二维码功能)
    [hdu 3068] Manacher算法O(n)最长回文子串
    Hello world !
  • 原文地址:https://www.cnblogs.com/lidaying5/p/10078456.html
Copyright © 2011-2022 走看看