本文以實例形式詳細(xì)講述了jQuery動畫特效的實現(xiàn)方法。分享給大家供大家參考之用。具體方法如下:
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、寬城網(wǎng)絡(luò)推廣、小程序設(shè)計、寬城網(wǎng)絡(luò)營銷、寬城企業(yè)策劃、寬城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供寬城建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
1.自制折疊內(nèi)容塊
內(nèi)容塊如下:
div
class="module"
div
class="caption"
span標(biāo)題/span
img
src="rollup.gif"
alt="rollup"
title="rolls
up
this
module"/
/div
div
class="body"
近日,《體壇周報》記者馬德興在接受天津體育頻道《體壇新視野》節(jié)目采訪時表示自己對恒大[微博]的情況比較擔(dān)憂,恒大統(tǒng)治力比上賽季下降了很多,恒大外援存在位置重疊的問題,客場不輸給西悉尼流浪者就是一個可以接受的結(jié)果。該節(jié)目稱恒大聯(lián)賽3連勝勝之不武,恒大的惹不起不過爾爾,恒大失去了對其它球隊壓倒性的優(yōu)勢,能力下降是恒大霸主地位有所動搖的根源所在。
/div
/div
給img元素綁定點擊事件。
$(function()
{
$('div.caption
img').click(function
()
{
//先找到img的父級元素,再找該父級元素的子元素
var
$body
=
$(this).closest('div.module').find('div.body');
if
($body.is(':hidden'))
{
$body.show();
}
else
{
$body.hide();
}
});
});
運行效果如下圖所示:
切換元素的顯示狀態(tài),還可以用toggle方法。
$(function()
{
$('div.caption
img').click(function
()
{
$(this).closest('div.module').find('div.body').toggle();
});
});
以上是沒有動畫效果的,有時候感覺會很唐突。實際上,show,hide,toggle方法都可以有動畫效果。比如:
$(function()
{
$('div.caption
img').click(function
()
{
$(this).closest('div.module').find('div.body').toggle('slow');
});
});
又比如:
$(function()
{
$('div.caption
img').click(function
()
{
$(this).closest('div.module').find('div.body').toggle('slow',
function()
{
$(this).closest('div.module').toggleClass('rolledup',
$(this).is(':hidden'))
});
});
});
2.使元素淡入淡出
fadeIn(speed,
callback)
fadeOut(speed,
callback)
fadeTo(speed,
opacity,
callback)
3.上下滑動元素
slideDown(speed,
callback)
slideUp(speed,
callback)
slideToggle(speed,
callback)
4.停止動畫
stop(clearQueue,
gotoEnd)
5.創(chuàng)建自定義動畫
animate(properties,
duration,
easing,
callback)
$('.classname').animate({opacity:'toggle'},'slow')
如果寫一個擴(kuò)展函數(shù)。
$.fn.fadeToggle
=
function(speed){
return
this.animate({opacity:'toggle'},'slow');
}
6.自定義縮放動畫
$('.classname').each(function(){
$(this).animate({
width:
$(this).width()
*
2,
height:
$(this).height()
*
2
});
});
7.自定義掉落動畫
$('.classname').each(function(){
$(this)
.css("position","relative")
.animate({
opacity:
0,
top:
$(window).height()
-
$(this).height()
-
$(this).position().top
},'slow',function(){
$(this).hide();
})
});
8.自定義消散動畫
$('.classname').each(function(){
var
position
=
$(this).position();
$(this)
.css({
position:
'absolute',
top:
position.top,
left:position.left
})
.animate({
opacity:
'hide',
width:
$(this).width()*5,
height:
$(this).height()*5
top:
position.top
-
($(this).height()
*
5
/
2),
left:
position.left
-
($(this).width()
*
5
/2)
},'normal');
});
9.隊列中的動畫
//動畫插入隊列
$('img').queue('chain',
function(){});
$('img').queue('chain',
function(){});
$('img').queue('chain',
function(){});
$('img').queue('chain',
function(){});
$('button').click(function(){
$('img').dequeue('chain');
//刪除隊列中的動畫
})
cleaeQueue(name)//刪除所有未執(zhí)行的隊列中的動畫
delay(duration,
name)//為隊列中所有未執(zhí)行的動畫添加延遲
相信本文所述對大家的jQuery程序設(shè)計有一定的借鑒價值。
[img]showImg函數(shù)里面$("#JS_imgWrap").attr("href".newhref)這錯了【attr("href".newhref)】,是逗號不是點,attr("href",newhref)
直接為大家介紹制作過程,希望大家可以喜歡。
HTML結(jié)構(gòu)
該頁面切換特效的HTML結(jié)構(gòu)使用一個main元素來作為頁面的包裹元素,div.cd-cover-layer用于制作頁面切換時的遮罩層,div.cd-loading-bar是進(jìn)行ajax加載時的loading進(jìn)度條。
main
div
class="cd-index
cd-main-content"
div
h1Page
Transition/h1
!--
your
content
here
--
/div
/div
/main
div
class="cd-cover-layer"/div
!--
this
is
the
cover
layer
--
div
class="cd-loading-bar"/div
!--
this
is
the
loading
bar
--
CSS樣式
該頁面切換特效中使用body::before和body::after偽元素在頁面切換過程中創(chuàng)建兩個遮罩層來遮住頁面內(nèi)容。它們的定位是固定定位,高度等于50vh,寬度為100%。默認(rèn)情況下,使用CSS
transform屬性將它們隱藏起來(translateY(-100%)/translateY(100%))。當(dāng)用戶切換頁面的時候,這些元素被移動回視口當(dāng)中(通過在body元素上添加.page-is-changing
class)。
下面的圖片演示了這個過程:
頁面切換特效
body::after,
body::before
{
/*
these
are
the
2
half
blocks
which
cover
the
content
once
the
animation
is
triggered
*/
height:
50vh;
width:
100%;
position:
fixed;
left:
0;
}
body::before
{
top:
0;
transform:
translateY(-100%);
}
body::after
{
bottom:
0;
transform:
translateY(100%);
}
body.page-is-changing::after,
body.page-is-changing::before
{
transform:
translateY(0);
}
頁面切換時,頁面內(nèi)容的淡入淡出效果是通過改變div.cd-cover-layer的透明度實現(xiàn)的。它覆蓋了.cd-main-content元素,并具有相同的背景色,然后在body被添加.page-is-changing
class的時候,將透明度從0修改為1。
Loading進(jìn)度條使用.cd-loading-bar::before偽元素來制作。默認(rèn)它被縮?。╯caleX(0))和transform-origin:
left
center。當(dāng)頁面切換開始時它被使用scaleX(1)放大會原來的尺寸。
.cd-loading-bar
{
/*
this
is
the
loading
bar
-
visible
while
switching
from
one
page
to
the
following
one
*/
position:
fixed;
height:
2px;
width:
90%;
}
.cd-loading-bar::before
{
/*
this
is
the
progress
bar
inside
the
loading
bar
*/
position:
absolute;
left:
0;
top:
0;
height:
100%;
width:
100%;
transform:
scaleX(0);
transform-origin:
left
center;
}
.page-is-changing
.cd-loading-bar::before
{
transform:
scaleX(1);
}
特效中平滑的過渡效果使用CSS
Transitions來實現(xiàn)。每一個動畫元素都被添加了不同的transition-delay,以實現(xiàn)不同的元素動畫順序。
JAVASCRIPT
該頁面切換特效中在鏈接上使用data-type="page-transition"屬性,用于觸發(fā)頁面切換事件。當(dāng)插件檢測到用戶點擊事件,changePage()方法將被執(zhí)行。
$('main').on('click',
'[data-type="page-transition"]',
function(event){
event.preventDefault();
//detect
which
page
has
been
selected
var
newPage
=
$(this).attr('href');
//if
the
page
is
not
animating
-
trigger
animation
if(
!isAnimating
)
changePage(newPage,
true);
});
這個方法會觸發(fā)頁面切換動畫,并通過loadNewContent()方法加載新內(nèi)容。
function
changePage(url,
bool)
{
isAnimating
=
true;
//
trigger
page
animation
$('body').addClass('page-is-changing');
//...
loadNewContent(url,
bool);
//...
}
當(dāng)新的內(nèi)容被加載后,會替代原來main元素中的內(nèi)容。.page-is-changing
class被從body中移除,新加載的內(nèi)容會被添加到window.history中(使用pushState()方法)。
function
loadNewContent(url,
bool)
{
var
newSectionName
=
'cd-'+url.replace('.html',
''),
section
=
$('div
class="cd-main-content
'+newSectionName+'"/div');
section.load(url+'
.cd-main-content
*',
function(event){
//
load
new
content
and
replace
main
content
with
the
new
one
$('main').html(section);
//...
$('body').removeClass('page-is-changing');
//...
if(url
!=
window.location){
//add
the
new
page
to
the
window.history
window.history.pushState({path:
url},'',url);
}
});
}
為了在用戶點擊瀏覽器的回退按鈕時觸發(fā)相同的頁面切換動畫效果,插件中監(jiān)聽popstate事件,并在它觸發(fā)時執(zhí)行changePage()函數(shù)。
$(window).on('popstate',
function()
{
var
newPageArray
=
location.pathname.split('/'),
//this
is
the
url
of
the
page
to
be
loaded
newPage
=
newPageArray[newPageArray.length
-
1];
if(
!isAnimating
)
changePage(newPage);
});
要實現(xiàn)簡單的跑馬燈效果其實運用html中marquee/marquee標(biāo)簽就可以達(dá)到了
基本屬性如下:
1.滾動方向direction(包括4個值:up、 down、 left和 right)
2.滾動方式behavior(scroll:循環(huán)滾動,默認(rèn)效果; slide:只滾動一次就停止; alternate:來回交替進(jìn)行滾動)
3.滾動速度scrollamount(滾動速度是設(shè)置每次滾動時移動的長度,以像素為單位)
4.滾動延遲scrolldelay(設(shè)置滾動的時間間隔,單位是毫秒)
5.滾動循環(huán)loop(默認(rèn)值是-1,滾動會不斷的循環(huán)下去)
6.滾動范圍width、height
7.滾動背景顏色bgcolor
8.空白空間hspace、vspace
如果想要更多的動畫效果,更多選擇jquery.marquee.js這款插件——ul里的啥都能滾并自帶懸停效果
1.html 中寫入ul id="marquee"li/li/ul
2.js中調(diào)入$("#marquee").marquee();即可
3.css比較簡單,一般自己寫,大致如下:
ul.marquee{display:block;line-height:1;position:relative;overflow:hidden;width:400px;height:22px;}
ul.marquee?li{ position:absolute;top:-999em;left:0; display:block; white-space:nowrap ;padding:3px5px;text-indent:0.8em;}
4.相關(guān)參數(shù)如下:
{
yScroll:"top"; ?//?初始滾動方向?(還可以是"top"?或?"bottom")
showSpeed:850; ?//?初始下拉速度
scrollSpeed:12; ?//?滾動速度
pauseSpeed:5000; ?//?滾動完到下一條的間隔時間
pauseOnHover:true; ?//?鼠標(biāo)滑向文字時是否停止?jié)L動
loop:-1; ?//?設(shè)置循環(huán)滾動次數(shù)?(-1為無限循環(huán))
fxEasingShow:"swing"; ?//?緩沖效果
fxEasingScroll:"linear"; ?//?緩沖效果
cssShowing:"marquee-showing"; ?//定義class event handlers
init:null; ?//?初始調(diào)用函數(shù)
beforeshow:null; ?//?滾動前回調(diào)函數(shù)
show:null; ?//?當(dāng)新的滾動內(nèi)容顯示時回調(diào)函數(shù)
aftershow:null; ?//?滾動完了回調(diào)函數(shù)
}
有個很簡單的方法
首先載入jquery
script?src="
之后把body加上style
body?style="display:?none;"
然后添加script事件
script
$(document).ready(function(){
$('body').show(10000);?//?1000等于1秒
});
/script