三步让你实现微信UI组件,入手微信生态开发。

212 阅读4分钟

本篇文章将深入分析微信WEUI的按钮组件源码,并通过代码解析其功能和实现原理。

在构建移动应用时,UI组件的选择对于提升用户体验至关重要。WEUI,作为微信官方推出的一个简洁、高效的UI框架,专为微信网页和小程序设计,它提供了一系列经过优化的UI组件,使得开发者能够迅速搭建出与微信风格一致的界面。本文将以一个简单的按钮组件为例,深入剖析WEUI源码中的关键CSS样式设置,理解其设计理念与实现技巧。 image.png 这是初步实现的效果。

1. HTML 结构

首先,我们来看一下按钮组件的HTML结构:

<div class="button-sp-area">
    <a href="#" class="weui-btn weui-btn_primary ">主要操作</a>
    <a href="#" class="weui-btn weui-btn_default">次要操作</a>
    <a href="#" class="weui-btn weui-btn_warn">警告</a>
</div> 

代码中,使用<a>标签作为按钮的容器,并通过href属性设置按钮的链接地址。同时,使用weui-btn类作为按钮的基类,并通过weui-btn_primaryweui-btn_defaultweui-btn_warn等类来定义按钮的类型和样式。

2. CSS 样式

接下来,我们分析一下按钮组件的CSS样式:

.weui-btn {
    display: block;/*设定块级 inline -> block*/
    width: 184px;
    margin: 0 auto;
    padding: 0 auto;
    font-weight: 500;
    font-size: 17px;
    text-align: center;
    text-decoration: none;
    color:#fff;
    line-height: 1.4118;
    border-radius: 8px;
    /*webkit 代表android,chrome,apple等内核
        user-select 是比较新的属性,
        实验属性 -webkit-user-select 支持 有的新手机上能运行
    */
    -webkit-user-select: none;
    user-select: none;/*防止长按选中 select 用户会误解*/  
    margin-bottom: 16px;

}
/*多态 封装 继承 */
.weui-btn_primary {/*修饰*/
    background-color: #07c160;
}
.weui-btn_default {
    color: rgba(0,0,0,0.9);
    background-color: rgba(0,0,0,0.5);
}
.weui-btn_warn{
    background-color: brown;
}/*css高级选择器 兄弟选择器*/
.weui-btn+.weui-btn {
    margin-top: 16px;
}
  1. 代码中,weui-btn类定义了按钮的基本样式,包括宽度、边距、字体、颜色、圆角等。weui-btn_primaryweui-btn_defaultweui-btn_warn等类则定义了不同类型按钮的背景颜色和文字颜色,实现按钮的多态性。此外,代码还使用兄弟选择器.weui-btn+.weui-btn来设置多个按钮之间的间距。
  2. 首先进行了CSS Reset,通过清除所有元素的默认内外边距、轮廓等,确保在不同浏览器中样式表现一致。这一步骤对于跨平台开发尤其重要,因为不同浏览器对于某些元素的默认样式处理可能不同,可能导致页面布局差异。
  3. 为了适应不同设备尺寸,<meta name="viewport">标签被用来设置视口宽度等于设备宽度,并初始化缩放比例为1,确保页面在移动设备上的适配性。同时,.page类设置了overflow-y: auto以及-webkit-overflow-scrolling: touch,使得页面在需要时可以平滑滚动,提升用户体验。
  4. 考虑到兼容性和美观性,源码中为<body>指定了系统默认字体system-ui,并在Apple设备上使用-apple-system,确保文字显示与系统风格一致。颜色方面,使用了透明度来调整辅助文字的深浅,比如.page__desc的描述文本采用了半透明黑色,以达到视觉上的舒适度。
  5. 核心部分在于.weui-btn类的定义,它展示了WEUI对按钮组件的基础样式设计:
  • 布局:通过display: block和固定宽度184px,使按钮成为响应式的块级元素,适应不同屏幕尺寸。
  • 交互优化-webkit-user-select: none; user-select: none;禁用了文本选择,避免用户在长按时出现不必要的文本高亮,提升了触控体验。
  • 状态区分:通过.weui-btn_primary.weui-btn_default.weui-btn_warn等类名,实现了按钮的不同状态和功能区分,直观传达操作的重要程度和性质。
  • 兄弟选择器:CSS兄弟选择器(.weui-btn+.weui-btn)的使用,它确保每个按钮之间有16px的垂直间距,无需为每个按钮单独添加外边距,简化了CSS代码,提高了可维护性。
  1. 通过这些的了解相信你也能实现这样的效果,如果能达到如下效果你也能拥有大厂程序员的水平: image.png

3. 总结

微信WEUI源码在按钮组件的设计上,充分体现了对细节的关注和对移动用户体验的深刻理解。通过简洁有效的CSS规则,既保证了组件的美观性,又确保了良好的交互性和跨平台的一致性,是进行移动UI开发时值得借鉴的优秀实践。