当前位置: 首页 > article >正文

使用原生前端技术封装一个组件

封装导航栏

navbar-template.html

<header><nav><ul><li><a href="index.html"><i class="fas fa-home"></i> 主页</a></li><li><a href="#"><i class="fas fa-theater-masks"></i> 非遗项目</a><ul class="sub-menu"><li><a href="projects.html#beijing"><i class="fas fa-theater-masks"></i> 京剧</a></li><li><a href="projects.html#jianzhi"><i class="fas fa-scissors"></i> 剪纸</a></li></ul></li><li><a href="#"><i class="fas fa-user-friends"></i> 传承人</a><ul class="sub-menu"><li><a href="heritage.html#zhangsan"><i class="fas fa-user-friends"></i> 张三</a></li><li><a href="heritage.html#lisi"><i class="fas fa-user-friends"></i> 李四</a></li></ul></li><li><a href="#"><i class="fas fa-calendar-alt"></i> 活动</a><ul class="sub-menu"><li><a href="events.html#festival"><i class="fas fa-calendar-alt"></i> 非遗文化节</a></li><li><a href="events.html#workshop"><i class="fas fa-tools"></i> 工作坊</a></li></ul></li><li><a href="#"><i class="fas fa-info-circle"></i> 关于我们</a><ul class="sub-menu"><li><a href="about.html"><i class="fas fa-info-circle"></i> 关于我们</a></li><li><a href="news.html"><i class="fas fa-newspaper"></i> 非遗新闻</a></li></ul></li><li><a href="#"><i class="fas fa-user-circle"></i> 用户中心</a><ul class="sub-menu"><li><a href="login.html"><i class="fas fa-sign-in-alt"></i> 登录</a></li><li><a href="register.html"><i class="fas fa-user-plus"></i> 注册</a></li></ul></li></ul></nav>
</header>

navbar.js

class NavBar extends HTMLElement {constructor() {super();this.attachShadow({ mode: 'open' });this.loadTemplate();}async loadTemplate() {try {const response = await fetch('/template/navbar-template.html'); // 路径根据实际调整const text = await response.text();const template = document.createElement('template');template.innerHTML = text;// 创建 link 元素并添加样式表const link = document.createElement('link');link.rel = 'stylesheet';link.href = '/css/navbar.css'; // 替换为你的组件样式文件路径// 插入样式和模板内容到 Shadow DOMthis.shadowRoot.appendChild(link);this.shadowRoot.appendChild(template.content.cloneNode(true));} catch (err) {console.error('加载模板失败:', err);}}
}customElements.define('nav-bar', NavBar);

使用

image-20250530224735665
http://www.lryc.cn/news/2396381.html

相关文章:

  • lesson04-简单回归案例实战(理论+代码)
  • Java 面试中的数据库设计深度解析
  • 国内首发!具有GPU算力的AI扫描仪
  • 【开发技巧指北】IDEA修改默认绑定Maven的仓库地址
  • 数据存储与运算
  • 【2025最新】Java图书借阅管理系统:从课程作业到实战应用的完整解决方案
  • springcloud openfeign 请求报错 java.net.UnknownHostException:
  • 【harbor】--配置https
  • Oracle 临时表空间详解
  • 深入理解享元模式:用Java实现高效对象共享
  • OptiStruct实例:消声器前盖ERP分析(2)RADSND基础理论
  • barker-OFDM模糊函数原理及仿真
  • Linux.docker.k8s基础概念
  • GIT命令行的一些常规操作
  • 近期知识库开发过程中遇到的一些问题
  • 3.RV1126-OPENCV 图像叠加
  • 使用 HTML + JavaScript 实现一个日历任务管理系统
  • 车载诊断架构SOVD --- 车辆发现与建连
  • Notepad++找回自动暂存的文件
  • DL00924-基于深度学习YOLOv11的工程车辆目标检测含数据集
  • Axure RP11安装、激活、汉化
  • 【PhysUnits】15.6 引入P1后的左移运算(shl.rs)
  • 自编码器Auto-encoder(李宏毅)
  • 数据结构之堆(topk问题、堆排序)
  • SpringBoot使用ffmpeg实现视频压缩
  • 【Elasticsearch】exists` 查询用于判断文档中是否存在某个指定字段。它检查字段是否存在于文档中,并且字段的值不为 `null`
  • 2025-05-31 Python深度学习9——网络模型的加载与保存
  • 长安链起链调用合约时docker ps没有容器的原因
  • Appium+python自动化(七)- 认识Appium- 上
  • 数据中心双活架构解决方案