zoukankan      html  css  js  c++  java
  • 四种方法解决DIV高度自适应问题

    本文和大家重点讨论一下解决DIV高度自适应的方法,这里主要从四个方面来向大家介绍,相信通过本文学习你对DIV高度自适应问题会有更加深刻的认识。

    DIV高度自适应

    关于DIV高度的自适应,一直是个让人头疼的问题,整理了一下以前总结的方法,仅表示我也玩过。

    htmlcode:

    1. <div id="container"
    2. <dividdivid="leftSide">这边的高度自适应右侧的高度</div
    3. <dividdivid="rightSide"
    4. <scripttypescripttype="text/javascript"
    5. for(i=0;i<10;i++){  
    6. document.write(i+'<br>');  
    7. }  
    8. </script
    9. </div
    10. </div
    11.  

    可用的方法大概有以下四种:

    1,用absolute设置一个足够高的高度,在父级元素中清除溢出的部分,具体的csscode如下:

    1. #container{font-size:14px;300px;overflow:hidden;  
    2.  
    3. border:3pxsolidblue;margin:10pxauto0;  
    4. color:#fff;position:relative;}  
    5. #leftSide{100px;float:left;height:200000px;  
    6.  
    7. left:0;top:0;position:absolute;background:gray;}  
    8. #rightSide{190px;float:right;  
    9.  
    10. text-align:center;background:purple;}  

    其实这种方法并没有真正的实现左右两个div等高,只是用了障眼法,利用container的overflow:hidden清除了左侧多余的部 分,以达到视觉上左右等高的目的,虽然有“白猫黑猫,逮着老鼠就是好猫”的说法,但是笔者并不着重推荐这种方法,因为给父级元素添加relative,会 带来很多不必要的麻烦,况且只能是设置absolute的一侧自适应另一侧的高度,并不能让两侧中任一侧去自由去适应另一侧!

    2,负外补丁和正内补丁{margin-bottom:-(num)px;padding-bottom:(num)px;}相结合

    1. #container{font-size:14px;300px;overflow:hidden;  
    2. border:3pxsolidblue;margin:10pxauto0;color:#fff;}  
    3. #leftSide{100px;float:left;background:gray;  
    4.  
    5. padding-bottom:9999px;margin-bottom:-9999px;}  
    6. #rightSide{190px;float:right;text-align:center;  
    7.  
    8. background:purple;padding-bottom:9999px;  
    9. margin-bottom:-9999px;}  

    3,利用javascript脚本实现动态设置高度

    1. <scripttypescripttype="text/javascript"
    2. varleft=document.getElementById('leftSide');  
    3. varright=document.getElementById('rightSide');  
    4. if(left.offsetHeight>=right.offsetHeight){  
    5. right.style.height=left.offsetHeight+'px';  
    6. }else{  
    7. left.style.height=right.offsetHeight+'px';  
    8. }  
    9. </script
    10.  

    事实上,这种办法真正意义上实现了两侧等高,并且能让两侧中任一侧去自由去适应另一侧,但是其缺点就在于,只有当DOM加载完成后,才有会这样等高的效果,如果网速够快,这个漏洞可以忽略不计。

    4,在父级元素中填充背景

    CSS code如下:

    1. #container{font-size:14px;300px;overflow:hidden;  
    2. border:3pxsolidblue;  
    3.  
    4. margin:10pxauto0;color:#fff;  
    5.  
    6. background:url(http://www.men-ideal.com/images/unit1030.jpg)repeat-y;}  
    7. #leftSide{100px;float:left;}  
    8. #rightSide{190px;float:right;text-align:center}  

    目前,这种方法是最流行的,同样也是一种“欺骗性”的解决办法,不过除了多使用一张图片之外,都可以堪称完美,这也是笔者极力推荐的!

    最后:

    display:table- cell属性指让标签元素以表格单元格的形式呈现,类似于td标签。目前IE8+以及其他现代浏览器都是支持此属性的,但是IE6/7只能对你说 sorry了,这一事实也是大大制约了display:table-cell属性在实际项目中的应用。

    我们都知道,单元格有一些比较 特别的属性,例如元素的垂直居中对齐,关联伸缩等,所以display:table-cell还是有不少潜在的使用价值的,虽说IE6/7不支持此属性, 但是幸运的是,IE6/7一些乱糟糟的属性与渲染,我们可以其他方法实现同样或是类似的效果。 
    与其他一些display属性类 似,table-cell同样会被其他一些CSS属性破坏,例如float, position:absolute,所以,在使用display:table-cell与float:left或是position:absolute 属性尽量不用同用。设置了display:table-cell的元素对宽度高度敏感,对margin值无反应,响应padding属性,基本上就是活脱 脱的一个td标签元素了。
  • 相关阅读:
    Django-配置Mysql
    Django-manage.py shell命令
    Codeforces 1516B AGAGA XOOORRR
    sitemesh入门教程
    养生好习惯
    解决idea自动导入类String总是导入sun.org.apache.xpath.internal.operations包下的String
    [C#]浅谈协变与逆变
    [C#]跨模块的可选参数与常量注意事项
    [C#]LockBits使用笔记
    1.在校研究生申请软件著作权(学校为第一著作人)
  • 原文地址:https://www.cnblogs.com/smght/p/4505614.html
Copyright © 2011-2022 走看看