模态图

代码储存在Github
效果预览

初衷:很多人在初学前端的时候都会问,“如何入门前端?”
同为在前端学习道路上,奋力追赶的一员,本人对于目前网络上所能看到的 “入门级” 的教材并不太满意。学习一门新知识,实例是尤其重要的。在这里本人整理了目前页面上常见功能实现的具体实例。愿能为大家提供一些帮助。
希望能够与大家互相分享,共同进步。

效果预览
图片描述

HTML 部分

    <!-- 触发图片 -->
    <img class="myImg" src="img.jpg" alt="图片" width="300" height="200">

    <!-- 模态框 -->
    <div id="myModal" class="modal">
        <!-- 关闭按钮 -->
        <span class="close" id="closeBtn">&times;</span>

        <!-- 模态图 -->
        <img class="modal-content" id="img01">

        <!-- 模态图标题 -->
        <div id="caption"></div>
    </div>

CSS 部分

触发图片样式

/*触发图片样式*/
.myImg {
    border-radius: 5px;
    cursor: pointer;
    transition: 0.3s;
}

.myImg:hover {
    opacity: 0.7;
}

模态框样式

/*模态框样式*/
.modal {
    display: none; /* 默认隐藏 */
    position: fixed; /* 相对浏览器定位 */
    z-index: 1; /* 放在首位 */
    padding-top: 100px; /* 头部加padding */
    left: 0;
    top: 0;
    width: 100%; /* 全宽 */
    height: 100%; /* 全高 */
    overflow: auto; /* 允许超出滚屏 */
    background-color: rgba(0,0,0,0.9);
}

模态框内容样式

/*模态框内容样式*/
.modal-content {
    margin: 0 auto; /*居中*/
    display: block;
    width: 80%;
    max-width: 700px;
}

/*加断点,响应式改变宽度*/
@media only screen and (max-width: 700px){
    .modal-content {
        width: 100%;
    }
}

#caption {
    margin: 0 auto; /*居中*/
    display: block;
    width: 80%;
    max-width: 700px;
    text-align: center;
    color: #ccc;
    padding: 10px 0;
    height: 150px;
}

/*加动效果*/
.modal-content, #caption { 
    animation-name: zoom;
    animation-duration: 0.6s;
}

@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 {
    color: #bbb;
    text-decoration: none;
    cursor: pointer;
}

JavaScript 内容

离开全局

(function() {})();

创建模态图对象

/*模态图对象*/
    var modalImg = {};

编写模态图对象

    /*触发图片*/
    modalImg.triggerImg = document.getElementsByClassName('myImg');
    
    /*关闭按钮*/
    modalImg.closeBtn = document.getElementById('closeBtn');
    
    /*模态背景*/
    modalImg.modal = document.getElementById('myModal');
    
    /*模态图*/
    modalImg.img = document.getElementById("img01");
    
    /*模态图标题*/
    modalImg.captionText = document.getElementById("caption");

    /*模态图显示*/
    modalImg.show = function() {
        this.modal.style.display = "block";
        this.img.src = this.triggerImg[0].src;
        this.captionText.innerText = this.triggerImg[0].alt;
    }

    /*模态图关闭*/
    modalImg.close = function() {
        this.modal.style.display = "none";
    }

    /*点击模态图以外区域,模态图关闭*/
    modalImg.outsideClick = function() {
        var that = this;
        window.onclick = function(event) {
            if(event.target == that.modal) {
                that.close();
            }
        }
    }

    /*初始化*/
    modalImg.init = function() {
        var that = this;
        this.triggerImg[0].onclick = function() {
            that.show();
        }
        this.closeBtn.onclick = function() {
            that.close();
        }
        this.outsideClick();
    }

调用

    /*模态图调用*/
    modalImg.init();

好啦,现在所有的代码都写完啦!

赶快打开浏览器,看看效果吧!

在这里,只是给大家提供一种思路,参考。
具体的实现,每个人都可以有不同的方法。
请大家赶快发挥想象,把你最想实现的功能,在电脑敲出来吧!

代码参考自w3cschools


Garrik_刘翔
103 声望31 粉丝

待业前端新人