相思资源网 Design By www.200059.com
效果预览图片:
大家可以下载demo看完整效果,下面介绍制作过程。
1.首先创建一个html页面,html结构如下:
复制代码 代码如下:
<div id="slider">
<div id="viewer">
<img id="image1" src="/UploadFiles/2021-04-02/amstrad.jpg"><img id="image2" src="img/atari.jpg"><img id="image3" src="/UploadFiles/2021-04-02/commodore16.jpg"><img id="image4" src="img/commodore128.jpg"><img id="image5" src="/UploadFiles/2021-04-02/spectrum.jpg"></div>
<ul id="ui">
<li class="hidden" id="prev"><a href="" title="Previous">«</a></li>
<li><a href="#image1" title="Image 1" class="active">Image 1</a></li>
<li><a href="#image2" title="Image 2">Image 2</a></li>
<li><a href="#image3" title="Image 3">Image 3</a></li>
<li><a href="#image4" title="Image 4">Image 4</a></li>
<li><a href="#image5" title="Image 5">Image 5</a></li>
<li class="hidden" id="next"><a href="" title="Next">»</a></li>
</ul>
</div>
大家一看就明白,viewer包含了几张图片,ul对象里面包含了‘上一条'、‘下一条'和各个图片对应的导航。
2.接下来需要为这些html元素设置css样式,css我就不多说了,就是给viewer、图片等元素加样式,viewer同时只能显示一张图片:
复制代码 代码如下:
#slider
{
width: 500px;
position: relative;
}
#viewer
{
width: 400px;
height: 300px;
margin: auto;
position: relative;
overflow: hidden;
}
#slider ul
{
width: 350px;
margin: 0 auto;
padding: 0;
list-style-type: none;
}
#slider ul:after
{
content: ".";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
#slider li
{
margin-right: 10px;
float: left;
}
#prev, #next
{
position: absolute;
top: 175px;
}
#prev
{
left: 20px;
}
#next
{
position: absolute;
right: 10px;
}
.hidden
{
display: none;
}
#slide
{
width: 2000px;
height: 300px;
position: absolute;
top: 0;
left: 0;
}
#slide img
{
float: left;
width: 400px;
height: 300px;
}
#title
{
margin: 0;
text-align: center;
}
3.为页面添加jquery和jquery.easing.1.3.js的引用。然后就是我们这篇的重头了,为导航编写相应的js事件。
首先我们需要创建一个新的div来包装5张图片。
复制代码 代码如下:
$('#viewer').wrapInner('<div id="slide"></div>');
接下来我们使用jquery的selector找到slider,slide,prev,next等对象,把他们存到相应的js变量中。
复制代码 代码如下:
var container = $('#slider'),
prev = container.find('#prev'),
prevChild = prev.find('a'),
next = container.find('#next').removeClass('hidden'),
nextChild = next.find('a'),
slide = container.find('#slide')
创建两个新的js变量,key保存当前活动图片id,details保存所有图片各自的position和title信息。
复制代码 代码如下:
key = "image1",
details = {
image1: {
position: 0,
title: slide.children().eq(0).attr('alt')
},
image2: {
position: -400,
title: slide.children().eq(1).attr('alt')
},
image3: {
position: -800,
title: slide.children().eq(2).attr('alt')
},
image4: {
position: -1200,
title: slide.children().eq(3).attr('alt')
},
image5: {
position: -1600,
title: slide.children().eq(4).attr('alt')
}
};
为了显示图片标题,我们需要添加一个h2标题到页面。
复制代码 代码如下:
$('<h2>', {
id: 'title',
text: details[key].title
}).prependTo('#slider');
上述工作完成后,就可以开始为a标签添加click事件了,这里的a标签分两种,一种是‘上一条'和‘下一条',另外一种是各图片对应的导航。我们需要分别为他们添加相应的click事件。但是他们都会使用到一个相同的回调函数,我们先完成回调函数的编写。代码思路我就直接以注释的方式完成。
复制代码 代码如下:
function postAnim(dir) {
//首先我们获取到当前活动图片的id,只包含数字部分
var keyMath = parseInt(key.match(/\d+$/));
//slide的left小于0,也就是说当前活动图片不是图片1,‘上一条'导航显示;否则‘上一条'导航消失
(parseInt(slide.css('left')) < 0) ? prev.show() : prev.hide();
//slide的left等于-1600,也就是说当前活动图片是第五章,‘下一条'导航消失,否则‘下一条'导航显示
(parseInt(slide.css('left')) === -1600) ? next.hide() : next.show();
//if条件语句当使用‘上一条'和‘下一条'导航时才有意义。实现的功能就是点‘上一条'是key减一,点‘下一条'key加1
if (dir) {
var titleKey = (dir === 'back') ? keyMath - 1 : keyMath + 1;
key = 'image' + titleKey;
}
//重新设置h2标题
container.find('#title').text(details[key].title);
//重新设置当前哪个图片为活动状态
container.find('.active').removeClass('active');
container.find('a[href=#' + key + ']').addClass('active');
}
接下来我们完成‘上一条'和‘下一条'导航的功能。
复制代码 代码如下:
nextChild.add(prevChild).click(function (e) {
//阻止默认事件,否则动画效果就没有了
e.preventDefault();
var arrow = $(this).parent();
//当前slide没有动画时,我们才添加新的动画效果
if (!slide.is(':animated')) {
slide.animate({
left: (arrow.attr('id') === 'prev') ? '+=400' : '-=400'
}, 'slow', 'easeOutBack', function () {
(arrow.attr("id") === "prev") ? postAnim("back") : postAnim("forward");
});
}
});
最后是图片对应的各自导航的功能实现。
复制代码 代码如下:
$('#ui li a').not(prevChild).not(nextChild).click(function (e) {
//阻止默认事件
e.preventDefault();
//获取当前活动图片id
key = $(this).attr('href').split('#')[1];
//设置动画效果
slide.animate({
left: details[key].position
}, 'slow', 'easeOutBack', postAnim);
});
本课的内容完毕了,大家可以下载demo,查看功能具体是如下实现的。
demo下载地址:jQuery.animation.position
大家可以下载demo看完整效果,下面介绍制作过程。
1.首先创建一个html页面,html结构如下:
复制代码 代码如下:
<div id="slider">
<div id="viewer">
<img id="image1" src="/UploadFiles/2021-04-02/amstrad.jpg"><img id="image2" src="img/atari.jpg"><img id="image3" src="/UploadFiles/2021-04-02/commodore16.jpg"><img id="image4" src="img/commodore128.jpg"><img id="image5" src="/UploadFiles/2021-04-02/spectrum.jpg"></div>
<ul id="ui">
<li class="hidden" id="prev"><a href="" title="Previous">«</a></li>
<li><a href="#image1" title="Image 1" class="active">Image 1</a></li>
<li><a href="#image2" title="Image 2">Image 2</a></li>
<li><a href="#image3" title="Image 3">Image 3</a></li>
<li><a href="#image4" title="Image 4">Image 4</a></li>
<li><a href="#image5" title="Image 5">Image 5</a></li>
<li class="hidden" id="next"><a href="" title="Next">»</a></li>
</ul>
</div>
大家一看就明白,viewer包含了几张图片,ul对象里面包含了‘上一条'、‘下一条'和各个图片对应的导航。
2.接下来需要为这些html元素设置css样式,css我就不多说了,就是给viewer、图片等元素加样式,viewer同时只能显示一张图片:
复制代码 代码如下:
#slider
{
width: 500px;
position: relative;
}
#viewer
{
width: 400px;
height: 300px;
margin: auto;
position: relative;
overflow: hidden;
}
#slider ul
{
width: 350px;
margin: 0 auto;
padding: 0;
list-style-type: none;
}
#slider ul:after
{
content: ".";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
#slider li
{
margin-right: 10px;
float: left;
}
#prev, #next
{
position: absolute;
top: 175px;
}
#prev
{
left: 20px;
}
#next
{
position: absolute;
right: 10px;
}
.hidden
{
display: none;
}
#slide
{
width: 2000px;
height: 300px;
position: absolute;
top: 0;
left: 0;
}
#slide img
{
float: left;
width: 400px;
height: 300px;
}
#title
{
margin: 0;
text-align: center;
}
3.为页面添加jquery和jquery.easing.1.3.js的引用。然后就是我们这篇的重头了,为导航编写相应的js事件。
首先我们需要创建一个新的div来包装5张图片。
复制代码 代码如下:
$('#viewer').wrapInner('<div id="slide"></div>');
接下来我们使用jquery的selector找到slider,slide,prev,next等对象,把他们存到相应的js变量中。
复制代码 代码如下:
var container = $('#slider'),
prev = container.find('#prev'),
prevChild = prev.find('a'),
next = container.find('#next').removeClass('hidden'),
nextChild = next.find('a'),
slide = container.find('#slide')
创建两个新的js变量,key保存当前活动图片id,details保存所有图片各自的position和title信息。
复制代码 代码如下:
key = "image1",
details = {
image1: {
position: 0,
title: slide.children().eq(0).attr('alt')
},
image2: {
position: -400,
title: slide.children().eq(1).attr('alt')
},
image3: {
position: -800,
title: slide.children().eq(2).attr('alt')
},
image4: {
position: -1200,
title: slide.children().eq(3).attr('alt')
},
image5: {
position: -1600,
title: slide.children().eq(4).attr('alt')
}
};
为了显示图片标题,我们需要添加一个h2标题到页面。
复制代码 代码如下:
$('<h2>', {
id: 'title',
text: details[key].title
}).prependTo('#slider');
上述工作完成后,就可以开始为a标签添加click事件了,这里的a标签分两种,一种是‘上一条'和‘下一条',另外一种是各图片对应的导航。我们需要分别为他们添加相应的click事件。但是他们都会使用到一个相同的回调函数,我们先完成回调函数的编写。代码思路我就直接以注释的方式完成。
复制代码 代码如下:
function postAnim(dir) {
//首先我们获取到当前活动图片的id,只包含数字部分
var keyMath = parseInt(key.match(/\d+$/));
//slide的left小于0,也就是说当前活动图片不是图片1,‘上一条'导航显示;否则‘上一条'导航消失
(parseInt(slide.css('left')) < 0) ? prev.show() : prev.hide();
//slide的left等于-1600,也就是说当前活动图片是第五章,‘下一条'导航消失,否则‘下一条'导航显示
(parseInt(slide.css('left')) === -1600) ? next.hide() : next.show();
//if条件语句当使用‘上一条'和‘下一条'导航时才有意义。实现的功能就是点‘上一条'是key减一,点‘下一条'key加1
if (dir) {
var titleKey = (dir === 'back') ? keyMath - 1 : keyMath + 1;
key = 'image' + titleKey;
}
//重新设置h2标题
container.find('#title').text(details[key].title);
//重新设置当前哪个图片为活动状态
container.find('.active').removeClass('active');
container.find('a[href=#' + key + ']').addClass('active');
}
接下来我们完成‘上一条'和‘下一条'导航的功能。
复制代码 代码如下:
nextChild.add(prevChild).click(function (e) {
//阻止默认事件,否则动画效果就没有了
e.preventDefault();
var arrow = $(this).parent();
//当前slide没有动画时,我们才添加新的动画效果
if (!slide.is(':animated')) {
slide.animate({
left: (arrow.attr('id') === 'prev') ? '+=400' : '-=400'
}, 'slow', 'easeOutBack', function () {
(arrow.attr("id") === "prev") ? postAnim("back") : postAnim("forward");
});
}
});
最后是图片对应的各自导航的功能实现。
复制代码 代码如下:
$('#ui li a').not(prevChild).not(nextChild).click(function (e) {
//阻止默认事件
e.preventDefault();
//获取当前活动图片id
key = $(this).attr('href').split('#')[1];
//设置动画效果
slide.animate({
left: details[key].position
}, 'slow', 'easeOutBack', postAnim);
});
本课的内容完毕了,大家可以下载demo,查看功能具体是如下实现的。
demo下载地址:jQuery.animation.position
标签:
元素坐标
相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com
暂无jquery动画2.元素坐标动画效果(创建一个图片走廊)的评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?