美文网首页
使用 HTML5 dialog 制作简单好用的 lightbox

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

作者: ohityes | 来源:发表于2023-01-06 23:37 被阅读0次
lightbox 效果

Lightbox 效果是网页中常见的效果,尤其是在图片展示中,它可以让用户以更大的尺寸、更好的画质查看图片,带来刚好的用户体验。今天,我们使用 HTML5 的 dialog 标签制作一个简单好用的 lightbox 效果。

制作过程

1、引入文件

<link rel="stylesheet" href="css/normalize.min.css">

2、HTML

<div class="dowebok">
    <img src="images/1-1.jpg" alt="">
    <img src="images/1-2.jpg" alt="">
    <img src="images/1-3.jpg" alt="">
    <img src="images/1-4.jpg" alt="">
    <img src="images/1-5.jpg" alt="">
    <img src="images/1-6.jpg" alt="">
    <img src="images/1-7.jpg" alt="">
    <img src="images/1-1.jpg" alt="">
    <img src="images/1-2.jpg" alt="">
    <img src="images/1-3.jpg" alt="">
    <img src="images/1-4.jpg" alt="">
    <img src="images/1-5.jpg" alt="">
    <img src="images/1-6.jpg" alt="">
    <img src="images/1-7.jpg" alt="">
</div>

3、CSS

.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;
    }
}

4、Javascript

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')
        })
    })
})

到这里就制作完了,看看效果吧:https://www.dowebok.com/demo/9901/

相关文章

  • HTML5 CANVAS

    简单初步: 创建画布 绘制矩形 绘制图形 绘制图片 HTML5使用路径 制作简单动画 1.使用setInterva...

  • Hype 4 for Mac(HTML5动画制作软件) 4.0.

    Mac上好用的HTML5动画制作软件是哪个?首选Hype 4 for Mac,从原型到生产,任何人都可以使用hyp...

  • HTML5 Web存储

    HTML5 Web存储,一个比cookie更好用的方法 什么是 HTML5 Web 存储? 使用HTML5可以在本...

  • 使用HTML5 dialog元素制作自定义弹窗

    效果: 代码: html: css: javascript: javascript控制dialog的打开和关闭:打...

  • AlertDialog源码分析

    基本使用 使用非常简单,典型的建造者模式。 AlertDialog继承Dialog实现了DialogInterfa...

  • HTML5跟HTML的区别

    越来越多的系统和应用平台选择使用html5作为制作标准,网页制作被纳入其中,从各种平台的总结来看,HTML5两大特...

  • dialog简单记录

    1.构造一个简单的dialog并使用。 2.给dialog中的Message的内容添加Scroll。如果setMe...

  • 怎么把视频中的一小段做成 gif 动图?

    制作 GIF 其实非常简单,派君给你推荐几个最好用的 GIF 制作 App。 iOS:GIF Toaster 可以...

  • lightbox

    lightbox 下载 Github . 导入css jQuery light.box 初始化html单张图片。将...

  • Activity作为Dialog的简单使用

    Activity可当做Dialog使用,使用时只需更改主题即可。 1、新建DialogActivity,在Mani...

网友评论

      本文标题:使用 HTML5 dialog 制作简单好用的 lightbox

      本文链接:https://www.haomeiwen.com/subject/wweecdtx.html