栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Html/CSS > CSS教程

图片溢出div问题的快速解决方法推荐

CSS教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

前两天编写了一个前端页面,在本机上显示一切正常。不过在不断的测试中,发现了一个严重的问题,如果图片过大,会撑破div溢出来。再由于页面是自适应页面,根据不同分辨率的显示器会做出相应的div宽度调整,所以图片即使不大,但是因分辨率不同也会出现溢出的情况。

这里探讨总结一下解决方法。

首先我们先来做个简单的css布局:

XML/HTML Code复制内容到剪贴板
  1.   
  2.   
  3.       
  4.     div图片溢出的解决方案  
  5.   
  6.   
  7. #div_home {   
  8.     width:80%;   
  9.     margin: 0 auto;   
  10. }    
  11.   
  12. #div_left {   
  13.     width:70%;   
  14.     height: 800px;   
  15.     float:left;      
  16.     padding: 20px;   
  17. }   
  18.   
  19. #div_right {   
  20.     width: 15%;   
  21.     float: right;   
  22.     height: 800px;   
  23.     padding: 20px;   
  24.   
  25. }   
  26.   
  27.   
  28.   
  29.   
  30.   
  31.   
  32.   
  33.   
  34.       
  35.           
  36.             

      
  37.         
  
  •         
  •   
  •     
  •   
  •   
  •   


  •   

    下面我们再插入尺寸大于div的图片


    大图片

    来看看效果:
     



    这里的图片过大,溢出了div,这里来探讨一下解决方案:

     解决方案一

    在css中设置该图片的样式,把最大宽设置为小于它父级div的宽

    img {    max-width: 730px;}

    但是这样对于不同分辨率的屏幕,也会出现溢出的问题

    先来看一下1366*728的分辨率(本机分辨率)下的图片显示情况:



    似乎解决了问题,我们把分辨率调为 1024*768,来看看效果:



    图片还是溢出来了,对于这种分辨率的屏幕,肯定体验很不友好。

    那么,为了解决还是溢出的问题,可以加入另外一种方法:

    解决方案二

    不显示溢出的部分:

    overflow: hidden;

    这个代码加在div_left 下面:

    CSS Code复制内容到剪贴板
    1. #div_left {   
    2.     width:70%;   
    3.     height: 800px;   
    4.     float:left;   
    5.     padding: 20px;   
    6.   
    7.     overflow: hidden;   
    8. }  

    显然,这种方法的弊端就是图片不能完全显示,我们来试试:





    虽然解决了溢出的问题,但是显示效果上不友好,如果被隐藏的部分刚好有重要的信息,那么这样的设计是不合理的。
     
    最终解决方案

    要满足解决图片溢出div问题,同时图片能完整显示,也要兼容不同的分辨率这三个条件,这里用一段Javascript代码来解决。

    思路是获取 div 的宽,然后动态设置图片的宽度,就这么简单。

    在敲代码之前,先删除 overflow:hidden; 代码,这种“将就”的处理方法我们应该摒弃。

    Javascript Code复制内容到剪贴板
    1. window.onload = function(){   
    2.     var getEle = document.getElementsByTagName("img");   
    3.     var getEle_divLeft = document.getElementById("div_left");   
    4.     for(var i=0; i
    5.         getEle[i].style["max-width"] = getEle_divLeft.offsetWidth - 40 + "px"; //这里-40是padding的左右宽度和   
    6.     }   
    7. }  

    在1028*768的屏幕下的效果:




      

    在1366*768下的效果:



    可能存在的bug及解决对策

    有些div在开始加载的时候,会因为图片的宽度比较大而变宽,然后再由于布局浮动的影响再变小,由于图片获取的是一开始的div宽度,所以他的宽度还是不变。

    这里给出保守的解决方案:

    在css中,先把图片属性设置为none,不显示。在加载javascript代码的时候,设置宽高,再显示出来:

    CSS Code复制内容到剪贴板
    1. img {   
    2.     max-width: 730px;   
    3.     display: none;   
    4. }  

    在Javascript后面加入显示图片代码:

    getEle[i].style["display"] = "inline";

    在代码中的位置:

    Javascript Code复制内容到剪贴板
    1. window.onload = function(){   
    2.     var getEle = document.getElementsByTagName("img");   
    3.     var getEle_divLeft = document.getElementById("div_left");   
    4.     for(var i=0; i
    5.         getEle[i].style["max-width"] = getEle_divLeft.offsetWidth - 40 + "px"; //这里-40是padding的左右宽度和   
    6.         getEle[i].style["display"] = "inline";   
    7.     }   
    8. }  

    这样就解决了这个图片显示溢出div问题,并满足上面三个条件。

    完整代码:

    XML/HTML Code复制内容到剪贴板
    1.   
    2.   
    3.       
    4.     div图片溢出的解决方案  
    5.   
    6.   
    7.   
    8. #div_home {   
    9.     width:80%;   
    10.     margin: 0 auto;   
    11. }   
    12.   
    13. #div_left {   
    14.     width:70%;   
    15.     height: 800px;   
    16.     float:left;   
    17.     background-color: #836FFF;   
    18.   
    19.     padding: 20px;   
    20. }   
    21.   
    22. #div_right {   
    23.     width: 15%;   
    24.     float: right;   
    25.     height: 800px;   
    26.     background-color: #CDCD00;   
    27.   
    28.     padding: 20px;   
    29. }   
    30.   
    31. img {   
    32.     max-width: 730px;   
    33.     display: none;   
    34. }   
    35.   
    36.   
    37.   
    38.   
    39.   
    40. window.onload = function(){   
    41.     var getEle = document.getElementsByTagName("img");   
    42.     var getEle_divLeft = document.getElementById("div_left");   
    43.     for(var i=0; i
    44.         getEle[i].style["max-width"] = getEle_divLeft.offsetWidth - 40 + "px"; //这里-40是padding的左右宽度和   
    45.         getEle[i].style["display"] = "inline";   
    46.     }   
    47. }   
    48.   
    49.   
    50.   
    51.   
    52.   
    53.   
    54.   
    55.       
    56.           
    57.             

        
    58.             

        
    59.         
      
  •           
  •       
  •   
  •   
  • 补充:

    如果浏览器不支持max-width属性,可以给出一个判断,具体思路如下:

    如果浏览器不支持某个CSS属性,那么得到的返回值为undefined,如果支持,则返回空,基于这一点,我们可以加一个判断

    代码:

    XML/HTML Code复制内容到剪贴板
    1. if(getEle[0].style["max-width"]==''){   
    2. //支持max-width的浏览器       
    3. }else{   
    4. //不支持max-width的处理   
    5. }  
    Javascript Code复制内容到剪贴板
    1.   

    以上这篇图片溢出div问题的快速解决方法推荐就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/215937.html

    CSS教程相关栏目本月热门文章

    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号