前端实例练习 - 模态图

模态图

代码储存在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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有效独立-模态动能法(IEKF)是将有效独立-平均加速度幅值法(AIAMA)和模态动能法(MEKF)结合起来的一种方法,可以同时考虑结构的整体响应和各个模态的响应。 以下是一个简单的 Python 代码示例,用于计算有效独立-模态动能法: ```python import numpy as np def calc_iekf(m, w, phi, acc_data, fs): # 计算加速度信号的频谱 acc_fft = np.fft.fft(acc_data) # 计算每个模态的动能 KE = np.zeros(len(w)) for i in range(len(w)): KE[i] = 0.5 * m[i] * w[i]**2 * np.abs(phi[:,i].T @ acc_fft)**2 # 计算总动能 KE_total = np.sum(KE) # 计算每个模态的动能占比 KE_ratio = KE / KE_total # 计算加速度信号的幅值 acc_amp = np.abs(acc_data) # 计算加速度信号的均值 acc_mean = np.mean(acc_amp) # 计算加速度信号的标准差 acc_std = np.std(acc_amp) # 计算有效独立加速度幅值(IMA) IMA = np.sqrt(np.sum((acc_amp - acc_mean)**2) / (len(acc_amp) - 1)) - acc_std # 计算平均加速度幅值(AMA) AMA = np.mean(acc_amp) # 计算有效独立-平均加速度幅值(AIAMA) AIAMA = IMA / AMA # 计算每个模态的有效独立-平均加速度幅值(MAIAMA) MAIAMA = np.zeros(len(w)) for i in range(len(w)): MAIAMA[i] = np.sqrt(np.sum((acc_amp - acc_mean)**2) / (len(acc_amp) - 1)) - acc_std / (AMA * np.abs(phi[:,i].T @ acc_fft)) # 计算每个模态的IEKF值 IEKF = KE_ratio * MAIAMA return IEKF ``` 其中,`m` 是模态质量,`w` 是模态频率,`phi` 是模态形态,`acc_data` 是输入的加速度信号数据,`fs` 是采样率。函数返回每个模态的IEKF值。 请注意,这只是一个简单的示例代码,您需要根据您的具体需要进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值