前端 | iframe框架标签应用(二)| 外部页面导入

news2024/9/25 1:17:29

文章目录

  • 📚实现效果
  • 📚模块实现解析
    • 🐇html
    • 🐇css
    • 🐇javascript

📚实现效果

  • 点击右上角喇叭,弹出iframe页面框,链接bilibili白噪音视频页面;点击关闭按钮,关闭弹出框。在这里插入图片描述

📚模块实现解析

🐇html

  • 放一个按钮位
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>白噪音喇叭</title>
        <link rel="stylesheet" href="./style.css">
    </head>
    <body>
        <main id="board">
            <!-- 白噪音 -->
            <button id="openBtn"></button>
        </main>
    </body>
    <script src="./js/music.js"></script>
    </html>
    

🐇css

  • 背景面板:全屏布局 + 背景色#F1EEE7

  • 播放按钮:喇叭形按钮 + 按钮在悬停时会有放大效果。

    * {
        padding: 0;
        margin: 0;
    }
    
    #board {
        position: relative;
        width: 100vw;
        height: 100vh;
        background-color: #F1EEE7;
    }
    
    /* #region白噪音 */
    #openBtn {
        position: absolute;
        top: 4vh;
        right: 2vw;
        padding: 10px 20px;
        width: 50px;
        height: 50px;
        background-image: url(./src/唱片机.png);
        background-size: cover;
        border: none;
        cursor: pointer;
        transform: scale(0.9);
    }
    
    #openBtn:hover {
        transform: scale(1.0);
    }
    /* #endregion白噪音 */
    

🐇javascript

  • 实现功能:
    • 在点击白噪音喇叭按钮时,创建一个播放B站白噪音视频的iframe,并添加一个关闭按钮。
    • 点击关闭按钮会移除这个iframe和关闭按钮本身。
    // 当按钮被点击时执行以下函数
    document.getElementById('openBtn').addEventListener('click', function() {
        // 检查是否已存在iframe和关闭按钮,如果存在则移除它们
        const existingIframe = document.querySelector('iframe');
        const existingCloseButton = document.querySelector('.close-button');
        if (existingIframe) {
            document.body.removeChild(existingIframe);
        }
        if (existingCloseButton) {
            document.body.removeChild(existingCloseButton);
        }
    
        // 创建一个新的iframe元素
        const iframe = document.createElement('iframe');
        // 设置iframe的src属性为Bilibili视频的地址
        iframe.src = `https://www.bilibili.com/video/BV1wL411M7m9?p=2`;
        // 设置iframe的sandbox属性
        iframe.sandbox='allow-forms allow-scripts allow-same-origin allow-popups';
        // 设置iframe的样式
        iframe.style.position = 'fixed';
        iframe.style.top = '3%';
        iframe.style.left = '10%';
        iframe.style.width = '80%';
        iframe.style.height = '94%';
        iframe.style.border = '2px solid #bfc1a9';
        iframe.style.zIndex = '9999';
        iframe.style.borderRadius = '10px'; 
        // 将iframe添加到页面中
        document.body.appendChild(iframe);
    
        // 创建并设置关闭按钮
        const closeButton = document.createElement('button');
        closeButton.textContent = '×';
        closeButton.classList.add('close-button');
        closeButton.style.position = 'fixed';
        closeButton.style.width = '20px';
        closeButton.style.height = '20px';
        closeButton.style.top = '3%';
        closeButton.style.right = '7%';
        closeButton.style.zIndex = '10000';
        closeButton.style.border = '1.2px solid #bfc1a9';
        closeButton.style.borderRadius = '50%'; 
        closeButton.style.fontFamily = 'serif';
        closeButton.style.fontSize = '15px';
        closeButton.style.color = 'white';
        closeButton.style.fontWeight = 'bold';
        closeButton.style.padding = '2px';
        closeButton.style.backgroundColor = '#d24735';
        // 为关闭按钮添加点击事件,点击时移除iframe和关闭按钮
        closeButton.addEventListener('click', () => {
            document.body.removeChild(iframe);
            document.body.removeChild(closeButton);
        });
        // 将关闭按钮添加到页面中
        document.body.appendChild(closeButton);
    });
    
  • iframe元素的sandbox属性用于设置一个或多个安全特性,以限制嵌入的内容在其自己的上下文中的操作。
  • sandbox属性设置为’allow-forms allow-scripts allow-same-origin allow-popups’,这意味着嵌入的内容将允许填写表单、执行脚本、与相同源进行交互,并允许弹出窗口。

  • 其他iframe框架标签应用案例
    • iframe框架标签应用 | html页面导入

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[力扣题解]102.二叉树的层序遍历

题目&#xff1a;102. 二叉树的层序遍历 代码 迭代法 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {queue<TreeNode*> que;TreeNode* cur;int i, size;vector<vector<int>> result;if(root ! NULL){que.push(ro…

百面算法工程师 | 目标检测网络总结——object detect

目录 5.1 Single Shot MultiBox Detector&#xff08;SSD&#xff09; 5.2 YOLO 5.2.1 v1 5.2.2 v2 5.2.3 v3 5.2.4 v4 5.2.5 v5 【后续出详细面试考点&#xff0c;订阅我的专栏&#xff0c;更新第一时间通知】 已更新&#xff1a; 百面算法工程师 | YOLOv5面试考点原理…

Redis-三主三从高可用集群搭建

正式搭建之前&#xff0c;注意事项&#xff08;坑&#xff09;提前放到最开始&#xff0c;也可以出问题回来看&#xff0c; &#xff08;1&#xff09;第二步中最好将配置文件中的logfile自定义一个目录&#xff0c;以便于在第五步中启动出错的时候迅速定位错误。 &#xff0…

羊毛项目(华为iPhone茅台),讲解抢购渠道与抢购注意事项

薅羊毛天花板&#xff0c;华为iPhone茅台无脑撸&#xff0c;几分钟换几百元(非脚本项目) 网盘自动获取 链接&#xff1a;https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码&#xff1a;0b8x

Edge扩展应用程序的上架流程

前言 在软件开发的生命周期中&#xff0c;发布流程是将产品推向市场并交付给用户的关键阶段。它不仅标志着一个项目从开发阶段到用户手中的转变&#xff0c;也是确保软件质量和用户体验的重要环节。那么一个清晰、高效且可重复的发布流程对于任何软件项目的成功至关重要&#…

git/gerrit使用遇到的问题

Push时出现的多个问题及其解决 branch【...】not found 这个错误通常出现在 Git 命令中指定的分支名称中包含特殊字符或者语法错误时。需要确保指定的分支名称是正确的&#xff0c;并且没有任何不支持的字符。 例如&#xff0c;如果分支名称是 feature/branch&#xff0c;应该…

webrtc初步了解

WebRTC搭建点对点实时音视频对话&#xff0c;起始需要保证完成两点&#xff1a; 1.媒体协商&#xff0c;了解彼此支持的媒体格式。参与视频通讯的双方必须先交换SDP信息&#xff0c;交换SDP的过程。 2.网络协商&#xff0c;了解彼此的网络环境&#xff0c;找到一条相互通讯的链…

【NI 国产替代】cDAQ-9178, 8槽USB CompactDAQ机箱,国产数据采集卡控制器进口替代方案

8槽USB CompactDAQ机箱 cDAQ-9178是专为小型便携式传感器测量系统而设计的总线供电CompactDAQ USB机箱。机箱通过即插即用的USB可轻松连接传感器和电气测量。该机箱还可控制C系列I/O模块与外部主机之间的定时、同步和数据传输。机箱可以搭配不同的C系列I/O模块组合&#xff0c…

C语言结构体类型

C语言结构体类型 个人主页&#xff1a;大白的编程日记 个人主页&#xff1a;C语言学习之路 文章目录 C语言结构体类型前言一.结构体1.1结构体类型的声明1.2结构体变量的创建和初始化1.3结构成员访问操作符1.4结构的特殊声明1.5 结构的自引用 二.结构体内存对齐2.1对齐规则2.2内…

不错的PMP培训机构推荐,高通过高性价比哪家靠谱

PMP培训班的选择对刚接触到PMP的小白来说的确会有点头大&#xff0c;不过只要记住几个选择标准就可以了&#xff0c;比如说可以从机构实力、讲师师资、服务、通过率&#xff0c;性价比等方面开始&#xff0c;最好也是选择老牌机构&#xff0c;因为后面还涉及到续证方面的问题&a…

Android 14 init进程解析

前言 当bootloader启动后&#xff0c;启动kernel&#xff0c;kernel启动完后&#xff0c;在用户空间启动init进程&#xff0c;再通过init进程&#xff0c;来读取init.rc中的相关配置&#xff0c;从而来启动其他相关进程以及其他操作。 init进程启动主要分为两个阶段&#xff1…

Java八股文3

3.垃圾回收 1.对象什么时候可以被垃圾器回收 1.垃圾回收的概念 为了让程序员更专注于代码的实现&#xff0c;而不用过多的考虑内存释放的问题&#xff0c;所以&#xff0c; 在Java语言中&#xff0c;有了自动的垃圾回收机制&#xff0c;也就是我们熟悉的GC(Garbage Collection)…

linux部署yum仓库

一. Yum概述 1.yum简介 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中到YUM软件仓库提供 2.yum工作原理 c/s模式 客户端根据配置文件找到yum仓库服务器的位置 服务端向客户端发送元数据包(包含 软件依赖关系 软件的位置) #相当于软件安装目录 客户…

leecode每日一练

打家劫舍 我一开始的思路也是dp&#xff0c;但是转移方程想错了&#xff0c;这个题目转移方程应该是dp[i] max(dp[i-2]nums[i],dp[i-1]) class Solution { public:int rob(vector<int>& nums) {int len nums.size();vector<int> dp(len);int ans 0;if(len&g…

56.基于SSM实现的在线教育网站系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用Java的SSM框架作为开发技术&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SSM的在线教育网站的设计与实现管理工作系统化、规范…

【MySQL】第一次作业

【MySQL】第一次作业 1、在官网下载安装包2、解压安装包&#xff0c;创建一个dev_soft文件夹&#xff0c;解压到里面。3、创建一个数据库db_classes4、创建一行表db_hero5、将四大名著中的常见人物插入这个英雄表 写一篇博客&#xff0c;在window系统安装MySQL将本机的MySQL一定…

【华为】路由综合实验(OSPF+BGP基础)

【华为】路由综合实验 实验需求拓扑配置AR1AR2AR3AR4AR5PC1PC2 查看通信OSPF邻居OSPF路由表 BGPBGP邻居BGP 路由表 配置文档 实验需求 ① 自行规划IP地址 ② 在区域1里面 启用OSPF ③ 在区域1和区域2 启用BGP&#xff0c;使AR4和AR3成为eBGP&#xff0c;AR4和AR5成为iBGP对等体…

06.Git远程仓库

Git远程仓库 #仓库种类&#xff0c;举例说明 github gitlab gitee #以这个仓库为例子操作登录码云 https://gitee.com/projects/new 创建仓库 选择ssh方式 需要配置ssh公钥 在系统上获取公钥输入命令&#xff1a;ssh-keygen 查看文件&#xff0c;复制公钥信息内…

8.表格标签

为什么使用表格 表格简单通用表格结构稳定 表格的基本结构 单元格 行列跨行n为要跨的行数跨列n为要跨的列数 首先&#xff0c;我们做一个最基本的3x4表格&#xff0c;只用到了上述1.2.3三个标签&#xff0c;其中table标签里面的border是表格的边框线&#xff0c;代码和效果…

【DISC交流模型】项目管理必会的思维分析工具11

如何提升自己的领导力&#xff1f;我们可以根据DiSC模型&#xff0c;有针对性提升自我领导力 DISC模型是一种描述性格、行为风格倾向性的理论&#xff0c;也被称为“人类行为语言”。这一模型最初是由美国心理学家威廉莫尔顿马斯顿在20世纪初提出的&#xff0c;并在其1928年…