';">
当前位置:   article > 正文

js 在指定宽高元素中插入自适应图片_var html = '
作者:我家小花儿 | 2024-02-18 20:52:55

var html = '';

在一个指定宽高的div中根据图片尺寸做相应展示。首先,需要获取图片的真实宽高,其次比较图片宽高和容器宽高,根据不同情形设置图片元素的展示样式。这里分三类:1、如果图片的width和height均小于容器的width和height,那么直接让图片上下左右居中;2、 如果图片的width大于容器的width或height大于容器的height,图片的宽高比大于容器比例,让图片按照宽度等比例缩放,然后垂直居中(容器需line-height);3、 如果图片的width大于容器的width或height大于容器的height,图片的宽高比小于容器比例,让图片按照高度等比例缩放,然后左右居中(容器需text-align:center;vertical-align:middle);

css:

  1. .outer{
  2. margin: auto;
  3. margin-top: 20px;
  4. width: 400px;
  5. height: 300px;
  6. text-align: center;
  7. line-height: 300px;
  8. border: 2px solid bisque;
  9. }
  10. .img{
  11. vertical-align: middle;
  12. }

html:

  1. <div style="" class="outer"id="picdiv"></div>
  2. <button id='addImg'>ok</button>

js:IE中如果图片已经缓存过onload可能不触发,因为IE加载缓存快,未运行到onload图片就已经加载好了,所以还需要用complete判断图片是否加载完毕,IE根据这个属性判断图片是否已加载完并显示,值为true表示已显示,此时可以直接获取宽高。注complete和缓存没有关系,即和以前是否加载过该张图片没有关系。

可参考:http://blog.sina.com.cn/s/blog_73c8ed1901013k70.html

  1. var imgLoad = function (url,callback) {
  2. var img = new Image();
  3. img.src = url;
  4. if (img.complete) {
  5. callback(img.width, img.height);
  6. } else {
  7. img.onload = function () {
  8. callback(img.width, img.height);
  9. img.onload = null;
  10. };
  11. };
  12. };
  13. document.getElementById('addImg').οnclick=function(){
  14. var url="xxx/xxx.jpg";
  15. imgLoad(url,function(width,height){
  16. var h= height; 
  17. var w= width;
  18. var outerw=document.getElementById('picdiv').clientWidth;//scrollWidth
  19. var outerh=document.getElementById('picdiv').clientHeight;
  20. var imgNode=document.createElement('img');
  21. //.appendChild(div);
  22. var html="";
  23. if( (w>outerw||h>outerh)&&w/h>=outerw/outerh){
  24. //920*554 宽高
  25. //宽比较大 width 100%
  26. html='<img style="width:100%;" class="img" src="'+url+'">';
  27. }else if((w>outerw||h>outerh)&&w/h<outerw/outerh){
  28. html='<img style="height:100%;" class="img" src="'+url+'">';
  29. }else {
  30. html='<img style="" class="img" src="'+url+'">';
  31. }
  32. document.getElementById("picdiv").innerHTML = html;
  33. })
  34. }

或jquery:

  1. $("#addImg").on('click',function(){
  2. var url="xxx/xxx.jpg";
  3. $("<img/>").attr("src",url).load(function() {
  4. var h= this.height;
  5. var w= this.width;
  6. var outerw=$(".outer").width();
  7. var outerh=$(".outer").height();
  8. var html="";
  9. if( (w>outerw||h>outerh)&&w/h>=outerw/outerh){
  10. //920*554 宽高
  11. //宽比较大 width 100%
  12. html='<img style="width:100%;" class="img" src="'+url+'">';
  13. }else if((w>outerw||h>outerh)&&w/h<outerw/outerh){
  14. html='<img style="height:100%;" class="img" src="'+url+'">';
  15. }else {
  16. html='<img style="" class="img" src="'+url+'">';
  17. }
  18. $("#picdiv").html(html);
  19. });
  20. })


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/110492?site
推荐阅读
相关标签
  

闽ICP备14008679号