web原生ui组件库
2025-04-08
13
参考资料
Web原生UI组件库说明及案例
基本概念
Web原生UI组件库是指基于HTML、CSS和JavaScript标准技术构建的可复用用户界面组件集合,不依赖任何框架。
核心组件类型
表单组件
输入框(input)
选择框(select)
复选框(checkbox)
单选按钮(radio)
按钮(button)
导航组件
菜单(nav)
标签页(tabs)
面包屑(breadcrumb)
内容展示
卡片(card)
表格(table)
列表(list)
模态框(dialog)
反馈组件
提示框(alert)
加载指示器(spinner)
进度条(progress)
实现案例
1. 原生模态框实现
<button id="openModal">打开模态框</button> <dialog id="modal"> <h2>标题</h2> <p>这是模态框内容</p> <button id="closeModal">关闭</button> </dialog> <script> const modal = document.getElementById('modal'); document.getElementById('openModal').addEventListener('click', () => { modal.showModal(); }); document.getElementById('closeModal').addEventListener('click', () => { modal.close(); }); </script> <style> dialog { border: none; border-radius: 8px; padding: 20px; box-shadow: 0 0 10px rgba(0,0,0,0.1); } </style>
2. 自定义下拉选择框
<div class="custom-select"> <select> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> <span class="custom-arrow"></span> </div> <style> .custom-select { position: relative; width: 200px; } .custom-select select { width: 100%; padding: 8px; appearance: none; border: 1px solid #ccc; border-radius: 4px; } .custom-arrow { position: absolute; top: 50%; right: 10px; transform: translateY(-50%); width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #333; } </style>
3. 标签页组件
<div class="tabs"> <div class="tab-header"> <button class="tab-btn active" data-tab="tab1">标签1</button> <button class="tab-btn" data-tab="tab2">标签2</button> </div> <div class="tab-content"> <div id="tab1" class="tab-pane active">内容1</div> <div id="tab2" class="tab-pane">内容2</div> </div> </div> <script> document.querySelectorAll('.tab-btn').forEach(btn => { btn.addEventListener('click', () => { const tabId = btn.dataset.tab; // 移除所有active类 document.querySelectorAll('.tab-btn, .tab-pane').forEach(el => { el.classList.remove('active'); }); // 添加active类到当前按钮和对应内容 btn.classList.add('active'); document.getElementById(tabId).classList.add('active'); }); }); </script> <style> .tab-header { display: flex; border-bottom: 1px solid #ddd; } .tab-btn { padding: 10px 20px; background: none; border: none; cursor: pointer; } .tab-btn.active { border-bottom: 2px solid blue; } .tab-pane { display: none; padding: 20px; } .tab-pane.active { display: block; } </style>
优势
无框架依赖,性能高效
浏览器原生支持,兼容性好
体积小,加载速度快
可渐进增强,与现代框架兼容
注意事项
需要处理浏览器兼容性问题
部分组件需要手动实现交互逻辑
样式需要自行维护一致性
对于
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。