全屏切换效果

如何通过CSS使div实现全屏效果

1、全屏(竖屏)要素

  • 全屏的元素(section)及其父元素都要设置height:100%
  • 将html、body标签设置height:100%;并去掉滚动条
    1
    2
    3
    4
    html,body{
    height: 100%;
    overflow: hidden;
    }

2、横屏
使每个section呈现出横屏全屏滚动的话需将每个section设置float:left;且width=100%/section数;最外层的div要设置width=100%*section数

1
2
3
4
5
6
7
.left{
float: left;
width: 25%;
}
.container{
width: 400%;
}

全屏滑动插件开发

jQuery插件框架

闭包的作用

1
2
3
(function($){
//do something
})(jQuery);

闭包的好处

  1. 避免全局依赖
  2. 避免第三方插件的破坏
  3. 兼容jQuery操作符$和jQuery
开发方法:

1、 类级别组件开发:
即给jQuery命名空间下添加新的全局函数,也称为静态方法。

1
2
3
jQuery.myPlugin = function(){
// do sth
};

例如 $.Ajax(), $.extend()


2、 对象级别组件开发:
即挂在jQuery原型下的方法,这样通过选择器获取的jQuery对象实例也能共享该方法,也称为动态方法。

1
2
3
$.fn.myPlugin = function(){
// do sth
};

这里的$.fn===$.prototype
例如 addClass(), attr()

链式调用

如:$(“div”).next().addClass()…

1
2
3
4
5
6
7
8
$.fn.myPlugin = function(){
return this.each(function(){
//do something
});
};
// 代码说明:
// return this 返回当前对象,来维护插件的链式调用
// each 循环实现每个元素的访问

单例模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$.fn.Myplugin = function(){
var me=$(this),
instance = me.data("myPlugin");
if(!instance){
me.data("myPlugin",(instance = new myPlugin()));
}
};
<!-- 代码说明
1. 如果实例存在,则不再重新创建实例
2. 利用data()来存放插件对象的实例
3. jQuery.data() 函数详解:
data()函数用于在当前jQuery对象所匹配的所有元素上存取数据。
通过data()函数存取的数据都是临时数据,一旦页面刷新,之前存放的数据都将不复存在。
该函数属于jQuery对象(实例)。如果需要移除通过data()函数存放的数据,请使用removeData()函数。 -->

插件Demo下载

下载地址
视频教程

总结

由于对jQuery了解一般,只会一些基本的jQuery操作(如选择器、筛选、CSS、事件等),对jQuery开发插件不了解,因此视频看着很吃力,很多内容能看懂,但不理解为什么这样写。如果自己动手写一个jQuery插件的话,目前几乎是不可能的事。
故而网上找了些jQuery制作插件入门教程,如下:

  1. 不定义JQuery插件,不要说会JQuery
  2. 什么?你还不会写JQuery 插件

另:网上搜索时,发现很多网站都在使用全屏切换效果,如小米/魅族等的手机产品页面,找到了一些制作全屏切换效果的JS插件:
FullPage.js/FullPage
下面一部分内容是FullPage.js的介绍,内容来自

  1. 原文
  2. 参考
  3. 参考2

FullPage.js全屏滚动插件

fullPage.js 是一个基于 jQuery 的插件,它能够很方便、很轻松的制作出全屏网站。
主要功能

  • 支持鼠标滚动-
  • 支持前进后退和键盘控制-
  • 多个回调函数-
  • 支持手机、平板触摸事件-
  • 支持 CSS3 动画-
  • 支持窗口缩放-
  • 窗口缩放时自动调整-
  • 可设置滚动宽度、背景颜色、滚动速度、循环选项、回调、文本对齐方式等等

兼容性
fullPage.js 支持 IE8+ 及其他现代浏览器。

使用方法

1、引入文件

1
2
3
4
<link rel="stylesheet" href="css/jquery.fullPage.css">
<script src="js/jquery.min.js"></script>
<script src="js/jquery-ui.min.js"></script>
<script src="js/jquery.fullPage.js"></script>

2、HTML

1
2
3
4
5
6
7
8
9
10
11
<div id="fullpage">
<div class="section">第一屏</div>
<div class="section">第二屏</div>
<div class="section">
<div class="slide">第三屏的第一屏</div>
<div class="slide">第三屏的第二屏</div>
<div class="slide">第三屏的第三屏</div>
<div class="slide">第三屏的第四屏</div>
</div>
<div class="section">第四屏</div>
</div>

3、JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$(function(){
$("#fullpage").fullpage();
})
//或添加内容。
$(function(){
$('#fullpage').fullpage({
'verticalCentered': false,
'css3': true,
'sectionsColor': ['#254875', '#00FF00', '#254587', '#695684'],
anchors: ['page1', 'page2', 'page3', 'page4'],
'navigation': true,
'navigationPosition': 'right',
'navigationTooltips': ['fullPage.js', 'Powerful', 'Amazing', 'Simple']
})
})

经测试,最好至少有 anchors 这个参数,否则在火狐浏览器中,第一次滚动会直接滚到底部。

点击这里查看上面代码的示例:http://www.uedsc.com/wp-content/uploads/2015/02/fullpage-demo/

配置

1、选项

选项 类型 默认值 说明
verticalCentered 字符串 true 内容是否垂直居中
resize 布尔值 false 字体是否随着窗口缩放而缩放
slidesColor 函数 设置背景颜色
anchors 数组 定义锚链接
scrollingSpeed 整数 700 滚动速度,单位为毫秒
easing 字符串 easeInQuart 滚动动画方式
menu 布尔值 false 绑定菜单,设定的相关属性与 anchors 的值对应后,菜单可以控制滚动
navigation 布尔值 false 是否显示项目导航
navigationPosition 字符串 right 项目导航的位置,可选 left 或 right
navigationColor 字符串 #000 项目导航的颜色
navigationTooltips 数组 项目导航的 tip
slidesNavigation 布尔值 false 是否显示左右滑块的项目导航
slidesNavPosition 字符串 bottom 左右滑块的项目导航的位置,可选 top 或 bottom
controlArrowColor 字符串 #fff 左右滑块的箭头的背景颜色
loopBottom 布尔值 false 滚动到最底部后是否滚回顶部
loopTop 布尔值 false 滚动到最顶部后是否滚底部
loopHorizontal 布尔值 true 左右滑块是否循环滑动
autoScrolling 布尔值 true 是否使用插件的滚动方式,如果选择 false,则会出现浏览器自带的滚动条
scrollOverflow 布尔值 false 内容超过满屏后是否显示滚动条
css3 布尔值 false 是否使用 CSS3 transforms 滚动
paddingTop 字符串 0 与顶部的距离
paddingBottom 字符串 0 与底部距离
fixedElements 字符串
normalScrollElements
keyboardScrolling 布尔值 true 是否使用键盘方向键导航
touchSensitivity 整数 5
continuousVertical 布尔值 false 是否循环滚动,与 loopTop 及 loopBottom 不兼容
animateAnchor 布尔值 true
normalScrollElementTouchThreshold 整数 5

2、方法

名称 说明
moveSectionUp() 向上滚动
moveSectionDown() 向下滚动
moveTo(section, slide) 滚动到
moveSlideRight() slide 向右滚动
moveSlideLeft() slide 向左滚动
setAutoScrolling() 设置页面滚动方式,设置为 true 时自动滚动
setAllowScrolling() 添加或删除鼠标滚轮/触控板控制
setKeyboardScrolling() 添加或删除键盘方向键控制
setScrollingSpeed() 定义以毫秒为单位的滚动速度

3、回调函数

名称 说明
afterLoad 滚动到某一屏后的回调函数,接收 anchorLink 和 index 两个参数,anchorLink 是锚链接的名称,index 是序号,从1开始计算
onLeave 滚动前的回调函数,接收 index、nextIndex 和 direction 3个参数:
index 是离开的“页面”的序号,从1开始计算;
nextIndex 是滚动到的“页面”的序号,从1开始计算;
direction 判断往上滚动还是往下滚动,值是 up 或 down。
afterRender 页面结构生成后的回调函数,或者说页面初始化完成后的回调函数
afterSlideLoad 滚动到某一水平滑块后的回调函数,与 afterLoad 类似,接收 anchorLink、index、slideIndex、direction 4个参数
onSlideLeave 某一水平滑块滚动前的回调函数,与 onLeave 类似,接收 anchorLink、index、slideIndex、direction 4个参数

如何获取

下载地址
fullPage.js GitHub 地址下载地址
专注于移动端的fullPage.js

坚持原创技术分享,您的支持将鼓励我继续创作!