• 144990

    文章

  • 856

    评论

  • 13

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

JS特效二:图片弹窗


在这里插入图片描述

今天来看一个商品后台页面设计时常用的js效果,图片弹窗。就是在鼠标点击小图片的时候,会以一个弹窗的形式放大图片,方便我们查看细节,而且还有很多动效在里面。我们先来看看效果图:

  1. 这是鼠标在图片外,就是一张小图,加了一点圆角

请添加图片描述

  1. 当鼠标移到图片上的时候就会有阴影效果透明度变化

在这里插入图片描述

  1. 点击小图片就是这样的了,可以查看大图

请添加图片描述

设计思路也很简单,就是先写出来基本的html和css布局,这里说下&times是一个叉号。然后js里面设置两个点击事件,每个点击事件通过方法改变一些元素的css样式。代码里的注释写的很详细

附上源码:


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片弹窗</title>
    <link rel="stylesheet" href="1.css">
</head>

<body>

    <!-- 触发弹窗 - 图片为本地的的图片地址 -->
    <img id="myImg" src="img/1.jpg" alt="炸裂得分王-詹姆斯.哈登" width="300" height="200">

    <!-- 弹窗 -->
    <div id="myModal" class="modal">

        <!-- 关闭按钮,&times这个是叉号 -->
        <span class="close" onclick="document.getElementById('myModal').style.display='none'">&times;</span>

        <!-- 弹窗内容 -->
        <img class="modal-content" id="img01">

        <!-- 文本描述 -->
        <div id="caption"></div>
    </div>

    <script src="1.js"></script>
</body>

</html>


/* 触发弹窗图片的样式 */

#myImg {
   
   
    display: block;
    margin: auto;
    border-radius: 5px;
    /* 光标位于图片的时候,展示形式是个小手 */
    cursor: pointer;
    transition: 0.3s;
}


/* img的hover效果,可以设置透明度 */

#myImg:hover {
   
   
    opacity: 0.85;
    box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.2)
}


/* 弹窗背景 */

.modal {
   
   
    display: none;
    /* 设置位置,不随屏幕移动而移动 */
    position: fixed;
    z-index: 1;
    padding-top: 100px;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}


/* 图片 */

.modal-content {
   
   
    border-radius: 10px;
    margin: auto;
    display: block;
    width: 80%;
    max-width: 700px;
}


/* 文本内容 */

#caption {
   
   
    margin: auto;
    display: block;
    width: 80%;
    max-width: 700px;
    text-align: center;
    color: #aaa;
    padding: 10px 0;
    height: 150px;
    font-size: 1.4rem;
}


/* 添加动画 */

.modal-content,
#caption {
   
   
    /* 设置动画名 */
    -webkit-animation-name: zoom;
    -webkit-animation-duration: 0.6s;
    animation-name: zoom;
    animation-duration: 0.6s;
}


/* 设置动画效果 */

@-webkit-keyframes zoom {
   
   
    from {
   
   
        -webkit-transform: scale(0)
    }
    to {
   
   
        -webkit-transform: scale(1)
    }
}

@keyframes zoom {
   
   
    from {
   
   
        transform: scale(0)
    }
    to {
   
   
        transform: scale(1)
    }
}


/* 关闭按钮 */

.close {
   
   
    position: absolute;
    top: 15px;
    right: 35px;
    color: #f1f1f1;
    font-size: 40px;
    /* 加粗字体 */
    font-weight: bold;
    transition: 0.3s;
}

.close:hover,
.close:focus {
   
   
    color: #bbb;
    text-decoration: none;
    cursor: pointer;
}


/* 小屏幕中图片宽度为 100%,响应式布局 */

@media only screen and (max-width: 700px) {
   
   
    .modal-content {
   
   
        width: 100%;
    }
}


// 获取弹窗
var modal = document.getElementById('myModal');

// 获取图片插入到弹窗 ,使用 "alt" 属性作为文本部分的内容
var img = document.getElementById('myImg');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function() {
   
   
    modal.style.display = "block";
    modalImg.src = this.src;
    captionText.innerHTML = this.alt;
}

// 获取 <span>标签里面的元素,也就是那个叉号,设置关闭按钮,数组形式的元素,第一个就是[0]
var span = document.getElementsByClassName("close")[0];

// 当点击叉号的时候, 关闭弹窗
span.onclick = function() {
   
   
    modal.style.display = "none";
}

不懂的记得及时评论区或者私信询问哦!


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客