收藏
评论

ZanUI 高颜值、好用、易扩展的小程序 UI 库

ZanUI-WeApp是有赞移动 Web UI 规范 ZanUI 的小程序现实版本,结合了微信的视觉规范,为用户提供更加统一的使用感受。

包含 badge、btn、card、cell、color、dialog、form、helper、icon、label、loadmore、panel、quantity、steps、switch、tab、toast、toptip 共计 18 类组件或元素。

<p> <a href="https://github.com/youzan/"><img alt="有赞logo" width="36px" src="https://img.yzcdn.cn/public_files/2017/02/09/e84aa8cbbf7852688c86218c1f3bbf17.png" alt="youzan"> </p></a> <p align="center"> <img alt="项目logo" src="https://img.yzcdn.cn/public_files/2017/02/06/ee0ebced79a80457d77ce71c7d414c74.png"> </p> <p align="center">高颜值、好用、易扩展的小程序 UI 库</p>

概述

ZanUI-WeApp是有赞移动 Web UI 规范 ZanUI 的小程序现实版本,结合了微信的视觉规范,为用户提供更加统一的使用感受。

包含 badge、btn、card、cell、color、dialog、form、helper、icon、label、loadmore、panel、quantity、steps、tab、toast、toptip 共计 17 类组件或元素。

更多背景介绍,可以移步到 我们专门写的的介绍文章

下载

git clone https://github.com/youzan/zanui-weapp.git

预览

打开微信web开发者工具,'本地小程序项目 - 添加项目',把 zanui-weapp 添加进去就可以查看组件源码、预览示例demo了。

使用

  1. 使用 ZanUI-WeApp 前请确保已经学习过微信官方的 小程序简易教程小程序框架介绍
  2. 然后用 BowerZanUI-WeApp 添加到你的项目中使用。
  3. 你也可以 fork 出一份你自己的 ZanUI-WeApp,这样可以获得更稳定的代码和更方便的进行个性定制。

我们推荐在你的app.wxss直接引入zanui-weapp/dist/index.wxss

根据功能的不同,可以将组件大致的分为4类:

1. 简单组件

如按钮组件,只要按照wxml结构写就好了

<!-- example/btn/index.html -->

<view class="zan-btn">按钮</view>

2. 复杂组件

如加载更多组件,需要先引入定义好的模版,然后给模版传递数据

<!-- example/loadmore/index.html -->

<!-- 引入组件模版 -->
<import src="path/to/zanui-weapp/dist/loadmore/index.wxml" />

<!-- 加载中 -->
<template is="zan-loadmore" data="{{loading: true}}" />

<!-- 一条数据都没有 -->
<template is="zan-loadmore" data="{{nodata: true}}" />

<!-- 没有更多数据了 -->
<template is="zan-loadmore" data="{{nomore: true}}" />

3. 带事件回调的组件

如数量选择组件,需要先引入模版,然后给模版传递数据

<!-- example/quantity/index.html -->

<import src="path/to/zanui-weapp/dist/quantity/index.wxml" />

<template is="zan-quantity" data="{{ ...quantity, componentId: 'customId' }}" />

然后通过Zan.Quantity把相关回调注入到页面中

// example/quantity/index.js

var Zan = require('path/to/zanui-weapp/dist/index');

Page(Object.assign({}, Zan.Quantity, {
  data: {
    quantity: {
      quantity: 10,
      min: 1,
      max: 20
    },
  },

  handleZanQuantityChange(e) {
    // 如果页面有多个Quantity组件,则通过唯一componentId进行索引
    var compoenntId = e.componentId;
    var quantity = e.quantity;

    this.setData({
      'quantity.quantity': quantity
    });
  }
}));

4. API类组件

如Toast组件,需要先引入模版,并在页面上使用。

注意zanToast这个数据也是通过Zan.Toast注入到页面的

<!-- example/toast/index.html -->

<import src="path/to/zanui-weapp/dist/toast/index.wxml" />

<view bindtap="showToast">显示toast</view>

<template is="zan-toast" data="{{ zanToast }}"></template>

将API注入到页面后,就可以通过this来直接调用相应的API了

<!-- example/toast/index.js -->

var Zan = require('path/to/zanui-weapp/dist/index');

Page(Object.assign({}, Zan.Toast, {
  showToast() {
    this.showZanToast('toast的内容');
  }
}));

更多示例可以在项目的example目录中查看

开源协议

本项目基于 MIT协议,请自由地享受和参与开源。

贡献

如果你有好的意见或建议,欢迎给我们提 issuePR,为优化 ZanUI-Weapp 贡献力量

收藏

8 个评论

  • 冯鑫
    冯鑫
    2018-04-21

    使用不了,都不能说清楚点吗

    2018-04-21
    赞同 2
    回复
  • 李勇
    李勇
    2018-06-28

    好东西呀

    2018-06-28
    赞同
    回复
  • Timi
    Timi
    2018-04-06

    小程序出了自定义组件,赞官方还打算用引入模板的方式吗

    2018-04-06
    赞同
    回复
  • 金色阳光
    金色阳光
    2018-03-06

    在用到zanui时,想做一个九宫格布局,图片是显示了,可图片下面的文字总是显示不到单元格内,例如:aaaa,显示在单元格的下面,而不是里面

    <view class="zan-row">

         <view class="zan-col zan-col-8">

          <image class="img" src="../img/bind.png" mode='scaleToFill'></image>

          <view class="zan-font-16 text_item">aaaa</view>

         </view>

         <view class="zan-col zan-col-8">

          <view class="zan-font-16">字号16</view>

         </view>

         <view class="zan-col zan-col-8">

          <view class="zan-font-16">绑定</view>

         </view>

       </view>



    2018-03-06
    赞同
    回复
  • 蔡杰
    蔡杰
    2018-01-29

    为何这个网页打不来,下载不了啊


    2018-01-29
    赞同
    回复
  • 青空
    青空
    2017-11-06

    @kennen 似乎不行   需要在具体的页面引入zanToast对应的template  目前耦合比较紧

    2017-11-06
    赞同
    回复
  • 小程序开发者
    小程序开发者
    2017-11-02

    自己写一个网络请求类, 怎么使用zanToast展示提示信息啊? 只有requestManager.js一个文件, 没有对应的html

    2017-11-02
    赞同
    回复
  • 周亮
    周亮
    2017-10-13

    ios10.0.0以下的版本不兼容

    2017-10-13
    赞同
    回复
登录 后发表内容