zoukankan      html  css  js  c++  java
  • 不定高度的div背景或背景图片不显示问题

    在使用div+css进行网页布局时,如果外部div有背景颜色或者边框,而不设置其高度,在IE浏览器下显示正常。但是使用Firefox/opera浏览时却出现最外层Div的背景颜色和边框不起作用的问题。

    大体结构

    <style>
    .a1 {width:100px;background:red;}
    .b1 {background:blue;width:50px;height:600px;}
    </style> </head> <body> <div class="a1"> <div class="b1"></div> </div> </body>

    原因分析:由于在Firefox和opera中:如果里面的DIV是浮动的(float)而母体不会去计算子体float之后的height。而在 IE中支持这种计算,所以IE下正常。

    所以出现这种问题有两个前提:1.外部div没有设置高度;2. 内部div是浮动的(带有float属性)。

    一般,我们不确定外部div的高度,所以我们要清除浮动。

    实现在div自增长后,其内的背景色或图片如何随之增长。

    .a1{
    100px;background:red;
    height:auto !important; 
        height:550px; 
        min-height:550px;}
    
    .a1:after {
        content:"."; 
        height:0; 
        visibility:hidden; 
        display:block; 
        clear:both;  
        }

    1.在Div末尾加入代码: 
    <div style="clear:both;"></div> 

    或者使用 

    <br style="clear:both;" /> 

    2. 使用after伪类 

    这种方法就是对父容器使用after伪类和内容声明在指定的现在内容末尾添加新的内容。经常的做法就是添加一个“点”,因为它比较小不太引人注意。然后我们再利用它来清除浮动(闭合浮动元素),并隐藏这个内容。 

    这种方法兼容性一般,但经过各种 hack 也可以应付不同浏览器了,同时又可以保证html 比较干净,所以用得还是比较多的。 

    代码如下:

    #a1:after{ 
    content:"."; 
    height:0; 
    visibility:hidden; 
    display:block; 
    clear:both; 


    3.设置overflow为hidden或者auto 

    这种做法就是将父容器的overflow设为hidden或auot就可以在标准兼容浏览器中闭合浮动元素. 

    不过使用overflow的时候,可能会对页面表现带来影响,而且这种影响是不确定的,你最好是能在多个浏览器上测试你的页面 

    4.浮动外部元素,float-in-float 

    这种做法就是让父容器也浮动,这利用到了浮动元素的一个特性——浮动元素会闭合浮动元素。这种方式在 IE/Win 和标准兼容浏览器中都有较好的效果,但缺点也很明显——父容器未必想浮动就浮动的了,毕竟浮动是一种比较特殊的行为,有时布局不允许其浮动也很正常。

  • 相关阅读:
    Bootstrap 2.2.2 的新特性
    Apache POI 3.9 发布,性能显著提升
    SQL Relay 0.48 发布,数据库中继器
    ProjectForge 4.2.0 发布,项目管理系统
    红帽企业 Linux 发布 6.4 Beta 版本
    红薯 快速的 MySQL 本地和远程密码破解
    MariaDB 宣布成立基金会
    Percona XtraBackup 2.0.4 发布
    Rocks 6.1 发布,光盘机群解决方案
    精通Servlet研究,HttpServlet的实现追究
  • 原文地址:https://www.cnblogs.com/moyuling/p/4593699.html
Copyright © 2011-2022 走看看