前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >前端html网站页面图片点击放大

前端html网站页面图片点击放大

原创
作者头像
有勇气的牛排
发布2023-06-25 23:13:52
发布2023-06-25 23:13:52
2.3K00
代码可运行
举报
运行总次数:0
代码可运行

图片点击放大是非常常见的一项功能,一般网站上显示的都是缩略图,当点击缩略图之后,会在一个弹框中显示放大的图片,下面我们实战操作一遍

代码语言:javascript
代码运行次数:0
运行
复制
 <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>

css样式

代码语言:css
复制
#outerdiv {
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background: rgba(0, 0, 0, 0.3);
    display: none;
    z-index: 200;
}

html 代码

代码语言:html
复制
<div id="outerdiv">
    <div id="innerdiv" style="position:absolute;">
        <img alt id="bigimg" style="box-shadow: 0 0 10px rgba(0,0,0,0.38)" src=""/>
    </div>
</div>

js逻辑实现

代码语言:javascript
代码运行次数:0
运行
复制
<script>
    //点击图片,显示弹窗(放大图片)
    function imgShow(outerdiv, innerdiv, bigimg, _this) {
        let src = _this.attr("src"); //获取当前点击的img元素中的src属性
        $(bigimg).attr("src", src); //设置#bigimg元素的src属性
        /*获取当前点击图片的真实大小,并显示弹出层及大图*/
        $("<img/>").attr("src", src).on('load', function () {
            let windowW = $(window).width(); //获取当前窗口宽度
            let windowH = $(window).height(); //获取当前窗口高度
            let realWidth = this.width; //获取图片真实宽度
            let realHeight = this.height; //获取图片真实高度
            let imgWidth, imgHeight;
            let scale = 0.96; //缩放尺寸,当图片真实宽度和高度大于窗口宽度和高度时进行缩放
            if (realHeight > windowH * scale) { //判断图片高度
                imgHeight = windowH * scale; //如大于窗口高度,图片高度进行缩放
                imgWidth = imgHeight / realHeight * realWidth; //等比例缩放宽度
                if (imgWidth > windowW * scale) { //如宽度扔大于窗口宽度
                    imgWidth = windowW * scale; //再对宽度进行缩放
                }
            } else if (realWidth > windowW * scale) { //如图片高度合适,判断图片宽度
                imgWidth = windowW * scale; //如大于窗口宽度,图片宽度进行缩放
                imgHeight = imgWidth / realWidth * realHeight; //等比例缩放高度
            } else { //如果图片真实高度和宽度都符合要求,高宽不变
                if ((realWidth * 1.2) < windowW && (realHeight * 1.2) < windowH) {
                    imgWidth = realWidth * 1.2;
                    imgHeight = realHeight * 1.2;
                } else {
                    imgWidth = realWidth;
                    imgHeight = realHeight;
                }
            }
            $(bigimg).css("width", imgWidth); //以最终的宽度对图片缩放
            let w = (windowW - imgWidth) / 2; //计算图片与窗口左边距
            let h = (windowH - imgHeight) / 2; //计算图片与窗口上边距
            if (IsPC()) {
                $(innerdiv).css({
                    "top": h,
                    "left": w
                }); //设置#innerdiv的top和left属性
            } else {
                $(innerdiv).css({
                    "top": "50%",
                    "left": "50%"
                }); //设置#innerdiv的top和left属性
                $(innerdiv).css({
                    "transform": "translateX(-50%) translateY(-50%)"
                });
            }
            $(outerdiv).fadeIn(500); //淡入显示#outerdiv及img
        });

        $(outerdiv).click(function () { //再次点击淡出消失弹出层
            $(this).fadeOut(300);
        });
    }

    function IsPC() {
        var userAgentInfo = navigator.userAgent;
        var Agents = [
            "Android", "iPhone",
            "SymbianOS", "Windows Phone",
            "iPad", "iPod"
        ];
        var flag = true;
        for (var v = 0; v < Agents.length; v++) {
            if (userAgentInfo.indexOf(Agents[v]) > 0) {
                flag = false;
                break;
            }
        }
        return flag;
    };

    $(".article-container img").click(function () { //单击图片放大
        console.log("图片放大");
        let _this = $(this); //将当前的pimg元素作为_this传入函数
        imgShow("#outerdiv", "#innerdiv", "#bigimg", _this);
    });

</script>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档