jQuery-图片预加载+等比例缩放+图片在容器中上下左右居中!

网站的图片,常常需要按照容器的大小进行等比例缩放(保证图片不失真), 并同时让图片居中显示(左右居中,上下居中)。


实现的代码如下:

注意: 需要自己下载一个 jquery的js。 比如我有一个文件放在 【./js/jquery-1.6.2.js】目录下面



<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>按比例自动缩放图片</title>
    <script src="./js/jquery-1.6.2.js"></script>
    <script>
    /// <summary>
    /// 调整图片大小并居中
    /// </summary>
    /// <remarks>
    /// <param>图片对象</param>
    /// <param>容器最大宽度</param>
    /// <param>容器最大高度</param>
    /// </remarks>
    var adjustImgSize = function(img, boxWidth, boxHeight) {

        // var imgWidth=img.width();
        // var imgHeight=img.height();
        // 上面这种取得img的宽度和高度的做法有点儿bug 
        // src如果由两个大小不一样的图片相互替换时,上面的写法就有问题了,换过之后的图片的宽度和高度始终取得的还是换之前图片的值。
        // 解决方法:创建一个新的图片类,并将其src属性设上。
        var tempImg = new Image();        
        tempImg.src = img.attr('src');
        var imgWidth=tempImg.width;
        var imgHeight=tempImg.height;

        //比较imgBox的长宽比与img的长宽比大小
        if((boxWidth/boxHeight)>=(imgWidth/imgHeight))
        {
            //重新设置img的width和height
            img.width((boxHeight*imgWidth)/imgHeight);
            img.height(boxHeight);
            //让图片居中显示
            var margin=(boxWidth-img.width())/2;
            img.css("margin-left",margin);
        }
        else
        {
            //重新设置img的width和height
            img.width(boxWidth);
            img.height((boxWidth*imgHeight)/imgWidth);
            //让图片居中显示
            var margin=(boxHeight-img.height())/2;
            img.css("margin-top",margin);
        }
    };
    
    // 本机能的js事件
    $(function() {
         // 图像加载完成之后,调整图片大小
         $('#img1').load(function() {
             adjustImgSize($(this), $(this).parent().width(), $(this).parent().height());
         });
    });
    </script>
</head>

<body>
    <div id="imgBox" style="width:500px; height:200px; background:#cccccc">
        <img id="img1" alt="" src="./image/test.jpg" />
    </div>
</body>
</html>

缩放之后效果: (左右居中)


改变 框体大小:

<div id="imgBox" style="width:200px; height:400px; background:#cccccc">

运行之后效果(上下居中):


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值