JS实现简单的图片查看效果

用js实现了一个简单的图片查看效果。主要功能:
1、点击图片后打开遮罩并在遮罩中显示图片,大小已做好限制,不会因为图片太大而导致出现滚动条;
2、鼠标放上图片后可以滚动放大或缩小图片;
注意:需要jquery.js和jquery.mousewheel.js的支持。

js(pic-view.js)代码如下:

$(function () {
    $("body").delegate(".pic-view", "click", function () {
        //容器
        var $container = $("<div></div>");
        $container.attr("id", "pic_view_container");
        //遮罩层
        var $mask = $("<div></div>")
        $mask.attr("id", "pic_view_mask");
        $mask.attr("title", "点击空白处关闭");
        $mask.css("position", "absolute");
        $mask.css("top", 0);
        $mask.css("bottom", 0);
        $mask.css("left", 0);
        $mask.css("right", 0);
        $mask.css("width", "100%");
        $mask.css("height", "100%");
        $mask.css("background", "#000");
        $mask.css("opacity", 0.7);
        $mask.css("cursor", "pointer");
        //图片
        var $img = $("<img/>");
        var url = $(this).attr("src");
        $img.attr("id", "pic_view_img");
        $img.attr("src", url);
        $img.attr("title", "滚动放大/缩小");
        $img.css("position", "absolute");
        $img.css("top", "50%");
        $img.css("left", "50%");
        $img.css("cursor", "pointer");
        //组装
        $container.append($mask);
        $container.append($img);
        $("body").append($container);   //显示
        //重置图片大小
        resetPicSize(0.1);
        //绑定滚动鼠标改变图片大小
        onMouseWheel();
        //绑定关闭视图方法
        hidePic();
    });
});

/**
 * 鼠标滚动放大/缩小图片
 */
function onMouseWheel() {
    $("#pic_view_img").bind("mousewheel", function (event, delta) {
        $mask = $("#pic_view_mask"), $img = $(this);
        var dir = delta > 0 ? "up" : "down";
        var m_width = $mask.width();
        var m_height = $mask.height();
        var i_width = $img.width();
        var i_height = $img.height();
        if (dir == "up") {  //放大
            i_width = i_width * 1.1;
            i_height = i_height * 1.1;
            if (i_width < m_width && i_height < m_height) {
                $img.width(parseInt(i_width));
                $img.height(parseInt(i_height));
                $img.css("margin-top", -parseInt(i_height / 2));
                $img.css("margin-left", -parseInt(i_width / 2));
            }
        } else {    //缩小
            i_width = i_width * 0.9;
            i_height = i_height * 0.9;
            if (i_width >= 100 && i_height >= 100) {
                $img.width(parseInt(i_width));
                $img.height(parseInt(i_height));
                $img.css("margin-top", -parseInt(i_height / 2));
                $img.css("margin-left", -parseInt(i_width / 2));
            }
        }
    });
}
/**
 * 点击图片时,重置图片大小
 * @param offset
 */
function resetPicSize(offset) {
    $mask = $("#pic_view_mask"), $img = $("#pic_view_img");
    var m_width = $mask.width();
    var m_height = $mask.height();
    var i_width = $img.width();
    var i_height = $img.height();
    if (m_width <= 0 || m_height <= 0 || i_width <= 0 || i_height <= 0 || offset <= 0) {
        return;
    }
    var scale = 1;
    while (i_width >= m_width || i_height >= m_height) {
        i_width = i_width * (scale - offset);
        i_height = i_height * (scale - offset);
    }
    $img.width(parseInt(i_width));
    $img.height(parseInt(i_height));
    $img.css("margin-top", -parseInt(i_height / 2));
    $img.css("margin-left", -parseInt(i_width / 2));
}
/**
 * 关闭视图
 */
function hidePic() {
    $("#pic_view_mask").click(function () {
        $("#pic_view_container").remove();
    });
}

html代码如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <style>
        * {
            margin: 0px;
            padding: 0px;
        }
        .pic-view {
            margin: 5px;
            max-width: 200px;
        }
    </style>
</head>
<body>
<div id="box">
    <img class="pic-view" src="1.png"/>
    <img class="pic-view" src="2.png"/>
    <img class="pic-view" src="3.jpg"/>
    <img class="pic-view" src="4.jpg"/>
</div>
<script type="text/javascript" src="jquery-3.0.0.min.js"></script>
<script type="text/javascript" src="jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="pic-view.js"></script>
</body>
</html>
以上只是一个简单的效果,提供一个简单的思路......
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值