前端组件库 ——WeUI 知识点大全(二)

简介: 教程来源 http://oieaw.cn WeUI是微信官方UI库,提供按钮、输入框、列表等表单组件,图标、Flex/网格等基础组件,Dialog/Toast/ActionSheet等反馈组件,以及导航、数据展示和搜索组件,全面支持微信小程序与H5页面开发。

三、核心组件详解

3.1 表单类组件
表单是用户与应用交互的核心,WeUI 提供了完整的表单组件体系。

3.1.1 按钮组件
按钮是 WeUI 中最基础的交互元素,提供了多种视觉变体:

<!-- 主要操作按钮(绿色) -->
<button class="weui-btn weui-btn_primary">主要按钮</button>

<!-- 次要操作按钮(灰色) -->
<button class="weui-btn weui-btn_default">默认按钮</button>

<!-- 警示操作按钮(红色) -->
<button class="weui-btn weui-btn_warn">警告按钮</button>

<!-- 小尺寸按钮 -->
<button class="weui-btn weui-btn_primary weui-btn_mini">小按钮</button>

<!-- 禁用按钮 -->
<button class="weui-btn weui-btn_primary weui-btn_disabled">禁用按钮</button>

<!-- 加载中按钮 -->
<button class="weui-btn weui-btn_primary weui-btn_loading">
    <i class="weui-loading"></i> 加载中
</button>

按钮状态说明:

主要按钮(绿色):用于页面的主要操作,如“提交”、“确认”

默认按钮(灰色):用于次要操作,如“取消”、“返回”

警示按钮(红色):用于危险操作,如“删除”、“注销”

3.1.2 输入框组件
输入框是表单中的核心元素,WeUI 提供了多种输入框样式:

<!-- 标准输入框 -->
<div class="weui-cell">
    <div class="weui-cell__hd">
        <label class="weui-label">用户名</label>
    </div>
    <div class="weui-cell__bd">
        <input class="weui-input" type="text" placeholder="请输入用户名">
    </div>
</div>

<!-- 带验证状态的输入框 -->
<div class="weui-cell weui-cell_warn">
    <div class="weui-cell__hd">
        <label class="weui-label">手机号</label>
    </div>
    <div class="weui-cell__bd">
        <input class="weui-input" type="tel" placeholder="请输入手机号">
    </div>
    <div class="weui-cell__ft">
        <i class="weui-icon-warn"></i>
    </div>
</div>

<!-- 文本域 -->
<div class="weui-cell">
    <div class="weui-cell__bd">
        <textarea class="weui-textarea" placeholder="请输入详细描述" rows="3"></textarea>
        <div class="weui-textarea-counter">0/200</div>
    </div>
</div>

<!-- 带前缀/后缀的输入框 -->
<div class="weui-cell">
    <div class="weui-cell__hd">
        <label class="weui-label">金额</label>
    </div>
    <div class="weui-cell__bd">
        <input class="weui-input" type="number" placeholder="0.00">
    </div>
    <div class="weui-cell__ft">
        元
    </div>
</div>

输入框结构说明:

weui-cell:表单项容器

weui-cell__hd:标签区域

weui-label:标签文本

weui-cell__bd:输入区域

weui-input:输入框样式

weui-cell__ft:右侧附加区域(图标、提示等)

weui-cell_warn:警告状态的样式修饰

3.1.3 列表表单
列表表单用于展示多个表单项的组合:

<div class="weui-cells weui-cells_form">
    <div class="weui-cell">
        <div class="weui-cell__hd">
            <label class="weui-label">姓名</label>
        </div>
        <div class="weui-cell__bd">
            <input class="weui-input" type="text" placeholder="请输入姓名">
        </div>
    </div>
    <div class="weui-cell">
        <div class="weui-cell__hd">
            <label class="weui-label">邮箱</label>
        </div>
        <div class="weui-cell__bd">
            <input class="weui-input" type="email" placeholder="请输入邮箱">
        </div>
    </div>
    <div class="weui-cell weui-cell_vcode">
        <div class="weui-cell__hd">
            <label class="weui-label">验证码</label>
        </div>
        <div class="weui-cell__bd">
            <input class="weui-input" type="number" placeholder="请输入验证码">
        </div>
        <div class="weui-cell__ft">
            <button class="weui-vcode-btn">获取验证码</button>
        </div>
    </div>
</div>

3.1.4 选择器

<!-- 单选框组 -->
<div class="weui-cells weui-cells_radio">
    <label class="weui-cell weui-check__label" for="radio1">
        <div class="weui-cell__bd">
            <p>选项一</p>
        </div>
        <div class="weui-cell__ft">
            <input type="radio" class="weui-check" name="radio" id="radio1" checked>
            <span class="weui-icon-checked"></span>
        </div>
    </label>
    <label class="weui-cell weui-check__label" for="radio2">
        <div class="weui-cell__bd">
            <p>选项二</p>
        </div>
        <div class="weui-cell__ft">
            <input type="radio" class="weui-check" name="radio" id="radio2">
            <span class="weui-icon-checked"></span>
        </div>
    </label>
</div>

<!-- 复选框组 -->
<div class="weui-cells weui-cells_checkbox">
    <label class="weui-cell weui-check__label" for="checkbox1">
        <div class="weui-cell__hd">
            <input type="checkbox" class="weui-check" id="checkbox1">
            <i class="weui-icon-checked"></i>
        </div>
        <div class="weui-cell__bd">
            <p>选项一</p>
        </div>
    </label>
    <label class="weui-cell weui-check__label" for="checkbox2">
        <div class="weui-cell__hd">
            <input type="checkbox" class="weui-check" id="checkbox2">
            <i class="weui-icon-checked"></i>
        </div>
        <div class="weui-cell__bd">
            <p>选项二</p>
        </div>
    </label>
</div>

<!-- 开关 -->
<div class="weui-cell weui-cell_switch">
    <div class="weui-cell__bd">接收通知</div>
    <div class="weui-cell__ft">
        <input class="weui-switch" type="checkbox">
    </div>
</div>

<!-- 滑块 -->
<div class="weui-cell">
    <div class="weui-cell__bd">音量</div>
    <div class="weui-cell__ft">
        <input class="weui-slider" type="range" min="0" max="100" value="50">
    </div>
</div>

3.2 基础组件
3.2.1 图标组件
WeUI 内置了丰富的图标,覆盖了常见的状态和操作场景:

<!-- 成功图标 -->
<i class="weui-icon-success"></i>
<i class="weui-icon-success-no-circle"></i>

<!-- 提示图标 -->
<i class="weui-icon-info"></i>
<i class="weui-icon-info-circle"></i>

<!-- 警告图标 -->
<i class="weui-icon-warn"></i>

<!-- 等待/加载图标 -->
<i class="weui-icon-waiting"></i>
<i class="weui-icon-waiting-circle"></i>

<!-- 安全提示图标 -->
<i class="weui-icon-safe"></i>
<i class="weui-icon-safe-success"></i>

<!-- 取消/关闭图标 -->
<i class="weui-icon-cancel"></i>

<!-- 搜索图标 -->
<i class="weui-icon-search"></i>

<!-- 清除图标 -->
<i class="weui-icon-clear"></i>

<!-- 返回图标 -->
<i class="weui-icon-back"></i>

<!-- 更多图标 -->
<i class="weui-icon-more"></i>

图标使用场景:

weui-icon-success:操作成功提示

weui-icon-warn:警告或错误提示

weui-icon-info:普通信息提示

weui-icon-waiting:等待状态提示

weui-icon-search:搜索框占位符

weui-icon-clear:清空输入内容

3.2.2 Flex 布局
WeUI 提供了基于 Flexbox 的布局工具类:

<!-- 水平布局 -->
<div class="weui-flex">
    <div class="weui-flex__item">弹性项目1</div>
    <div class="weui-flex__item">弹性项目2</div>
    <div class="weui-flex__item">弹性项目3</div>
</div>

<!-- 垂直布局 -->
<div class="weui-flex weui-flex_column">
    <div>项目1</div>
    <div>项目2</div>
    <div>项目3</div>
</div>

<!-- 两端对齐 -->
<div class="weui-flex weui-flex_justify-between">
    <div>左</div>
    <div>中</div>
    <div>右</div>
</div>

<!-- 居中对齐 -->
<div class="weui-flex weui-flex_align-center">
    <div>内容会自动垂直居中</div>
</div>

<!-- 等分布局 -->
<div class="weui-flex">
    <div class="weui-flex__item">1/3</div>
    <div class="weui-flex__item">1/3</div>
    <div class="weui-flex__item">1/3</div>
</div>

3.2.3 网格布局

<!-- 三列网格 -->
<div class="weui-grids">
    <a href="#" class="weui-grid">
        <div class="weui-grid__icon">
            <img src="./images/icon1.png" alt="">
        </div>
        <p class="weui-grid__label">网格1</p>
    </a>
    <a href="#" class="weui-grid">
        <div class="weui-grid__icon">
            <img src="./images/icon2.png" alt="">
        </div>
        <p class="weui-grid__label">网格2</p>
    </a>
    <!-- 更多网格... -->
</div>

3.3 操作反馈组件
3.3.1 对话框(Dialog)
Dialog 用于需要用户确认的重要操作:

<div class="weui-dialog" id="dialog">
    <div class="weui-dialog__hd">
        <strong class="weui-dialog__title">提示</strong>
    </div>
    <div class="weui-dialog__bd">
        确定要删除这条数据吗?此操作不可恢复。
    </div>
    <div class="weui-dialog__ft">
        <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_default">取消</a>
        <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_primary">确定</a>
    </div>
</div>

<script>
// 显示对话框
document.getElementById('dialog').style.display = 'block';

// 隐藏对话框
function hideDialog() {
    document.getElementById('dialog').style.display = 'none';
}
</script>

3.3.2 提示框(Toast)
Toast 用于显示轻量级的操作反馈,通常 2-3 秒后自动消失:

<!-- 成功提示 -->
<div class="weui-toast">
    <i class="weui-icon-success-no-circle weui-icon_toast"></i>
    <p class="weui-toast__content">操作成功</p>
</div>

<!-- 失败提示 -->
<div class="weui-toast">
    <i class="weui-icon-warn weui-icon_toast"></i>
    <p class="weui-toast__content">操作失败</p>
</div>

<!-- 加载提示 -->
<div class="weui-toast">
    <i class="weui-loading weui-icon_toast"></i>
    <p class="weui-toast__content">加载中</p>
</div>

<!-- 纯文字提示 -->
<div class="weui-toast">
    <p class="weui-toast__content">仅文字提示</p>
</div>

<script>
// 动态显示 Toast 的函数
function showToast(message, type = 'success') {
    const toastHtml = `
        <div class="weui-toast" style="display: flex; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 9999;">
            <i class="weui-icon-${type === 'success' ? 'success-no-circle' : 'warn'} weui-icon_toast"></i>
            <p class="weui-toast__content">${message}</p>
        </div>
    `;
    const toast = document.createElement('div');
    toast.innerHTML = toastHtml;
    document.body.appendChild(toast);

    setTimeout(() => {
        document.body.removeChild(toast);
    }, 2000);
}
</script>

3.3.3 操作表(ActionSheet)
ActionSheet 从底部弹出,提供多个操作选项:

<div class="weui-actionsheet" id="actionSheet">
    <div class="weui-actionsheet__title">
        <p class="weui-actionsheet__title-text">请选择操作</p>
    </div>
    <div class="weui-actionsheet__menu">
        <div class="weui-actionsheet__cell" data-value="share">分享给朋友</div>
        <div class="weui-actionsheet__cell" data-value="copy">复制链接</div>
        <div class="weui-actionsheet__cell" data-value="delete">删除</div>
    </div>
    <div class="weui-actionsheet__action">
        <div class="weui-actionsheet__cell" data-value="cancel">取消</div>
    </div>
</div>

<script>
function showActionSheet(callback) {
    const sheet = document.getElementById('actionSheet');
    const mask = document.createElement('div');
    mask.className = 'weui-mask';
    mask.style.display = 'block';
    document.body.appendChild(mask);
    sheet.style.transform = 'translate(0, 0)';

    const cells = sheet.querySelectorAll('.weui-actionsheet__cell');
    cells.forEach(cell => {
        cell.onclick = () => {
            mask.remove();
            sheet.style.transform = '';
            if (callback) callback(cell.dataset.value);
        };
    });
}
</script>

3.4 导航组件
3.4.1 顶部导航栏

<div class="weui-navbar">
    <div class="weui-navbar__item weui-bar__item_on" data-tab="tab1">
        选项一
    </div>
    <div class="weui-navbar__item" data-tab="tab2">
        选项二
    </div>
    <div class="weui-navbar__item" data-tab="tab3">
        选项三
    </div>
</div>

<!-- 对应的内容面板 -->
<div class="weui-tab__panel">
    <div class="weui-tab__content" id="tab1" style="display: block;">内容一</div>
    <div class="weui-tab__content" id="tab2" style="display: none;">内容二</div>
    <div class="weui-tab__content" id="tab3" style="display: none;">内容三</div>
</div>

<script>
// 标签页切换
document.querySelectorAll('.weui-navbar__item').forEach(item => {
    item.addEventListener('click', function() {
        const tabId = this.dataset.tab;
        // 切换导航栏选中状态
        document.querySelectorAll('.weui-navbar__item').forEach(nav => {
            nav.classList.remove('weui-bar__item_on');
        });
        this.classList.add('weui-bar__item_on');
        // 切换内容面板
        document.querySelectorAll('.weui-tab__content').forEach(content => {
            content.style.display = 'none';
        });
        document.getElementById(tabId).style.display = 'block';
    });
});
</script>

3.4.2 底部标签栏

<div class="weui-tabbar">
    <a href="#" class="weui-tabbar__item weui-bar__item_on">
        <div class="weui-tabbar__icon">
            <img src="./images/icon_home.png" alt="">
        </div>
        <p class="weui-tabbar__label">首页</p>
    </a>
    <a href="#" class="weui-tabbar__item">
        <div class="weui-tabbar__icon">
            <img src="./images/icon_find.png" alt="">
        </div>
        <p class="weui-tabbar__label">发现</p>
    </a>
    <a href="#" class="weui-tabbar__item">
        <div class="weui-tabbar__icon">
            <img src="./images/icon_notify.png" alt="">
        </div>
        <p class="weui-tabbar__label">通知</p>
    </a>
    <a href="#" class="weui-tabbar__item">
        <div class="weui-tabbar__icon">
            <img src="./images/icon_profile.png" alt="">
        </div>
        <p class="weui-tabbar__label">我的</p>
    </a>
</div>

3.4.3 面包屑导航

<div class="weui-breadcrumb">
    <a href="#" class="weui-breadcrumb__link">首页</a>
    <span class="weui-breadcrumb__sep">&gt;</span>
    <a href="#" class="weui-breadcrumb__link">产品中心</a>
    <span class="weui-breadcrumb__sep">&gt;</span>
    <span class="weui-breadcrumb__current">当前页面</span>
</div>

3.5 数据展示组件
3.5.1 列表(Cells)
列表是 WeUI 中最常用的数据展示组件:

<!-- 基础列表 -->
<div class="weui-cells">
    <div class="weui-cell">
        <div class="weui-cell__bd">
            <p>列表项1</p>
        </div>
        <div class="weui-cell__ft">
            详细信息
        </div>
    </div>
    <div class="weui-cell weui-cell_access">
        <div class="weui-cell__bd">
            <p>可点击列表项</p>
        </div>
        <div class="weui-cell__ft weui-cell__ft_in-access">
        </div>
    </div>
    <div class="weui-cell weui-cell_swiped">
        <div class="weui-cell__bd">
            <p>可滑动列表项</p>
        </div>
        <div class="weui-cell__ft">
            <a href="#" class="weui-swiped-btn">删除</a>
        </div>
    </div>
</div>

<!-- 带头像的列表 -->
<div class="weui-cells">
    <div class="weui-cell">
        <div class="weui-cell__hd">
            <img src="./images/avatar.jpg" style="width: 40px; height: 40px; border-radius: 50%;">
        </div>
        <div class="weui-cell__bd">
            <p>张三</p>
            <p class="weui-cell__desc">这里是描述信息</p>
        </div>
        <div class="weui-cell__ft">昨天</div>
    </div>
</div>

3.5.2 面板(Panel)
面板用于组合展示相关内容:

<div class="weui-panel">
    <div class="weui-panel__hd">面板标题</div>
    <div class="weui-panel__bd">
        <div class="weui-media-box weui-media-box_text">
            <h4 class="weui-media-box__title">标题</h4>
            <p class="weui-media-box__desc">描述内容,这里是一段简短的描述文字。</p>
        </div>
        <div class="weui-media-box weui-media-box_text">
            <h4 class="weui-media-box__title">另一个标题</h4>
            <p class="weui-media-box__desc">另一段描述内容。</p>
        </div>
    </div>
    <div class="weui-panel__ft">
        <a href="#" class="weui-cell weui-cell_access weui-cell_link">
            <div class="weui-cell__bd">查看更多</div>
            <span class="weui-cell__ft"></span>
        </a>
    </div>
</div>

<!-- 图文面板 -->
<div class="weui-panel">
    <div class="weui-panel__hd">热门推荐</div>
    <div class="weui-panel__bd">
        <a href="#" class="weui-media-box weui-media-box_appmsg">
            <div class="weui-media-box__hd">
                <img class="weui-media-box__thumb" src="./images/thumb.jpg" alt="">
            </div>
            <div class="weui-media-box__bd">
                <h4 class="weui-media-box__title">文章标题</h4>
                <p class="weui-media-box__desc">文章描述...</p>
            </div>
        </a>
    </div>
</div>

3.5.3 卡片

<div class="weui-card">
    <div class="weui-card__header">
        <div class="weui-card__header-title">卡片标题</div>
        <div class="weui-card__header-extra">更多</div>
    </div>
    <div class="weui-card__body">
        <p>卡片内容区域,可以放置任意 HTML 内容。</p>
    </div>
    <div class="weui-card__footer">
        <div class="weui-card__footer-item">点赞</div>
        <div class="weui-card__footer-item">评论</div>
        <div class="weui-card__footer-item">分享</div>
    </div>
</div>

3.6 搜索组件

<!-- 搜索栏 -->
<div class="weui-search-bar">
    <form class="weui-search-bar__form">
        <div class="weui-search-bar__box">
            <i class="weui-icon-search"></i>
            <input type="search" class="weui-search-bar__input" id="searchInput" placeholder="搜索">
            <a href="javascript:" class="weui-icon-clear" id="searchClear"></a>
        </div>
        <label class="weui-search-bar__label" id="searchText">
            <i class="weui-icon-search"></i>
            <span>搜索</span>
        </label>
    </form>
    <a href="javascript:" class="weui-search-bar__cancel-btn" id="searchCancel">取消</a>
</div>

<script>
// 搜索栏交互逻辑
const searchBar = document.querySelector('.weui-search-bar');
const searchInput = document.getElementById('searchInput');
const searchCancel = document.getElementById('searchCancel');
const searchClear = document.getElementById('searchClear');

searchInput.addEventListener('focus', () => {
    searchBar.classList.add('weui-search-bar_focusing');
});

searchCancel.addEventListener('click', () => {
    searchBar.classList.remove('weui-search-bar_focusing');
    searchInput.value = '';
});

searchClear.addEventListener('click', () => {
    searchInput.value = '';
    searchInput.focus();
});
</script>

来源:
http://qcycj.cn

相关文章
|
固态存储 安全 Java
Maven settings.xml 最全配置详解:从入门到精通
本文深入讲解了 Maven settings.xml 的完整配置项,包含本地仓库路径、镜像源配置、代理设置、认证信息、Profile 多环境切换等核心内容。通过 10 个实战案例展示了企业级配置最佳实践,提供可直接使用的配置文件模板。掌握这些技能,你将能够轻松应对团队标准化、私服集成、多环境部署等场景。适合 Java 开发者、DevOps 工程师阅读。
|
12天前
|
JavaScript Java 关系型数据库
全栈(Java + Vue + MySQL)开发图书管理系统教程(一)
教程来源 https://yyvgt.cn 本教程带你从零打造全栈图书管理系统,涵盖Spring Boot+Vue3前后端分离开发、JWT认证、RBAC权限控制、MySQL数据库设计(含范式化/索引/软删除)及统一RESTful接口规范,深入原理与工程实践。
|
16天前
|
JSON 小程序 前端开发
前端组件库——Vant Weapp知识点大全
教程来源 http://oplhc.cn/ Vant Weapp是有赞官方打造的高星(1.1w+)微信小程序UI组件库,轻量、稳定、高性能,含50+组件与CSS变量主题系统,支持按需引入与深度定制,是小程序开发首选开源UI方案。
|
1月前
|
数据采集 机器学习/深度学习 人工智能
罗兰艺境GEO数据采集与信源分析系统:穿透AI推荐黑箱的逆向工程探针
罗兰艺境GEO多源智能推荐数据采集与信源分析系统,是面向生成式引擎优化的基础数据引擎。系统采用可扩展的平台适配器架构,支持DeepSeek、Kimi、豆包等主流AI平台的推荐结果采集;通过智能信源分类与权重动态计算模型,将非结构化的AI推荐转化为可量化、可追溯的结构化数据。系统输出信源权威分布、引用频次、时效偏好等关键特征,为GEO效果归因与策略生成提供可信数据支撑。适用于技术团队构建AI认知观测体系,实现从经验试错到数据驱动的GEO工程化实践。
246 6
|
2月前
|
存储 机器学习/深度学习 编解码
阿里云199元云服务器:2核4G+5M带宽+80G云盘,新购续费同价,初创企业首选
对于预算有限的初创团队及中小企业,阿里云推出的通用算力型u1实例199元云服务器特惠活动极具吸引力。该服务器配置为2核4G内存、5M带宽、80G ESSD Entry云盘,年费仅需199元,且新购与续费同价,活动长期有效至2027年。该服务器采用Intel ® Xeon ® Platinum处理器,性能稳定,适用于Web应用、企业办公、数据分析等多种场景,以极致性价比助力企业轻松上云,实现长期成本的确定性与可控性。
252 10
|
1月前
|
人工智能 数据可视化 API
零基础零门槛!OpenClaw 阿里云无影云电脑一键部署、iMessage对接与千问Qwen3.6-Plus配置教程
2026年,OpenClaw(原Clawdbot)作为轻量化、高扩展的AI智能体框架,凭借极简部署、多平台兼容与强大的工具调用能力,成为个人与团队搭建专属AI助理的首选方案。对于零基础用户,**阿里云无影云电脑**提供了官方认证的OpenClaw专属镜像,预装Node.js 22、Git、Homebrew等全部运行依赖,无需复杂环境配置,即可实现“分钟级部署、7×24小时稳定运行”。同时,通过官方imessage-connector插件可无缝对接苹果iMessage平台,搭配**阿里云千问Qwen3.6-Plus**大模型的高性能API,可实现长文本理解、复杂推理、代码生成、多轮对话等核心能力
284 2
|
2天前
|
数据采集 自动驾驶 算法
8类道路交通车辆目标检测数据集(2600张)|YOLO训练数据集 智慧交通 自动驾驶 车流统计 车辆识别
本数据集含2600张真实道路图像,精细标注8类车辆(公交、重型/中型/牵引卡车、皮卡、轿车、两轮车、面包车),YOLO格式,覆盖城市/城郊多场景,支持智慧交通、自动驾驶、车流统计等任务,开箱即用。
|
1月前
|
分布式计算 MaxCompute iOS开发
TorchEasyRec 在 macOS 上的功能限制总结
本文总结tzrec在macOS上的功能限制:核心依赖(如torchrec、fbgemm-gpu、graphlearn等)无法安装;分布式训练、原生数据管线、Embedding模块、Triton/CUDA算子、TDM树模型等功能完全不可用;优化器与模型导出部分失效;单元测试大多因强依赖而失败。
154 15
|
1月前
|
应用服务中间件
手慢无!阿里云轻量服务器2026最新秒杀价:2核4G配置199元/年,200M带宽不限流
阿里云2026轻量服务器秒杀开启!轻量应用服务器官方页面:https://t.aliyun.com/U/PEdlFP 新用户专享:2核2G低至38元/年(9.9元/月限时抢),2核4G仅199元/年,4核8G/16G分别1159元、1599元/年。全系配200M峰值带宽+不限流量,性价比远超友商。手慢无!

热门文章

最新文章