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>
  • 相关阅读:
    Balder 3D开发系列之创建基本动画
    Expression Blend 的点滴(1)ListBox华丽大变身
    Balder 3D开发系列之创建天空盒
    Balder 3D开发系列之创建自己的primitives
    silverlight 中的应用程序库缓存
    Balder 3D开发系列之——sprite结合Camera旋转木马特效
    VisualTreeHelper不仅仅只是用来查看可视化树结构的
    Balder 3D开发系列之与Sprite初次相遇
    Balder 3D开发系列之给自定义基本体进行贴图操作
    【图解】通过Expression Blend快速制作具有物理效果的动画游戏
  • 原文地址:https://www.cnblogs.com/lidaying5/p/10078456.html
Copyright © 2011-2022 走看看