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

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

封装导航栏

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

相关文章:

  • 近期手上的一个基于Function Grap(类AWS的Lambda)小项目的改造引发的思考
  • Feign服务注册到nacos 2.2.3
  • Spring中过滤器 RequestContextFilter 和 OncePerRequestFilter 的区别
  • 基于CNN的OFDM-IM信号检测系统设计与实现
  • Linux(8)——进程(控制篇——上)
  • JS浮点数精度问题
  • TypeScript 中高级类型 keyof 与 typeof的场景剖析。
  • 共享签名是什么
  • 打破建筑管理壁垒,IBMS智能系统赋能现代建筑协同增效
  • AUTOSAR图解==>AUTOSAR_SWS_MCUDriver
  • WWW22-可解释推荐|用于推荐的神经符号描述性规则学习
  • 基于NetWork的类FNAF游戏DEMO框架
  • 在 Android 上备份短信:保护您的对话
  • 项目管理工具Maven
  • 四、关系数据库标准语言SQL_2
  • 使用 Fetch + Streams 处理流式响应(Streaming Response)
  • 【空间光学系统与集成微纳光子学系统简介】
  • Proteus寻找元器件(常见)
  • 带你手写React中的useReducer函数。(底层实现)
  • ESP8266远程控制:实现网络通信与设备控制
  • 武汉网上商城网站建设/北京网络营销推广外包
  • 国际教育机构网站建设开发方案/手机制作网页用什么软件
  • 外贸出口网/兰州seo快速优化报价
  • 安装Wordpress个人网站/营销型网站建设易网拓
  • 网站做拓扑图编辑/网站优化助手
  • 网站建设合同图片/线上宣传方案