【jQuery学习日记】jQuery实现滚动动画
需要实现的效果
样式分析:
2个主要部分,头部的标题和导航部分,和主要的功能实现区域;
1.头部
<div id="header">
<h1>动漫视频</h1>
<span><</span>
<span>></span>
</div>
<div id="tips">
<span class="on"> </span>
<span> </span>
<span> </span>
</div>
2.功能区域
<div id="viewBox">
<ul id="contentBox">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
</ul>
</div>
添加样式
<style>
#header{
display: inline-block;
}
#header h1{
display: inline-block;
font-size: 32px;
padding-left: 20px;
}
#header span{
width: 30px;
height: 30px;
display: inline-block;
font-size: 23px;
cursor:pointer;
border: 1px solid #eee;
border-radius: 3px;
text-align: center;
}
#header span:hover{
background: #333;
color: #fff;
}
#viewBox{
width: 960px;
height: 140px;
font-size: 0;
overflow: hidden;
border: 1px solid #333;
}
#contentBox{
width: 2880px;
position: relative;
}
#contentBox>li{
width: 200px;
height: 100px;
background: pink;
display: inline-block;
font-size: 12px;
margin: 20px;
}
#tips{
display: inline-block;
}
#tips span{
display: inline-block;
width: 20px;
height: 20px;
border-radius: 20px;
text-align: center;
line-height: 20px;
border: 1px solid #eee;
cursor: pointer;
}
#tips span:hover{
background: #999;
color: white;
}
#tips span.on{
background: black;
color: white;
}
</style>
此处需要注意,因为需要给 contentBox 添加 animate left 方法,所以需要给它的 position : related 才能使 animate left 生效
功能分析:
1.下一页
2.当下一页滚动到最后一页面,再点击下一页的时候,需要返回到第一页
3.上一页
4.当上一页滚动到第一页,再点击上一页的时候,需要前进到最后一页
5.当点击圆圈的时候,前进到任意一页
功能实现
首先,我们在接下来的功能中常用的一些元素,先赋值给变量
$vBox = $('#viewBox'); /* 可以见到的展示区域 */
$cBox = $('#contentBox'); /* 内容区域 */
vWidth = $vBox.width(); /* 可见区域的宽度 */
cWidth = $cBox.width(); /* 内容区域的宽度 */
然后,我们有5个小功能,下一页(goNext),回到顶部(goTop),上一页(goBack),回到底部(goBotoom),到任意页(goPage)
1.下一页(goNext)
var vLeft=$cBox.position().left; //内容区域距左侧的距离
$cBox.animate({left: '-='+vWidth+'px'});
2.回到顶部(goTop)
var vLeft=$cBox.position().left;
$cBox.animate({left: 0});
3.上一页(goBack)
var vLeft=$cBox.position().left; //内容区域距左侧的距离
$cBox.animate({left: '+='+vWidth+'px'});
4.回到底部(goBotoom)
var vLeft=$cBox.position().left; //内容区域距左侧的距离
$cBox.animate({left: -cWidth+vWidth});
5.到任意页(goPage)
var vLeft=$cBox.position().left; //内容区域距左侧的距离
$cBox.animate({left: -vWidth*page}); //传递一个page参数用来知道需要跳转到第几页
当每个小功能实现后,组合下功能,并绑定功能
var $vBox;
var $cBox;
var vWidth;
var cWidth;
$(function () {
$vBox = $('#viewBox');
$cBox = $('#contentBox');
vWidth = $vBox.width();
cWidth = $cBox.width();
$('#header span:last-child').click(function () {
go('next');
})
$('#header span:nth-child(2)').click(function () {
go('back');
})
$('#tips>span').click(function () {
var $ThisS=$(this);
$ThisS.addClass('on').siblings().removeClass();
go($ThisS.index());
})
})
function go(page) {
var vLeft=$cBox.position().left;
if (!$cBox.is(':animated')){
switch (page){
case 'next':
if( vLeft > -cWidth-vLeft ){
$cBox.animate({left: '-='+vWidth+'px'});
}else{
go('top');
}
break;
case 'back':
if( vLeft < 0){
$cBox.animate({left: '+='+vWidth+'px'});
}else{
go('bottom');
}
break;
case 'top':
$cBox.animate({left: 0});
break;
case 'bottom':
$cBox.animate({left: -cWidth+vWidth});
break;
default:
$cBox.animate({left: -vWidth*page});
break;
}
}
}
下面是全部代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>第一个页面</title>
<!--<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">-->
<script src="common/js/jquery-2.1.1.min.js"></script>
<!--<script src="common/js/screenAdaptation.js"></script>-->
<script src="js/download.js"></script>
<script src="js/stopXBack.js"></script>
<link rel="stylesheet" href="common/css/common-style.css?v=<%=Math.random()*100 %>">
<link rel="stylesheet" href="css/download.css?v=<%=Math.random()*100 %>">
<style>
#header{
display: inline-block;
}
#header h1{
display: inline-block;
font-size: 32px;
padding-left: 20px;
}
#header span{
width: 30px;
height: 30px;
display: inline-block;
font-size: 23px;
cursor:pointer;
border: 1px solid #eee;
border-radius: 3px;
text-align: center;
}
#header span:hover{
background: #333;
color: #fff;
}
#viewBox{
width: 960px;
height: 140px;
font-size: 0;
overflow: hidden;
border: 1px solid #333;
}
#contentBox{
width: 2880px;
position: relative;
}
#contentBox>li{
width: 200px;
height: 100px;
background: pink;
display: inline-block;
font-size: 12px;
margin: 20px;
}
#tips{
display: inline-block;
}
#tips span{
display: inline-block;
width: 20px;
height: 20px;
border-radius: 20px;
text-align: center;
line-height: 20px;
border: 1px solid #eee;
cursor: pointer;
}
#tips span:hover{
background: #999;
color: white;
}
#tips span.on{
background: black;
color: white;
}
</style>
<script>
var $vBox;
var $cBox;
var vWidth;
var cWidth;
$(function () {
$vBox = $('#viewBox');
$cBox = $('#contentBox');
vWidth = $vBox.width();
cWidth = $cBox.width();
$('#header span:last-child').click(function () {
go('next');
})
$('#header span:nth-child(2)').click(function () {
go('back');
})
$('#tips>span').click(function () {
var $ThisS=$(this);
$ThisS.addClass('on').siblings().removeClass();
go($ThisS.index());
})
})
function go(page) {
var vLeft=$cBox.position().left;
if (!$cBox.is(':animated')){
switch (page){
case 'next':
if( vLeft > -cWidth-vLeft ){
$cBox.animate({left: '-='+vWidth+'px'});
}else{
go('top');
}
break;
case 'back':
if( vLeft < 0){
$cBox.animate({left: '+='+vWidth+'px'});
}else{
go('bottom');
}
break;
case 'top':
$cBox.animate({left: 0});
break;
case 'bottom':
$cBox.animate({left: -cWidth+vWidth});
break;
default:
$cBox.animate({left: -vWidth*page});
break;
}
}
}
</script>
</head>
<body>
<div id="header">
<h1>动漫视频</h1>
<span><</span>
<span>></span>
</div>
<div id="tips">
<span class="on"> </span>
<span> </span>
<span> </span>
</div>
<div id="viewBox">
<ul id="contentBox">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
</ul>
</div>
</body>
</html>【jQuery学习日记】jQuery实现滚动动画的更多相关文章
- jquery学习笔记---jquery插件开发
http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html jquery插件开发:http://www.cnblogs.com/damonla ...
- (高级篇)jQuery学习之jQuery Ajax用法详解
jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍. 我们先从最简单的方法看起 ...
- JQuery学习笔记---jquery对象和DOM对象的关系
1.DOM(Document Object Model,文档对象模型).DOM树 { html (head&&body), head(meta && title) ...
- jQuery学习之jQuery Ajax用法详解
jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍. 我们先从最简单的方法看起 ...
- jquery学习笔记----jquery相关的文档
http://tool.oschina.net/apidocs/apidoc?api=jquery http://www.w3school.com.cn/jquery/jquery_ref_event ...
- jQuery学习之jQuery Ajax用法详解(转)
[导读] jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍.我们先从最简单的 ...
- jQuery学习之jQuery Ajax用法详解(转)
jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍. 我们先从最简单的方法看起 ...
- jquery 学习日记之选择器
看完Jquery选择器的教程视频后,对jquery的选择器有一定的认识和了解,现整理一下知识: 一.jquery基本选择器,这类比较简单,一笔带过. #id 选择器,是选择 匹配id值中的第一个元素 ...
- 【转载】【JQuery学习】jQuery插件开发
JQuery做得最好的就是他的闭包和扩展性.超级简单的扩展方法,让更多的人可以轻松的开发定制自己的jQuery插件.下面的东西是转载过来当做学习材料的.虽然貌似有点古老,但是jQuery的变更一直都不 ...
随机推荐
- PictureService
package me.zhengjie.tools.service; import me.zhengjie.tools.domain.Picture; import org.springframewo ...
- linux 上安装 keepalive
1.keepalive 单机安装 1.1 安装环境 yum -y install kernel-devel* openssl-* popt-devel lrzsz openssh-clients li ...
- 《C 程序设计语言》练习1-3
#include<stdio.h> /*当fahr=0,20,...,300时,打印华氏温度与摄氏温度对照表; 浮点数版本*/ main () { float fahr,celsius; ...
- Ubuntu14 定时查询任务进程存活状态以及定时杀死进程和重启
#!/bin/bash while true do pkill -f "savePic.py" python ./savePic.py & #fi sleep 3600 d ...
- Android下的鉴权实现方案
软件原理 不赘述,参考: 软件License认证方案的设计思路 License文件离线鉴权 机械指纹,不可逆的加密算法,如MD5 功能鉴权,可逆的不对称加密算法,服务端公钥加密,app端私钥解密,如R ...
- Visual Studio 2017部署方法
1.打开官网下载链接 https://www.visualstudio.com/zh-hans/downloads/ 2.选择适合的版本,选择下载,进入下载界面 如果无反应,点击请单击此处重试,开始下 ...
- Python-SSH批量登陆并执行命令
Python-SSH批量登陆并执行命令 #!/usr/bin/env python #-*- coding:utf-8 -*- import paramiko from time import cti ...
- JVM组成与作用
class loader 类加载器:加载类文件到内存.Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine 负责的.exectio ...
- 详解js面向对象编程
转自:http://segmentfault.com/a/1190000000713346 基本概念 ECMA关于对象的定义是:”无序属性的集合,其属性可以包含基本值.对象或者函数.“对象的每个属性或 ...
- JavaScript学习总结(八)正则表达式
转自:http://segmentfault.com/a/1190000000699097 基本概念 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”) ...