UNPKG

lighting-ui

Version:

A rich interaction, lightweight, high performance UI library based on Weex

127 lines (102 loc) 3.79 kB
# lc-ep-slider > Weex EP 效果的 slider 组件 ### 规则 - 用于丰富 slide,包括商品橱窗,图片列表等 - **假如子组件有点击事件,在 Android 由于 [此约束](http://weex-project.io/cn/references/gesture.html#约束),目前需要在子元素里面绑定对应事件,Weex Ui 提供了 [wxc-pan-cell](https://github.com/alibaba/weex-ui/tree/master/packages/lc-pan-item) 包裹器来解决此情况,具体可参考 [demo](https://github.com/alibaba/weex-ui/tree/master/example/ep-slider)** ## [Demo](https://h5.m.taobao.com/trip/lc-ep-slider/index.html?_wx_tpl=https%3A%2F%2Fh5.m.taobao.com%2Ftrip%2Flc-ep-slider%2Fdemo%2Findex.native-min.js) <img src="https://gw.alipayobjects.com/zos/rmsportal/lWWUuRBxjMdLCaJGVHsp.gif" width="240"/>&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://img.alicdn.com/tfs/TB1Ky4QSpXXXXbRapXXXXXXXXXX-200-200.png" width="160"/> ## 使用方法 ```vue <template> <div class="wrapper"> <lc-ep-slider :slider-id="sliderId" :card-length='cardLength' :card-s="cardSize" :select-index="2" @LcEpSliderCurrentIndexSelected="LcEpSliderCurrentIndexSelected"> <!--自动生成demo--> <div v-for="(v,index) in [1,2,3,4,5]" :key="index" :slot="`card${index}_${sliderId}`" :class="['slider',`slider${index}`]"> <text>这里是第{{index + 1}}个滑块</text> </div> </lc-ep-slider> </div> </template> <style scoped> .wrapper { padding-top: 100px; } .slider { width: 400px; height: 300px; background-color: #C3413D; align-items: center; justify-content: center; } .slider1 { background-color: #635147; } .slider2 { background-color: #FFC302; } .slider3 { background-color: #FF9090; } .slider4 { background-color: #546E7A; } </style> <script> import { LcEpSlider } from 'weex-ui'; export default { components: { LcEpSlider }, data: () => ({ sliderId: 1, cardLength: 5, cardSize: { width: 400, height: 300, spacing: 0, scale: 0.8 } }), methods: { LcEpSliderCurrentIndexSelected (e) { const index = e.currentIndex; console.log(index); } } } </script> ``` 更多详细情况可以参考 [demo](https://github.com/alibaba/weex-ui/blob/master/example/ep-slider/index.vue) ### 可配置参数 | Prop | Type | Required | Default | Description | |-------------|------------|--------|-----|-----| | slider-id | `Number` |`Y`| `1` | slider的id,避免页面多个ep-slider导致获取错误| | card-length | `Number` |`Y`| `1` | slider中item的数量| | select-index | `Number` |`N`| `0` | 默认突出item的index| | enable-swipe | `Boolean` | `N`|`true` | 是否需要滑动效果| | container-s | `Object` |`Y`| `{position: 'relative',width: 750,height: 352,overflow: 'hidden'}` | 包裹容器的样式| | card-s | `Object` | `Y`|`{width: 360,height: 300,spacing: 0,scale: 0.75}` | item容器的样式| | auto-play | `Boolean` | `N`|`false` |是否需要自动播放| | interval | `Number` | `N`|`1200` |自动播放时候的间隔| ### API说明 ``` //ios下当放在list中,cell被回收后,导致下次appear的时候,手势失效了,需要再手动调用api,重新绑定下pan事件 // 直接在lc-ep-slider组件上面绑定ref="lc-ep-slider" this.$refs['lc-ep-slider'].rebind(); ``` ### 主动触发设置 ``` // 直接在lc-ep-slider组件上面绑定ref="lc-ep-slider",然后调用即可 // 譬如设置第二张 this.$refs['lc-ep-slider'].manualSetPage(1); ``` ### 事件回调 ``` //当前滑块被选中的回调 `v-on:LcEpSliderCurrentIndexSelected="LcEpSliderCurrentIndexSelected"` ```