0.0.20 • Published 3 years ago

@retailwe/ui-goods-card v0.0.20

Weekly downloads
-
License
-
Repository
-
Last release
3 years ago

GoodsCard 商品卡片

引入

app.jsonindex.json中引入组件,详细介绍见快速上手

"usingComponents": {
  "wr-goods-card": "@retailwe/ui-goods-card/index"
}

代码演示

基础用法

Page({
  data: {
    /** @type { GoodBase } */
    good: {
      thumb: '123123',
      num: 3,
      title: '当季新裤',
      desc: '欧美网红款',
      specs: ['比利时进口', 'L - 180', '长袖', '天蓝'],
      tags: ['双十一', '裤子'],
      price: 20.1 * 100,
      originPrice: 45.2 * 100,

      /** 指定某个key不展示 */
      hideKey: {
        thumbTag: true
      }
    }
  }
})
<wr-goods-card data="{{good}}" />

高级用法

通过插槽添加定制内容

<wr-goods-card data="{{good}}">
  <view slot="footer">
    <button size="mini">按钮</button>
    <button size="mini">按钮</button>
  </view>
</wr-goods-card>

API

Types

GoodBase

/** 商品类型,包含基础的数据结构 */
interface GoodBase {
  /** 预览图 */
  thumb?: string;
  /** 商品数量 */
  num?: number;
  /** 商品标题 */
  title?: string;
  /**
   * 标题多行溢出数量
   *
   * @default 1 当 tag 数量大于0时,取值为1
   * @default 2 当 tag 数量等于0时,取值为2
   */
  lineClamp?: number;
  /** 商品描述 */
  desc?: string;
  /** 商品规格,字符串,超过5个字就溢出 */
  specs?: string[];
  /**
   * 商品标签,位于desc区域
   */
  tags?: string[];
  /**
   * 商品标签,位于 title 前
   */
  titlePrefixTags?: {
    textColor?: string;
    color?: string;
    text: string;
  }[];
  /** 商品价格,单位分,整数 */
  price?: number;
  /** 商品划线价格,单位分,整数 */
  originPrice?: number;

  /** 传入哪个key,哪个key对应的内容就则不显示 */
  hideKey?: Record<keyof GoodBase, boolean>;
}

Good

/** 泛定义的商品数据类型,在基础类型上可以扩展数据用于业务需求 */
interface Good extends GoodBase {
  /** 是否展示购物车 */
  showCart?: boolean

  [key: string]: any
}

Props

参数说明类型默认值说明
data商品数据Good-必填
id组件ID,不填时自动生成形如goods-card-88888888的随机ID,方便做加购动画等时选取元素string-选填
layout预设布局stringhorizontal横向-horizontal、横向&价格与标题不同行-horizontal-wrap、纵向-vertical
thumb-mode左侧图片裁剪、缩放的模式,可选值参考小程序image组件mode属性值stringaspectFit选填
price-fill价格是否保持两位小数booleantrue选填
currency货币符号string¥选填
lazy-load是否开启图片懒加载booleanfalse选填
centered是否开启居中模式booleanfalse选填
price-prefix价格前缀文案string-选填
show-cart是否展示购物车boolean-选填
cart-size购物车大小,透传给add-cart组件sizenumber48选填
cart-color购物车颜色,透传给add-cart组件colorstring#FA550F选填
thresholds元素可见监控阈值number[][]选填,不填或填为空数组时不进行监控,进行监控后每达到一个阈值就触发一次事件:ob

Good

参数说明类型默认值说明
thumb预览图string-选填
num商品数量number-选填
title商品标题string-选填
lineClamp标题多行溢出数量number12默认值规则:当 tags 数量大于0 且 显示 时,默认值为1;当 tags 数量等于0 或 不显示 时,默认值为2
desc商品描述string-选填
specs商品规格,字符串,单个规则超过5个字就...string[]-选填
tags商品标签,位于desc区域string[]-选填
titlePrefixTags商品标签,位于 title 前string[]-选填
price商品价格,单位分,整数number-选填
originPrice商品划线价格,单位分,整数number-选填
hideKey传入哪个key,哪个key对应的内容就则不显示Record<keyof Good, boolean>-选填
string其他任意键值, 扩展结构用于其他业务目的any-选填

Slot

名称说明
thumb-cover覆盖在thumb上方
before-title渲染在 title 的view前部分(tags)
after-title跟随在 title 的view后方
after-desc跟随在 desc 的view后方
price-prefix渲染在 价格 的view前方
append-body渲染在 body 的尾部
footer渲染在 body 的后方
append-card渲染在 卡片 整个 view 的尾部

Events

EventDescriptionArguments(detail)
thumb点击商品预览图触发{ good: Good }
specs点击商品规格显示区触发{ good: Good }
tag点击商品标签触发{ good: Good, index: number }
add-cart加入购物车{ ...addCart.detail, good: Good, cardID: string, id: string }
click点击卡片{ good: Good }
tap同click,用于兼容{ good: Good }
ob设置了thresholds且商品卡片的可见比例达到阈值{ good: Good, context: WechatMiniprogram.IntersectionObserver, ob: WechatMiniprogram.ObserveCallbackResult, }

外部样式类

类名说明
card-class根节点样式类
title-classtitle 节点样式类
desc-classdesc 节点样式类
num-classnum 节点样式类
thumb-class预览图 样式类
specs-class规格节点样式类
price-classprice 节点样式类
origin-price-class原价 price 节点样式类
price-prefix-class价格前附加字符 样式类

CSS Var

类名属性说明默认值(不同的layout可能会不同)
--ui-goods-card-l-heightline-height组件全局行高1
--ui-goods-card-directionflex-direction组件main区块flex方向row
--ui-goods-card-paddingpadding组件main区块padding0
--ui-goods-card-bgbackground组件main区块背景transparent
--ui-goods-card-widthwidth组件main区块宽度-
--ui-goods-card-heightheight组件main区块高度-
--ui-goods-card-radiusborder-radius组件main区块圆角-
--ui-goods-card-overflowoverflow组件main区块溢出行为-
--ui-goods-card-thumb-widthwidth组件预览图区块宽度140rpx
--ui-goods-card-thumb-heightheight组件预览图区块宽度140rpx
--ui-goods-card-thumb-radiusborder-radius组件预览图区块圆角-
--ui-goods-card-body-directionflex-direction组件body图区块flex方向row
--ui-goods-card-body-marginmargin组件body图区块margin0 0 0 20rpx
--ui-goods-card-body-flexflex组件body图区块flex设置(flex-grow flex-shrink flex-basis)1 1 auto
--ui-goods-card-long-directionflex-directionlong区块的flex方向column
--ui-goods-card-long-heightheightlong区块指定高度-
--ui-goods-card-long-overflowoverflowlong区块溢出行为-
--ui-goods-card-long-flexflexlong区块flex设置(flex-grow flex-shrink flex-basis)1 1 auto
--ui-goods-card-title-sizefont-size标题字体大小28rpx
--ui-goods-card-title-colorcolor标题字体颜色#333
--ui-goods-card-title-heightheight标题区块高度-
--ui-goods-card-title-l-heightline-height标题行高40rpx
--ui-goods-card-title-tag-marginmargin标题前tag margin0 8rpx 0 0
--ui-goods-card-desc-sizefont-size描述字体大小24rpx
--ui-goods-card-desc-colorcolor描述字体颜色#F5F5F5
--ui-goods-card-desc-l-heightline-height描述行高40rpx
--ui-goods-card-specs-sizefont-size规格值字体大小20rpx
--ui-goods-card-specs-colorcolor规格值字体颜色#333
--ui-goods-card-specs-bgbackground规格值字体颜色#F5F5F5
--ui-goods-card-specs-icon-size--ui-icon-size规格值icon(右箭头)大小16rpx
--ui-goods-card-tags-wrapflex-wrao标签区块flex换行行为wrap
--ui-goods-card-tags-marginmargin标签区块margin16rpx 0 0 0
--ui-goods-card-tag-colorcolor标签前景色#FA550F
--ui-goods-card-tag-bgbackground标签背景色transparent
--ui-goods-card-tag-sizefont-size标签字体大小20rpx
--ui-goods-card-tag-borderborder标签border1rpx solid #FA550F
--ui-goods-card-tag-paddingpadding标签border0 8rpx
--ui-goods-card-tag-heightheight标签高度30rpx
--ui-goods-card-tag-max-widthmax-width标签最大长度-
--ui-goods-card-tag-marginmargin标签margin0 8rpx 0 0
--ui-goods-card-tag-displaydisplay标签displayblock
--ui-goods-card-tag-overflowoverflow标签overflowhidden
--ui-goods-card-tag-white-spacewhite-space标签white-spacenowrap
--ui-goods-card-tag-word-breakword-break标签word-breakkeep-all
--ui-goods-card-tag-text-overflowtext-overflow标签text-overflowellipsis
--ui-goods-card-short-positionpositionshort区块position-
--ui-goods-card-short-directionflex-directionshort区块flex方向-
--ui-goods-card-short-justifyjustify-contentshort区块主轴对齐flex-start
--ui-goods-card-short-alignalign-itemsshort区块副轴对齐flex-start
--ui-goods-card-short-marginmarginshort区块margin0 0 0 46rpx
--ui-goods-card-price-pre-orderorder价格前文案order0
--ui-goods-card-price-pre-colorcolor价格前文案颜色#666
--ui-goods-card-price-pre-marginmargin价格前文案margin0
--ui-goods-card-price-weightfont-weight价格字重600
--ui-goods-card-price-orderorder价格order1
--ui-goods-card-price-colorcolor价格color#333
--ui-goods-card-price-sizefont-size价格字体大小28rpx
--ui-goods-card-price-marginmargin价格margin0
--ui-goods-card-price-display--ui-price-display--
--ui-goods-card-price-color--ui-price-color--
--ui-goods-card-price-size--ui-price-size--
--ui-goods-card-price-weight--ui-price-weight--
--ui-goods-card-price-decoration--ui-price-decoration--
--ui-goods-card-price-symbol-color--ui-price-symbol-color--
--ui-goods-card-price-symbol-size--ui-price-symbol-size-20rpx
--ui-goods-card-price-pprice-margin--ui-price-pprice-margin--
--ui-goods-card-price-integer-color--ui-price-integer-color--
--ui-goods-card-price-integer-size--ui-price-integer-size--
--ui-goods-card-price-decimal-color--ui-price-decimal-color--
--ui-goods-card-price-decimal-size--ui-price-decimal-size-20rpx
--ui-goods-card-o-price-weightfont-weight划线价字重400
--ui-goods-card-o-price-orderorder划线价order2
--ui-goods-card-o-price-colorcolor划线价color#AAAAAA
--ui-goods-card-o-price-sizefont-size划线价字体大小24rpx
--ui-goods-card-o-price-marginmargin划线价margin0
--ui-goods-card-o-price-display--ui-price-display--
--ui-goods-card-o-price-color--ui-price-color--
--ui-goods-card-o-price-size--ui-price-size--
--ui-goods-card-o-price-weight--ui-price-weight--
--ui-goods-card-o-price-decoration--ui-price-decoration--
--ui-goods-card-o-price-symbol-color--ui-price-symbol-color--
--ui-goods-card-o-price-symbol-size--ui-price-symbol-size-20rpx
--ui-goods-card-o-price-pprice-margin--ui-price-pprice-margin--
--ui-goods-card-o-price-integer-color--ui-price-integer-color--
--ui-goods-card-o-price-integer-size--ui-price-integer-size--
--ui-goods-card-o-price-decimal-color--ui-price-decimal-color--
--ui-goods-card-o-price-decimal-size--ui-price-decimal-size-20rpx
--ui-goods-card-number-orderorder数量order4
--ui-goods-card-number-sizefont-size数量字体大小24rpx
--ui-goods-card-number-colorcolor数量颜色#999
--ui-goods-card-number-marginmargin数量margin20rpx 0 0 auto
--ui-goods-card-cart-orderorder购物车order3
--ui-goods-card-cart-marginmargin购物车marginauto 0 0 auto
--ui-goods-card-cart-positionposition购物车position-
--ui-goods-card-cart-bottombottom购物车bottom-
--ui-goods-card-cart-rightright购物车right-
0.0.20

3 years ago

0.0.18

3 years ago

0.0.19

3 years ago

0.0.17

4 years ago

0.0.16

4 years ago

0.0.15

4 years ago

0.0.14

4 years ago

0.0.12

4 years ago

0.0.11

4 years ago