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

6ffc4c5bc7cbb652ee8311a7ec31bf31.jpeg


使用新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部分主要包括一个按钮和一个模态框。按钮用于触发模态框的显示,模态框内包含一个表单,表单中有一个输入框和一个复制按钮。

<!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代码段(完整部分请通过源码链接下载查看):

.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交互

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/748110.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简单的springboot整合activiti5.22.0

简单的springboot整合activiti5.22.0 1. 需求 我们公司原本的流程服务是本地workflow模块以及一个远程的webService对应的activiti服务&#xff0c;其中activiti版本为5.22.0&#xff0c;之前想将activiiti5.22.0进行升级&#xff0c;选择了camunda&#xff0c;也对项目进行了…

《梦醒蝶飞:释放Excel函数与公式的力量》6.1 DATE函数

6.1 DATE函数 第一节&#xff1a;DATE函数 1&#xff09;DATE函数概述 DATE函数是Excel中的一个内置函数&#xff0c;用于根据指定的年、月、日返回对应的日期序列号。这个函数非常有用&#xff0c;尤其是在处理日期数据时&#xff0c;它可以帮助你构建特定的日期&#xff0…

20-OWASP top10--XXS跨站脚本攻击

目录 什么是xxs&#xff1f; XSS漏洞出现的原因 XSS分类 反射型XSS 储存型XSS DOM型 XSS XSS漏洞复现 XSS的危害或能做什么&#xff1f; 劫持用户cookie 钓鱼登录 XSS获取键盘记录 同源策略 &#xff08;1&#xff09;什么是跨域 &#xff08;2&#xff09;同源策略…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及氢储能与需求响应的路域综合能源系统规划方法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

在数据库领域是如何实现“多租户”的呢?

数据库多租技术介绍 随着云计算时代的到来&#xff0c;多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源&#xff0c;能够帮助用户节约硬件成本和运维成本&#xff0c;提高资源利用效率。同时&#xff0c;在实现的过程中&#xff0c;考虑到共享带来的安全…

【单片机毕业设计选题24031】-基于STM32的智能手环设计

系统功能: 使用12864OLED液晶屏显示当前的步数&#xff0c;温度值&#xff0c;心率和报警值&#xff0c;单位是心率/分钟设置步长&#xff0c;测量里程&#xff1b;可以设置温度心率的上下限报警值&#xff0c;设置、加、减&#xff1b;用红外传感器XL01实现心率的测量&#x…

华为云x86架构下部署mysql

华为云x86架构下部署mysql 1. 配置X86架构ESC2. 查看本系统中有没有安装mariadb相关的组件&#xff0c;有则卸载3. 安装mysql4. 启动mysql5. 登录MySQL&#xff0c;修改密码&#xff0c;开放访问权限 1. 配置X86架构ESC 2. 查看本系统中有没有安装mariadb相关的组件&#xff0c…

拥抱数字化未来,如何以费控驱动业务发展?

管理费用是企业运营中仅次于人力成本的第二大可控成本&#xff0c;一般会占到企业年度收入的5%—10%&#xff0c;但多数企业存在费用疏于管理、费用管理制度流于纸面难落地、费用浪费严重等问题。 如果不进行科学管理&#xff0c;有专家表示&#xff0c;估计企业每年至少有10%的…

Java家教系统小程序APP公众号h5源码

让学习更高效&#xff0c;更便捷 &#x1f31f; 引言&#xff1a;家教新选择&#xff0c;小程序来助力 在快节奏的现代生活中&#xff0c;家长们越来越注重孩子的教育问题。然而&#xff0c;如何为孩子找到一位合适的家教老师&#xff0c;成为了许多家长头疼的问题。现在&…

Flutter笔记(一)- 安装和配置Flutter

一、下载Flutter 访问网址&#xff1a;https://docs.flutter.dev/get-started/install?hlzh-cn 根据电脑所使用的操作系统的平台进行选择。笔者电脑的操作系统为Windows&#xff0c;因此选择如图1-1的Windows图片&#xff1a; 图1-1 Flutter网站&#xff08;一&#xff09; …

controller不同的后端路径对应vue前端传递数据发送请求的方式

目录 案例一&#xff1a; 为什么使用post发送请求&#xff0c;参数依旧会被拼接带url上呢&#xff1f;这应该就是param 与data传参的区别。即param传参数参数会被拼接到url后&#xff0c;data会以请求体传递 补充&#xff1a;后端controller 参数上如果没写任何注解&#xff0c…

Vue3抽屉(Drawer)

效果如下图&#xff1a;在线预览 APIs 参数说明类型默认值必传width宽度&#xff0c;在 placement 为 right 或 left 时使用string | number378falseheight高度&#xff0c;在 placement 为 top 或 bottom 时使用string | number378falsetitle标题string | slotundefinedfalse…

sheng的学习笔记-hive框架原理

需要学习的前置知识&#xff1a;hadoop 可参考 sheng的学习笔记-hadoop-CSDN博客 相关网址 官网&#xff1a;http://hive.apache.org 文档&#xff1a;https://cwiki.apache.org/confluence/display/Hive/GettingStarted https://cwiki.apache.org/confluence/display/Hive/…

FPGA SATA高速存储设计

今天来讲一篇如何在fpga上实现sata ip&#xff0c;然后利用sata ip实现读写sata 盘的目的&#xff0c;如果需要再速度和容量上增加&#xff0c;那么仅仅需要增加sata ip个数就能够实现增加sata盘&#xff0c;如果仅仅实现data的读写整体来说sata ip设计比较简单&#xff0c;下面…

华为开发者调试工具使用介绍(MDC)

MDC的开发过程的三大工具&#xff1a;MMC、MDS、Mind Studio&#xff0c;这三个工具完成了开发过程中的配置文件编写、代码编写以及AI模型的开发三个任务。除了开发&#xff0c;MDC还准备了两个调试工具&#xff0c;用于使用过程中数据的查看等。这一些调试工具分别对映射MDC中…

Claude走向开放

Claude的愿景一直是创建能够与人们协同工作并显著提升他们工作流程的人工智能系统。朝着这一方向迈进&#xff0c;Claude.ai的专业版和团队版用户现在可以将他们的聊天组织到项目中&#xff0c;将精选的知识和聊天活动整合到一个地方&#xff0c;并且可以让团队成员查看他们与C…

Redis发布、订阅模式(Pub/Sub)详解

Redis发布、订阅模式&#xff08;PUB-SUB&#xff09;详解 Redis的发布订阅&#xff08;Pub/Sub&#xff09;机制是一种消息通信模式&#xff0c;用于消息的广播。它允许多个客户端订阅&#xff08;Subscribe&#xff09;特定的频道&#xff08;Channel&#xff09;&#xff0c…

【unity笔记】八、Unity人物动画介绍

一、效果预览 本内容仅介绍为unity场景中的任务添加简单的动画效果。 二、小试牛刀 2.1 插件准备 在unity 中导入人物模型。常使用的免费人物模型和动画模型有Robot Kyle&#xff0c;Unity-Chan! Model&#xff0c;Basic Motions FREE。 其中Robot Kyle仅支持URP渲染。如…

喂饭级AI神器!免代码一键绘制图表,文本数据秒变惊艳视觉盛宴!

由于目前的AI生成图表工具存在以下几个方面的问题&#xff1a; 大多AI图表平台是纯英文&#xff0c;对国内用户来说不够友好&#xff1b;部分平台在生成图表前仍需选择图表类型、配置项&#xff0c;操作繁琐&#xff1b;他们仍需一份规整的数据表格&#xff0c;需要人为对数据…

盲源信道分离—FastICA算法性能仿真

本案例中使用Matlab软件对FastICA算法的声音分离性能进行了仿真&#xff0c;分别对简单波形的混合信号、不同类型声音的混合信号、同一类型的混合信号这三种情况进行仿真&#xff0c;主要从分离信号的波形形状、串音误差两方面对分离性能进行衡量&#xff0c;仿真结果显示快速I…