Coder Social home page Coder Social logo

helicopters / wc-swiper Goto Github PK

View Code? Open in Web Editor NEW
48.0 4.0 19.0 172 KB

基于 Vue2.x 的轮播组件 (支持 PC & Mobile)

JavaScript 36.24% HTML 6.84% Vue 56.92%
slider vue swiper slide carousels swipe vue-component vue-plugin vue-swiper wc-swiper

wc-swiper's Introduction

wc-swiper

基于 Vue 的移动端的图片轮播组件.

why

之前一直在用 vue-awesome-swiper, 功能很齐全, 但是唯一的问题就是体积比较大. 我只是想要一个简单的图片轮播, 但是却要引入 100多k 大小的文件, 这样是不对的.

特点

  • 支持自动播放 & 无限轮播 (loop) 效果
  • 支持用户手动滑动
  • 压缩后大概 ~8k
  • 支持鼠标事件
  • 支持上一页, 下一页, 以及滚动到指定页面
  • 支持自定义 Pagination 以及左右箭头

使用

npm i wc-swiper --save
// 在入口文件中引入(暂时不支持单组件引入的方式):
import wcSwiper from 'wc-swiper'
import 'wc-swiper/style.css'
Vue.use(wcSwiper);
// 在需要使用的 view 里面引入:
<wc-swiper>
	<wc-slide>
		// 这里放你需要轮播的内容, 比如一张图片
	</wc-slide>
</wc-swiper>

// 循环列表
<wc-swiper>
   <wc-slide v-for="(slide, key) in slides" :key="key">
   </wc-slide>
</wc-swiper>

// 异步获取 slides 的时候, 需要在 wc-swiper 上面添加 v-if 判断
<wc-swiper v-if="slides.length">
   <wc-slide v-for="(slide, key) in slides" :key="key">
   </wc-slide>
</wc-swiper>

// 带配置选项
<wc-swiper :duration="900" :interval="2000" @transitionend="fn">
	<wc-slide>
		// 这里放你需要轮播的内容, 比如一张图片
	</wc-slide>
</wc-swiper>

注意

所有的配置参数, 都必须使用动态props 而不能使用字面量Props:

<wc-swiper :duration="1500"> // 正确
<wc-swiper duration="1500">  // 错误

配置

在 wc-swiper 上面暴露了一些配置选项:

duration:	一次滑动的时间 | default: 500ms
interval:	两次滑动间隔时间 | default: 2500ms
autoplay:	是否自动播放 | default: true
therehold:	用户滑动多少距离之后自动翻页 | default: 110
defaultSlide:	默认显示索引为多少的 slide | default: 0,
pagination:	是否显示 pagination | default: true

事件

  • 在 wc-swiper 上可以监听一些事件:
transitionend 事件
每一次滑动结束(不论用户手动滑动, 还是自动滑动) 都会触发 transitionend 事件. 
transtionend 携带唯一一个参数:currentSlide, 用来表明, 当前 slide 是第几个 slide.
并且要注意: slide 从 0 开始计数.
  • 在 wc-slide 上面可以监听 click 事件.

方法

有些时候, 你可能想要实现这样一种操作: 点击一个按钮, 让 swiper 跳转到指定的 slide, 或者点击按钮, 让 swiper 跳转到上一个或者下一个. 对此, 你可以这样操作:

1.  <wc-swiper> 标签上添加 ref 属性, 例如: <wc-swiper ref="swiper"></wc-swiper>
2. 通过 this.$refs.swiper 来引用预先提供的 3 个方法:

slideTo (index) 跳转至指定索引 (index 从 0 开始)
next () 跳转到下一个
previous () 跳转到上一个

例如:
this.$refs.swiper.slideTo(3) // 跳转到索引为 3 的 slide

问题描述

1. 如何设置轮播图的高度

通过设置 wc-swiper 的高度即可. 比如:

<wc-swiper class="swiper"></wc-swiper>
.swiper {
	height: 200px;
}

2. 如何渲染异步数据

一般情况下, 轮播的数据可能通过接口请求得来, 此时, 需要在 wc-swiper 上面加上 v-if 判断, 从而延迟 wc-swiper 的渲染时机:

<wc-swiper v-if="slides.length">
   <wc-slide v-for="(slide, key) in slides" :key="key">
   </wc-slide>
</wc-swiper>

3. 点击 slide 的时候如果需要跳转新的页面该怎么办

可以为 wc-slide 的内容包裹一层 a 标签

<wc-swiper>
	<wc-slide>
		<a>
		   //content
		</a>
	</wc-slide>
</wc-swiper>

或者可以在 wc-slide 上面监听 click 事件:

<wc-swiper>
	<wc-slide @click="fn"></wc-slide>
</wc-swiper>

4. 怎么添加 pagination 或者左右箭头?

首先, 对于 pagination 这种常用的功能, 内置了一个默认的 pagination; 如果样式不满意, 可以通过重置 样式来定制; 其次, 在我看来, pagination 以及左右箭头, 都只是 swiper 的配套设施而不是组成部分. 所以 如果你想要使用自己定义的 pagination, 可以通过 slot 覆盖掉原来的 pagination 或者左右箭头.

<wc-swiper>
	<div slot="pagination"></div>
	<div slot="arrowLeft"></div>
	<div slot="arrowRight"></div>
</wc-swiper>

5. 如果想要在 swiper 里面放一些不随着 slide 滚动的内容怎么做

提供了一个 slot

<wc-swiper>
	<wc-slide ...>
	<span slot="g">固定元素</span>
</wc-swiper>

存在的问题

  • 多指触碰的时候, 比如多根手指同时滑动的时候, 就会出现问题, 这种极端情况, 比较复杂和少见, 暂时不考虑.

项目地址

wc-swiper

wc-swiper's People

Contributors

helicopters avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

wc-swiper's Issues

使用了slideTo()方法以后然后跳转页面回退的问题

额简洁明了的说吧,就是我有7个轮播图,然后我在vue初始化的使用通过 this.$refs.febSwiper.slideTo(self.bFirst); 类似这样的方法来实现跳转到我想要的slide序号
然后进入页面没有问题,我跳转到了其他页面回退的时候,那个附带的getclictXXX

swiper

如果给他设定宽度并且居中的话 会出现滑动异常

轮播回调事件问题

{{imageFlag % 2}}
-------------------------------------------------------------------------------------- transitionend (current) { this.imageFlag = current; } --------------------------------------------------------------------------------------

本意想在每次轮播结束后改变下样式,但是在最后一次回调时候,会闪一下,所以没办法加回调了,
大佬看看这问题呗

关于获取滑动距离异常的问题

就是平常一直不是做活动页嘛
然后会有底图的问题,如果我把滑动插件写在盒子里面的话可是滑动插件每次滚动的还是屏幕宽度的距离
这样的话造成了滚动几次之后我的滑动图片会同时出现上一涨的后面部分,和当前这张的一部分

壕礼知时节

钱包旺

活动期间,投资蜂计划、机构标A
(债权转让专区、天天赚、新手福利除外),
累计年化投资额每达到对应门槛即可获得
以下春游出行交通工具对应奖励
(可与其他活动同享)。

活动期间累计年化投资总额:5000元

立即前往 注:实物奖品在活动结束后15个工作日内发放到位。
       </div>

forinsss就是为了修正盒子的宽度加上的呐

请问是否计划添加垂直布局

之前也一直在用vue-awesome-swiper,遇到一些问题,同时也注意到了体积,请问是否考虑添加垂直布局,且垂直布局与水平布局可以嵌套?

使用defaultSlide 出现bug

比如 defaultSlide =2 那么 图片是正常显示第三张图片 但是 底部的圆点 pagination 还是在第一个位置

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.