Giter Club home page Giter Club logo

slidepage's Introduction

slidePage

Demo:

Featured

slidePage3 特别适合主流前端框架开发,无任何依赖库,Gzip压缩后仅有2.4k, 接口符合插件具有的初始化、销毁、重载的方法,适配PC和移动端,可实现内容超出屏幕滚动、手动播放动画、动态更新等特色功能,具体查看完整示例: fullFeatured

Documentation:

Usage

Including files

<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/lipten/slidePage/dist/slidePage.min.css">

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/lipten/slidePage/dist/slidePage.min.js"></script>

Required HTML structure

<div class="slide-container" id="slide-container">
    <div class="slide-page page1">
      <div class="container">
        <h2>page1</h2>
        <p>page1 content</p>
      </div>
    </div>
    <div class="slide-page page2">
      <div class="container">
        <h2>page2</h2>
        <p>page2 content</p>
      </div>
    </div>
</div>

您可以查看完整examples里的html文件结构 fullFeatured.html

Initialization

new slidePage()

Configuration

var slidepage = new slidePage({
    slideContainer: '#slide-container',
    slidePages: '.slide-item',
    page: 1,
    refresh: true,
    dragMode: false,
    useWheel: true,
    useSwipe: true,
    useAnimation : true,

    // Events
    before: function(origin,direction,target){},
    after: function(origin,direction,target){},
 });

Options

在slidePage中,page指的是每一次全屏滚动的一屏,也可以理解为每一屏对应的页码,必须是1以上的整数

name type default description
slideContainer String|Element '.slide-container' 指定slidePage要运行的容器选择器或元素
slidePages String|NodeList|HTMLCollection '.slide-page' 指定`slideContainer`容器里每个page的选择器或元素
page Number 1 首次进入的page页码
dragMode Boolean false 💡移动端开启触控拖动滑屏模式(此功能还在测试阶段),默认为false,前提是`useSwipe: true`
useAnimation Boolean true 是否开启动画
refresh Boolean true 每次滚动进入是否重新执行动画
useWheel Boolean true 是否开启鼠标滚轮滑动
useSwipe Boolean true 是否开启移动端触控滑动

Events

name description
before 每次全屏滚动前触发事件,回调三个参数(origin, direction, target),分别是滚动前的page序号、方向('next'|'prev')、滚动后的page序号
after 每次全屏滚动后触发事件,回调三个参数(origin, direction, target),参数释义同上

Using Animation

为了方便示例用animate.css,动画效果可以自己实现

Include animate.css

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/animate.min.css">

HTML structure

<div class="step animated fadeIn" data-delay="1300"></div>;

在想要动画控制的元素上加上step类,并加上css动画类名即可使用动画,data-delay属性控制动画延时播放(默认为100毫秒);

手动触发动画

<div class="lazy animated fadeIn"></div>
  1. 在想要手动播放动画的元素上加上lazy类,并加上css动画类名即可使用动画,可以加上data-delay使触发时再延时播放;
  2. 通过slidepage.slideFire(page)指定某一页的lazy动画触发播放。

Drag Mode

最新加入的拖动滑屏模式,在实例化时传入配置dragMode: true,即可开启,此功能目前为测试阶段,请酌情使用。

现已加入Demo系列豪华套餐:

需要注意的是,为了滑动松手后的动画体验更好,记得在你的项目里设置过渡动画类.slide-container .slide-page.transition,调整过渡函数和时长。具体查看示例代码:https://github.com/lipten/slidePage/blob/master/examples/drag.html#L13

Methods

slidepage.slideNext()

滑动定位到下一屏

slidepage.slidePrev()

滑动定位到上一屏

slidepage.slideTo(page)

传入page页码,滑动定位到对应的page

slidepage.slideFire(page)

触发对应 page 的lazy手动动画

slidepage.destroy()

销毁当前实例,移除所有事件恢复class属性值。

slidepage.update(newSlidePages)

当html里的page发生变化时需要执行动态更新。

newSlidePages参数非必填,仅应对于初始化的时候slidePages参数传入的是NodeListHTMLCollection时才需要在更新的时候再传一次变化后的DOM结构通知更新。

此方法非常适合现在流行的数据驱动型框架,当模型数据驱动改变pege的排列时,执行update可以起到更新的作用,可以先看示例源码了解:custom.html

Contributing

development

本地运行

npm install
npm run server

构建

npm run build

slidepage's People

Contributors

linwenchao avatar lipten avatar liran avatar vladutilie 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  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  avatar  avatar  avatar  avatar

Watchers

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

slidepage's Issues

item 里面元素大小问题

请教下大神,你是怎么解决移动端全屏div.item下子元素的,宽高和布局问题呢?
比如设计稿750*1334,我怎么设置子元素的大小
我现在用sass计算样式成rem,js来设置html对应的dip和字体大小,但是全屏活动在ip4小屏幕手机还是不能完美展现,请教大神有什么方法望告知,还是说百分比来解决或者根据设备整个页面缩放处理···哎 头疼

js添加slidepage无效,仅显示最后一张图片

<script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js"></script>	
<script type="text/javascript" src="./source/slidePage/slidePage.min.js"></script>	

<script>
	var ctg = localStorage.ctg;
	var max = localStorage.max;
	var fa = document.getElementById("page1"); 
    $.getJSON("https://2018happy.club/ct.json", function (data){
	var ctd=data[ctg];
	for(var i=0;i<ctd.length;i++){
	   for(var j=1;j<parseInt(max)+1;j++){
			var ta = fa.cloneNode(true); 
			ta.setAttribute("id", ctd[i] + j);
			ta.className ="slide-page page1 transition";
			ta.getElementsByTagName("img")[0].src="./pic/"+ctg+"/"+ctd[i]+j+".jpg";
			ta.getElementsByTagName("h2")[0].innerHTML=ctd[i]+j;
			fa.parentNode.appendChild(ta);
       }
	}
	})
	var slide = new slidePage({page: 1,});
</script>

zepto.js 报错

DEMO 如果用 jquery 没问题,如果用 zepto 会在控制台输出一个错误,但是功能正常。浏览器是 chrome 模拟器

初始化不了slidePage

var slide = new slidePage();在这一段代码里报错,显示Uncaught TypeError: slidePage is not a constructor

在第96行遇到一个问题,求大神指教

//-- 这里在移动端下有个奇怪的问题:如果设置了speed参数,也就是当js设置了下面这个css属性,那么这个css动画的时间曲线会变成匀速过渡(linear),所以speed只能默认为false暂时避免这问题。
$('.item').css({'transition-duration':opt.speed+'ms','-webkit-transition-duration':opt.speed+'ms'});

wow、aos怎么兼容

比如有一屏是个长页面, slideFire 方法执行完之后所有的动画都触发了,请问有没有办法兼容 wow 或者 aos,让滚动到该位置的时候再加载呢?

谷歌兼容性bug

谷歌下面如果页面里面有比较长的图片内容,那一页的滚动就会失效

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.