欢迎光临黑马视觉品牌官网,开启你的互联网营销之旅!
新闻中心 网络推广 网站建设 优化推广

使用 HTML5 dialog 制作简单好用的 lightbox 效果

时间:2023-02-25   来源:网站建设

直接贴代码了哟。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.dowebok {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(4, 1fr);
    grid-auto-flow: row dense;
    width: 90%;
    margin: auto;
}

.dowebok img {
    max-width: 100%;
    height: auto;
}

.dowebok > :nth-child(7n + 1) {
    grid-column: span 2;
    grid-row: span 2;
}

.dowebok img {
    display: block;
    aspect-ratio: 1/1;
    border-radius: 6px;
    -o-object-fit: cover;
    object-fit: cover;
    overflow: hidden;
}

dialog.lightbox {
    border: none;
    padding: 0;
    -webkit-animation: fadeIn 0.3s ease-out;
    animation: fadeIn 0.3s ease-out;
    background-color: transparent;
}

dialog.lightbox::-webkit-backdrop {
    background-color: rgba(0, 0, 0, 0.4);
}

dialog.lightbox::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
}

dialog.lightbox img {
    -o-object-fit: contain;
    object-fit: contain;
    display: block;
    overflow: hidden;
    height: 100%;
    width: 100%;
    max-width: 90vw;
    max-width: 90dvw;
    max-height: 90vh;
    max-height: 90dvh;
    border-radius: 6px;
}

@-webkit-keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}
</style>
</head>
<body>
<div>
    <img src="1.jpg" alt="">
     <img src="1.jpg" alt="">
     <img src="1.jpg" alt="">
     <img src="1.jpg" alt="">
     <img src="1.jpg" alt="">
     <img src="1.jpg" alt="">
     <img src="1.jpg" alt="">
     <img src="1.jpg" alt="">
      <img src="1.jpg" alt="">
       <img src="1.jpg" alt="">
</div>

<script>
document.querySelectorAll('.dowebok img').forEach((img) => {
    img.addEventListener('click', (e) => {
        // 创建 dialog
        const dialog = document.createElement('dialog')
        dialog.className = 'lightbox'

        // 克隆 img 并放入 dialog 中
        const imgClone = img.cloneNode()
        dialog.appendChild(imgClone)

        // 把 dialog 插入到 body 中
        document.body.appendChild(dialog)
        dialog.showModal()
        document.body.setAttribute('inert', true)

        // 关闭 dialog 事件
        dialog.addEventListener('click', (e) => {
            if (e.target === e.currentTarget) {
                dialog.close()
            }
        })

        // dialog 关闭方法
        dialog.addEventListener('close', (e) => {
            dialog.parentNode.removeChild(dialog)
            document.body.removeAttribute('inert')
        })
    })
})
</script>
</body>
</html>


本文标签:
新闻推荐
龙华网站建设多少钱?
龙华网站建设多少钱?

大家好,这里是黑马视觉,今天我们来聊聊在深圳建一个网站需要多少钱?龙华网站建设需要多少钱?从所周知,...

龙华外贸网站建设必需知道的四大注意事项
龙华外贸网站建设必需知道的四大注意事项

在深圳有很多外贸公司,他们已经不满足于通过其他平台来引流,于是他们都需要建设一个自己自己的外贸网站,...

宝塔防火墙导致无法引入JS
宝塔防火墙导致无法引入JS

在最新一版的宝塔NGINX免费防火墙中,有一条规则是:我们可以看到里面有:script,所以会导致在添加一些第三...

网站没有安装SSL证书了,但是谷歌浏览器依旧跳转到HTTPS,怎么处理?
网站没有安装SSL证书了,但是谷歌浏览器依旧跳转到HTTPS,怎么处...

假如你的网站之前安装了SSL证书,然后到期之后,你将你的网站SSL证书也删除了。但是在使用谷歌浏览器打开网...

在线沟通
点我即可
对话
15899750475
手机
微信扫一扫

编辑 装修 价格 托管 实力 流量 搜索引擎 服务器 标准 上线 业务

微信
Top