帝王谷资源网 Design By www.wdxyy.com
复制代码 代码如下:
#frame
{
position: relative;
width: 700px;
height: 400px;
overflow: hidden;
z-index: 0;
}
#frame img
{
width: 700px;
height: 400px;
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
#frame img.visible
{
z-index: 2;
}
#frame a
{
display: block;
width: 50%;
height: 100%;
position: absolute;
top: 0;
z-index: 10;
color: transparent;
background-image: url(transparent.gif);
filter: alpha(opacity = 0);
text-align: center;
text-decoration: none;
font: 90px "Palatino Linotype" , "Book Antiqua" , Palatino, serif;
line-height: 400%;
}
#frame a:hover
{
color: #fff;
text-shadow: 0 0 5px #000;
filter: alpha(opacity = 100);
filter: Shadow(Color=#000, Direction=0);
}
#frame a:focus
{
outline: none;
}
#prev
{
left: 0;
}
#next
{
right: 0;
}
#overlay
{
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 3;
}
#overlay div
{
position: absolute;
}
接下来介绍jquery.tranzify.js插件如何制作,该部分以讲解为主,插件的详细代码和如何使用,还是参照demo。
第一步是搭建插件的骨架:
复制代码 代码如下:
(function ($) {
$.tranzify = {
defaults: { //默认配置
transitionWidth: 40, //遮罩层每一小片段的宽度
transitionHeight: '100%', //遮罩层每一小片段高度
containerID: 'overlay', //遮罩层id
transitionType: 'venetian',//默认遮罩层动画效果
prevID: 'prev',//上一条导航ID
nextID: 'next',//下一条导航ID
visibleClass: 'visible' //可见性class
},
//插件初始化操作
createUI: function (config) {
},
//创建遮罩层
createOverlay: function (config) {
},
//运行动画效果
runTransition: function (config) {
}
};
$.fn.extend({
//创建插件函数
tranzify: function (options) {return this;
}
});
})(jQuery);
基本骨架有了,我们先来实现插件函数tranzify的实现。代码还是很简单的,就是获取当前的dom对象,对其创建相关html元素和相应事件,最后把this返回回去,实现链式模式,代码如下:
复制代码 代码如下:
//创建插件函数
tranzify: function (options) {
//扩展配置
var config = $.extend($.tranzify.defaults, options);
//获取当前dom对象,传给config.selector
config.selector = "#" + this.attr('id');
//计算出我们需要创建的遮罩层片段数
config.multi = parseInt(this.width()) / config.transitionWidth;
//创建插件
$.tranzify.createUI(config);
//返回对象本身,实现链式效果
return this;
}
接下来我们介绍createUI函数。首先获取图片总数:
复制代码 代码如下:
var imgLength = $(config.selector).find('img').length,
接下来定义‘上一条'和‘下一条'导航,并添加到selector对象上。
复制代码 代码如下:
prevA = $('<a></a>', {
id: config.prevID,
href: '#',
html: '«',
click: function (e) {
e.preventDefault();
//隐藏导航
$(config.selector).find('a').css('display', 'none');
//创建遮罩
$.tranzify.createOverlay(config);
//获取当前显示状态的图片
var currImg = $('.' + config.visibleClass, $(config.selector));
//当前图片不是第一张图片
if (currImg.prev().filter('img').length > 0) {
//将上一张图片设置为可显示状态
currImg.removeClass(config.visibleClass).prev().addClass(config.visibleClass);
} else {
//设置最后一张图片为可显示状态
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(imgLength - 1).addClass(config.visibleClass);
}
//运行遮罩效果
$.tranzify.runTransition(config);
}
}).appendTo(config.selector),
nextA = $('<a></a>', {
id: config.nextID,
href: '#',
html: '»',
click: function (e) {
e.preventDefault();
//隐藏导航
$(config.selector).find('a').css('display', 'none');
//创建遮罩
$.tranzify.createOverlay(config);
//获取当前显示状态的图片
var currImg = $('.' + config.visibleClass, $(config.selector));
//当前图片不是最后一张图片
if (currImg.next().filter('img').length > 0) {
//将下一张图片设置为可显示状态
currImg.removeClass(config.visibleClass).next().addClass(config.visibleClass);
} else {
//设置第一张图片为可显示状态
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(0).addClass(config.visibleClass);
}
//运行遮罩效果
$.tranzify.runTransition(config);
}
}).appendTo(config.selector);
最后别忘记把第一张图片设置为显示状态。
复制代码 代码如下:
$(config.selector).find('img').eq(0).addClass(config.visibleClass);
下面介绍创建遮罩层的代码。主要思路是:创建一组div,div的背景就是当前显示的图片,通过设置各个div css的left值,背景的backgroundPosition值,使这组div组成一个完整的图片效果。还是看代码吧,一看就一目了然了。
复制代码 代码如下:
//div left的偏移量
var posLeftMarker = 0,
//div 背景position的偏移量
bgHorizMarker = 0,
//遮罩层总的包装对象
overlay = $('<div></div>', {
id: config.containerID
});
//循环,确定需要创造的片段数
for (var i = 0; i < config.multi; i++) {
//创造片段,每个片段只包含当前显示图片的一部分图片
$('<div></div>', {
//设置宽度
width: config.transitionWidth,
//设置高度
height: config.transitionHeight,
css: {
//设置背景图片,来源就是当前处于显示状态的图片
backgroundImage: 'url(' + $('.' + config.visibleClass, $(config.selector)).attr('src') + ')',
//设置背景图片大小,让他们和外部容器高度、宽度一致。
//这样无论你图片的大小,都会和容易大小匹配
backgroundSize: $(config.selector).width() + 'px ' + $(config.selector).height() + 'px',
//设置背景偏移量
backgroundPosition: bgHorizMarker + 'px 0',
//设置left值
left: posLeftMarker,
top: 0
}
}).appendTo(overlay);//添加到遮罩层容器
//重新计算偏移量
bgHorizMarker -= config.transitionWidth;
posLeftMarker += config.transitionWidth;
}
//遮罩层容器添加到页面
overlay.insertBefore('#' + config.prevID);
ok, 只剩运行遮罩层的代码了。这段代码也很简单,就是获取遮罩层容易下面的各个div,对他们添加动画效果,逐个让他们的高度或者宽度变为0,等整个动画结束后,移出遮罩层容器。
复制代码 代码如下:
//获取遮罩层容器
var transOverlay = $('#' + config.containerID),
//获取遮罩层容器下各div
transEls = transOverlay.children(),
len = transEls.length - 1;
//根据配置运行不懂得动画效果
switch (config.transitionType) {
case 'venetian':
transEls.each(function (i) {
transEls.eq(i).animate({
width: 0
}, 'slow', function () {
if (i === len) {
transOverlay.remove();
$(config.selector).find('a').css('display', 'block');
}
});
});
break;
case 'strip':
var counter = 0;
function strip() {
transEls.eq(counter).animate({
height: 0
}, 150, function () {
if (counter === len) {
transOverlay.remove();
$(config.selector).find("a").css("display", "block");
} else {
counter++;
strip();
}
});
}
strip();
break;
}
好了,内容讲完了,把代码拼接起来就可以运行最终效果了。希望这篇文章对你有帮助。
demo下载地址:jQuery.animation.tranzify
#frame
{
position: relative;
width: 700px;
height: 400px;
overflow: hidden;
z-index: 0;
}
#frame img
{
width: 700px;
height: 400px;
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
#frame img.visible
{
z-index: 2;
}
#frame a
{
display: block;
width: 50%;
height: 100%;
position: absolute;
top: 0;
z-index: 10;
color: transparent;
background-image: url(transparent.gif);
filter: alpha(opacity = 0);
text-align: center;
text-decoration: none;
font: 90px "Palatino Linotype" , "Book Antiqua" , Palatino, serif;
line-height: 400%;
}
#frame a:hover
{
color: #fff;
text-shadow: 0 0 5px #000;
filter: alpha(opacity = 100);
filter: Shadow(Color=#000, Direction=0);
}
#frame a:focus
{
outline: none;
}
#prev
{
left: 0;
}
#next
{
right: 0;
}
#overlay
{
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 3;
}
#overlay div
{
position: absolute;
}
接下来介绍jquery.tranzify.js插件如何制作,该部分以讲解为主,插件的详细代码和如何使用,还是参照demo。
第一步是搭建插件的骨架:
复制代码 代码如下:
(function ($) {
$.tranzify = {
defaults: { //默认配置
transitionWidth: 40, //遮罩层每一小片段的宽度
transitionHeight: '100%', //遮罩层每一小片段高度
containerID: 'overlay', //遮罩层id
transitionType: 'venetian',//默认遮罩层动画效果
prevID: 'prev',//上一条导航ID
nextID: 'next',//下一条导航ID
visibleClass: 'visible' //可见性class
},
//插件初始化操作
createUI: function (config) {
},
//创建遮罩层
createOverlay: function (config) {
},
//运行动画效果
runTransition: function (config) {
}
};
$.fn.extend({
//创建插件函数
tranzify: function (options) {return this;
}
});
})(jQuery);
基本骨架有了,我们先来实现插件函数tranzify的实现。代码还是很简单的,就是获取当前的dom对象,对其创建相关html元素和相应事件,最后把this返回回去,实现链式模式,代码如下:
复制代码 代码如下:
//创建插件函数
tranzify: function (options) {
//扩展配置
var config = $.extend($.tranzify.defaults, options);
//获取当前dom对象,传给config.selector
config.selector = "#" + this.attr('id');
//计算出我们需要创建的遮罩层片段数
config.multi = parseInt(this.width()) / config.transitionWidth;
//创建插件
$.tranzify.createUI(config);
//返回对象本身,实现链式效果
return this;
}
接下来我们介绍createUI函数。首先获取图片总数:
复制代码 代码如下:
var imgLength = $(config.selector).find('img').length,
接下来定义‘上一条'和‘下一条'导航,并添加到selector对象上。
复制代码 代码如下:
prevA = $('<a></a>', {
id: config.prevID,
href: '#',
html: '«',
click: function (e) {
e.preventDefault();
//隐藏导航
$(config.selector).find('a').css('display', 'none');
//创建遮罩
$.tranzify.createOverlay(config);
//获取当前显示状态的图片
var currImg = $('.' + config.visibleClass, $(config.selector));
//当前图片不是第一张图片
if (currImg.prev().filter('img').length > 0) {
//将上一张图片设置为可显示状态
currImg.removeClass(config.visibleClass).prev().addClass(config.visibleClass);
} else {
//设置最后一张图片为可显示状态
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(imgLength - 1).addClass(config.visibleClass);
}
//运行遮罩效果
$.tranzify.runTransition(config);
}
}).appendTo(config.selector),
nextA = $('<a></a>', {
id: config.nextID,
href: '#',
html: '»',
click: function (e) {
e.preventDefault();
//隐藏导航
$(config.selector).find('a').css('display', 'none');
//创建遮罩
$.tranzify.createOverlay(config);
//获取当前显示状态的图片
var currImg = $('.' + config.visibleClass, $(config.selector));
//当前图片不是最后一张图片
if (currImg.next().filter('img').length > 0) {
//将下一张图片设置为可显示状态
currImg.removeClass(config.visibleClass).next().addClass(config.visibleClass);
} else {
//设置第一张图片为可显示状态
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(0).addClass(config.visibleClass);
}
//运行遮罩效果
$.tranzify.runTransition(config);
}
}).appendTo(config.selector);
最后别忘记把第一张图片设置为显示状态。
复制代码 代码如下:
$(config.selector).find('img').eq(0).addClass(config.visibleClass);
下面介绍创建遮罩层的代码。主要思路是:创建一组div,div的背景就是当前显示的图片,通过设置各个div css的left值,背景的backgroundPosition值,使这组div组成一个完整的图片效果。还是看代码吧,一看就一目了然了。
复制代码 代码如下:
//div left的偏移量
var posLeftMarker = 0,
//div 背景position的偏移量
bgHorizMarker = 0,
//遮罩层总的包装对象
overlay = $('<div></div>', {
id: config.containerID
});
//循环,确定需要创造的片段数
for (var i = 0; i < config.multi; i++) {
//创造片段,每个片段只包含当前显示图片的一部分图片
$('<div></div>', {
//设置宽度
width: config.transitionWidth,
//设置高度
height: config.transitionHeight,
css: {
//设置背景图片,来源就是当前处于显示状态的图片
backgroundImage: 'url(' + $('.' + config.visibleClass, $(config.selector)).attr('src') + ')',
//设置背景图片大小,让他们和外部容器高度、宽度一致。
//这样无论你图片的大小,都会和容易大小匹配
backgroundSize: $(config.selector).width() + 'px ' + $(config.selector).height() + 'px',
//设置背景偏移量
backgroundPosition: bgHorizMarker + 'px 0',
//设置left值
left: posLeftMarker,
top: 0
}
}).appendTo(overlay);//添加到遮罩层容器
//重新计算偏移量
bgHorizMarker -= config.transitionWidth;
posLeftMarker += config.transitionWidth;
}
//遮罩层容器添加到页面
overlay.insertBefore('#' + config.prevID);
ok, 只剩运行遮罩层的代码了。这段代码也很简单,就是获取遮罩层容易下面的各个div,对他们添加动画效果,逐个让他们的高度或者宽度变为0,等整个动画结束后,移出遮罩层容器。
复制代码 代码如下:
//获取遮罩层容器
var transOverlay = $('#' + config.containerID),
//获取遮罩层容器下各div
transEls = transOverlay.children(),
len = transEls.length - 1;
//根据配置运行不懂得动画效果
switch (config.transitionType) {
case 'venetian':
transEls.each(function (i) {
transEls.eq(i).animate({
width: 0
}, 'slow', function () {
if (i === len) {
transOverlay.remove();
$(config.selector).find('a').css('display', 'block');
}
});
});
break;
case 'strip':
var counter = 0;
function strip() {
transEls.eq(counter).animate({
height: 0
}, 150, function () {
if (counter === len) {
transOverlay.remove();
$(config.selector).find("a").css("display", "block");
} else {
counter++;
strip();
}
});
}
strip();
break;
}
好了,内容讲完了,把代码拼接起来就可以运行最终效果了。希望这篇文章对你有帮助。
demo下载地址:jQuery.animation.tranzify
标签:
遮罩效果,图片走廊
帝王谷资源网 Design By www.wdxyy.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
帝王谷资源网 Design By www.wdxyy.com
暂无评论...
更新日志
2024年10月30日
2024年10月30日
- 群星2013-青春缤纷辑压箱宝大公开3CD2[新加坡限量版][WAV整轨]
- 林育群.2013-BalladShow(日本版)【环球】【WAV+CUE】
- 陈加洛.1992-痛到感觉不到【宝丽金】【WAV+CUE】
- 群星.2023-宿命之敌电视剧原声带【韶愔音乐】【FLAC分轨】
- 東京事変-大発見[FLAC+CUE]
- 椎名林檎-三文ゴシップ[FLAC+CUE]
- 2024年08月04日
- 裘德《裘德「最后的水族馆」演唱会LIVE》[320K/MP3][228.89MB]
- 裘德《裘德「最后的水族馆」演唱会LIVE》[24bit 48kHz][FLAC/分轨][2.08G]
- 基因三重奏《如果你什么都不说 音乐会现场录音》[320K/MP3][145.37MB]
- 孟庭苇.1996-月亮说话(2020环球24KGOLD限量版)【上华】【WAV+CUE】
- 群星.1997-新艺宝优质音响系列·国语精选监听版【新艺宝】【WAV+CUE】
- 阿桑.2005-寂寞在唱歌(星外星引进版)【华研国际】【WAV+CUE】
- 基因三重奏《如果你什么都不说 音乐会现场录音》[FLAC/分轨][287.43MB]
- 蔡题谦《我爱你,却依然要看你走》[320K/MP3][88.65MB]