創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、耒陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為耒陽(yáng)等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
先給導(dǎo)航塊的a標(biāo)簽設(shè)置img屬性和data-img屬性;img屬性為未選中圖片,data-img為選中圖片。第一個(gè)按鈕的img圖片應(yīng)設(shè)置為默認(rèn)選中的狀態(tài)。
//點(diǎn)擊每個(gè)按鈕后進(jìn)行按鈕切換圖片操作
$(".tab-bar-item").on("click",?function?()?{
//先const clickImg變量為他的data屬性(選中圖片) ,然后找到img圖片的src屬性將未選中的圖片點(diǎn)擊后替換為選中圖片
const?clickImg?=?$(this).data("img");
$(this).find("img").attr("src",clickImg);
//找到被點(diǎn)擊標(biāo)簽的其他兄弟標(biāo)簽,用each遍歷 const noclick為未選中的img圖片,將點(diǎn)擊標(biāo)簽的其他兄弟標(biāo)簽的img換為未選中圖片就可以了
$(this).siblings().each(function(){
const?noclickImg=?$(this).attr("img")
$(this).find("img").attr("src",noclickImg);
})
}
需要準(zhǔn)備的材料分別有:電腦、html編輯器、瀏覽器。
1、首先,打開html編輯器,新建html文件,例如:index.html,并引入jquery。
2、在index.html中的script標(biāo)簽,輸入jquery代碼:
$('button').click(function () {
if ($(this).text() === '展開') {
$('input').show();
$(this).text('收起');
} else {
$('input').hide();
$(this).text('展開');
}
});
3、瀏覽器運(yùn)行index.html頁(yè)面,此時(shí)顯示出了展開按鈕。
4、點(diǎn)擊展開按鈕,此時(shí)展開了輸入框,并且按鈕變成了收齊按鈕。
直接為大家介紹制作過程,希望大家可以喜歡。
HTML結(jié)構(gòu)
該頁(yè)面切換特效的HTML結(jié)構(gòu)使用一個(gè)main元素來作為頁(yè)面的包裹元素,div.cd-cover-layer用于制作頁(yè)面切換時(shí)的遮罩層,div.cd-loading-bar是進(jìn)行ajax加載時(shí)的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樣式
該頁(yè)面切換特效中使用body::before和body::after偽元素在頁(yè)面切換過程中創(chuàng)建兩個(gè)遮罩層來遮住頁(yè)面內(nèi)容。它們的定位是固定定位,高度等于50vh,寬度為100%。默認(rèn)情況下,使用CSS
transform屬性將它們隱藏起來(translateY(-100%)/translateY(100%))。當(dāng)用戶切換頁(yè)面的時(shí)候,這些元素被移動(dòng)回視口當(dāng)中(通過在body元素上添加.page-is-changing
class)。
下面的圖片演示了這個(gè)過程:
頁(yè)面切換特效
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);
}
頁(yè)面切換時(shí),頁(yè)面內(nèi)容的淡入淡出效果是通過改變div.cd-cover-layer的透明度實(shí)現(xiàn)的。它覆蓋了.cd-main-content元素,并具有相同的背景色,然后在body被添加.page-is-changing
class的時(shí)候,將透明度從0修改為1。
Loading進(jìn)度條使用.cd-loading-bar::before偽元素來制作。默認(rèn)它被縮?。╯caleX(0))和transform-origin:
left
center。當(dāng)頁(yè)面切換開始時(shí)它被使用scaleX(1)放大會(huì)原來的尺寸。
.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來實(shí)現(xiàn)。每一個(gè)動(dòng)畫元素都被添加了不同的transition-delay,以實(shí)現(xiàn)不同的元素動(dòng)畫順序。
JAVASCRIPT
該頁(yè)面切換特效中在鏈接上使用data-type="page-transition"屬性,用于觸發(fā)頁(yè)面切換事件。當(dāng)插件檢測(cè)到用戶點(diǎn)擊事件,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);
});
這個(gè)方法會(huì)觸發(fā)頁(yè)面切換動(dòng)畫,并通過loadNewContent()方法加載新內(nèi)容。
function
changePage(url,
bool)
{
isAnimating
=
true;
//
trigger
page
animation
$('body').addClass('page-is-changing');
//...
loadNewContent(url,
bool);
//...
}
當(dāng)新的內(nèi)容被加載后,會(huì)替代原來main元素中的內(nèi)容。.page-is-changing
class被從body中移除,新加載的內(nèi)容會(huì)被添加到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);
}
});
}
為了在用戶點(diǎn)擊瀏覽器的回退按鈕時(shí)觸發(fā)相同的頁(yè)面切換動(dòng)畫效果,插件中監(jiān)聽popstate事件,并在它觸發(fā)時(shí)執(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);
});
本文實(shí)例講述了jQuery簡(jiǎn)單tab切換效果實(shí)現(xiàn)方法。分享給大家供大家參考。具體如下:
script
src="js/jquery-latest.js"/script
SCRIPT
language=javascript
type=text/javascript
$(document).ready(function
()
{
$('.tabtitle
li').click(function
()
{
var
index
=
$(this).index();
$(this).attr('class',"tabhover").siblings('li').attr('class','taba');
$('.tabcontent').eq(index).show(200).siblings('.tabcontent').hide();
});
var
t
=
0;
var
timer
=
setInterval(function(){
if(
t
==
$('.tabtitle
li').length
)
t
=
0;
$('.tabtitle
li:eq('+t+')').click();
t++;
},
700)
})
/SCRIPT
div
class="maintab"
ul
class="tabtitle"
li
class="tabhover"a
href="#"選擇標(biāo)題1/a/li
li
class="taba"a
href="#"選擇標(biāo)題2/a/li
li
class="taba"a
href="#"選擇標(biāo)題3/a/li
li
class="taba"a
href="#"選擇標(biāo)題4/a/li
li
class="taba"a
href="#"選擇標(biāo)題5/a/li
/ul
div
class="tabcontent"
選擇內(nèi)容1
/div
div
class="tabcontent"
style="DISPLAY:
none"
選擇內(nèi)容2
/div
div
class="tabcontent"
style="DISPLAY:
none"
選擇內(nèi)容3
/div
div
class="tabcontent"
style="DISPLAY:
none"
選擇內(nèi)容4
/div
div
class="tabcontent"
style="DISPLAY:
none"
選擇內(nèi)容5
/div
/div
希望本文所述對(duì)大家的jQuery程序設(shè)計(jì)有所幫助。
!DOCTYPE html
html
head
meta charset="UTF-8"
title/title
script src="../jquery-1.8.3.min.js"/script
style type="text/css"
.box{
width: 80%;
height: 300px;
border: solid 1px #eeeeee;
margin: 0 auto;
}
.box .tab_header ul{
margin: 0;
padding: 0;
width: 100%;
height: 50px;
display: flex;
line-height: 50px;
justify-content: space-between;
border-bottom: solid 1px #eeeeee;
}
.box .tab_header ul li{
width: 33%;
border-right: solid 1px #eeeeee;
list-style: none;
text-align: center;
}
.current{
background-color: #eeeeee;
color: #08BECE;
}
.hide{
display: none;
}
/style
/head
body
div class="box"
!--這個(gè)是tab切換標(biāo)題--
div class="tab_header"
ul
li class="current"tab1/li
litab2/li
litab3/li
/ul
!--這個(gè)是要顯示的內(nèi)容部分--
div class="tab_content"
divtab1的內(nèi)容/div
div class="hide"tab2的內(nèi)容/div
div class="hide"tab3的內(nèi)容/div
/div
/div
/div
script type="text/javascript"
var $asd=$(".tab_header ul li");
$asd.click(function(){
$(this).addClass("current").siblings().removeClass("current");
var $index=$asd.index(this);
var $content=$(".tab_content div");
$content.eq($index).show().siblings().hide();
});
/script
/body
/html
這個(gè)是效果圖