使用新H5标签<dialog>,实现点击按钮显示分享链接弹出层交互功能

使用新H5标签,实现点击按钮显示分享链接弹出层交互功能

在现代网页开发中,使用新技术和标签来提升用户体验是非常重要的。今天,我们就来聊聊如何利用HTML5的<dialog>标签来实现一个简洁实用的分享链接功能。

在过去,我们通常会使用模态框插件(如Bootstrap的Modal)来实现弹窗效果。然而,这些方法依赖于大量的CSS和JavaScript代码。而现在,HTML5提供了原生的<dialog>标签,让我们可以更加简洁地实现模态框效果。本篇文章将通过一个实际案例,展示如何使用<dialog>标签、JavaScript和CSS来创建一个用户友好的分享链接功能。

什么是<dialog>标签

HTML5中的<dialog>标签用于创建原生对话框(模态框)。使用<dialog>标签可以让我们更方便地创建和管理对话框,无需依赖第三方库。相关API包括showModal()方法用于显示模态对话框,以及close()方法用于关闭对话框。这些方法可以通过JavaScript轻松调用,实现对对话框的控制。

案例展示

首先来看一下效果视频展示:

功能描述

这个分享链接功能实现了以下几种操作:

  1. 打开分享弹窗:用户点击"分享"按钮后,弹出一个对话框,显示链接和复制按钮。

  2. 复制链接:在对话框中,用户可以点击"复制链接"按钮,将链接复制到剪贴板。

  3. 关闭弹窗:用户可以点击弹窗右上角的关闭按钮,关闭弹窗。

源码分析

HTML结构

HTML部分主要包括一个按钮和一个模态框。按钮用于触发模态框的显示,模态框内包含一个表单,表单中有一个输入框和一个复制按钮。

xml 复制代码
<!DOCTYPE html>
<html lang="en">


<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>
        Share the link
    </title>


    <!--? loading Google fonts -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Mulish&display=swap" rel="stylesheet">
    <link href="style.css" rel="stylesheet">


</head>


<body>
    <button type="button" class="share-btn">
        <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-share" width="24" height="24"
            viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
            stroke-linejoin="round">
            <!--省略-->
        </svg>
    </button>
    <dialog class="copy-link-dialog">
        <form>
            <header>
                <h2>Share the link</h2>
                <button class="close-btn secndary" type="button">
                    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="24"
                        height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
                        stroke-linecap="round" stroke-linejoin="round">
                         <!--省略-->
                    </svg>
                </button>
            </header>
            <div class="copy-link-dialog__content">
                <div class="copy-link-wrapper">
                    <input id="copy-link-input" type="text" required value="https://example.com/share-this" readonly>
                    <button class="copy-btn" type="button">
                        <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" width="24"
                            height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
                            stroke-linecap="round" stroke-linejoin="round">
                            <!--省略-->
                              </svg>
                        <span id="copy-text">
                            Copy Link
                        </span>
                    </button>
                </div>
            </div>
        </form>
    </dialog>
    <script src="script.js"></script>
</body>

CSS样式

为了让页面更美观,我们需要为模态框和按钮添加一些样式。以下是关键的CSS代码段(完整部分请通过源码链接下载查看):

css 复制代码
.share-btn {
    background-color: #fff;
    border: none;
    padding: 10px;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}


.copy-link-dialog {
    border: none;
    border-radius: 8px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
    width: 90%;
    max-width: 400px;
}


.copy-btn {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 10px 20px;
    border: none;
    background-color: #007bff;
    color: #fff;
    border-radius: 4px;
    cursor: pointer;
}

JavaScript交互

相关推荐
李李李勃谦5 小时前
鸿蒙PC思维导图工具实战:拖拽交互与多格式导出
华为·交互·harmonyos
小龙报1 天前
【Coze-AI智能体平台】低代码省时高效:Coze 应用开发全流程指南
java·人工智能·python·深度学习·低代码·chatgpt·交互
qq_454245031 天前
从 UI 操作到环境交互:一种通用元命令自动化协议的设计与意义
人工智能·ui·自动化·交互
拉里呱唧1 天前
一个像在使用PPT的在线 HTML 编辑器:HeyHTML
javascript·交互·html5
lpfasd1232 天前
Playwright 网页自动化交互:滑块安全校验优雅处理方案
运维·自动化·交互
Ulyanov2 天前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:实时时钟与数据驱动 UI —— 从“事件回调”到“状态绑定”的范式跃迁
开发语言·python·qt·ui·架构·交互
cy_cy0023 天前
互动滑轨屏如何优化参观动线?
科技·3d·人机交互·交互·软件构建
咬人喵喵3 天前
五一劳动节 SVG 交互图文案例大全
低代码·微信·编辑器·交互·svg
Gary Studio3 天前
自定义 Android 系统服务与 HAL 交互全流程指南
android·交互
PNP机器人4 天前
Kinova双臂柔顺控制新方案|牛津开源双域阻抗控制器精准装配 + 安全交互一键实现
安全·交互·kinova机械臂·技术论文