十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
创新互联专注于企业成都全网营销、网站重做改版、耒阳网站定制设计、自适应品牌网站建设、H5响应式网站、商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为耒阳等各大城市提供网站开发制作服务。
先给导航块的a标签设置img属性和data-img属性;img属性为未选中图片,data-img为选中图片。第一个按钮的img图片应设置为默认选中的状态。
//点击每个按钮后进行按钮切换图片操作
$(".tab-bar-item").on("click", function () {
//先const clickImg变量为他的data属性(选中图片) ,然后找到img图片的src属性将未选中的图片点击后替换为选中图片
const clickImg = $(this).data("img");
$(this).find("img").attr("src",clickImg);
//找到被点击标签的其他兄弟标签,用each遍历 const noclick为未选中的img图片,将点击标签的其他兄弟标签的img换为未选中图片就可以了
$(this).siblings().each(function(){
const noclickImg= $(this).attr("img")
$(this).find("img").attr("src",noclickImg);
})
}
需要准备的材料分别有:电脑、html编辑器、浏览器。
1、首先,打开html编辑器,新建html文件,例如:index.html,并引入jquery。
2、在index.html中的script标签,输入jquery代码:
$('button').click(function () {
if ($(this).text() === '展开') {
$('input').show();
$(this).text('收起');
} else {
$('input').hide();
$(this).text('展开');
}
});
3、浏览器运行index.html页面,此时显示出了展开按钮。
4、点击展开按钮,此时展开了输入框,并且按钮变成了收齐按钮。
直接为大家介绍制作过程,希望大家可以喜欢。
HTML结构
该页面切换特效的HTML结构使用一个main元素来作为页面的包裹元素,div.cd-cover-layer用于制作页面切换时的遮罩层,div.cd-loading-bar是进行ajax加载时的loading进度条。
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伪元素在页面切换过程中创建两个遮罩层来遮住页面内容。它们的定位是固定定位,高度等于50vh,宽度为100%。默认情况下,使用CSS
transform属性将它们隐藏起来(translateY(-100%)/translateY(100%))。当用户切换页面的时候,这些元素被移动回视口当中(通过在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);
}
页面切换时,页面内容的淡入淡出效果是通过改变div.cd-cover-layer的透明度实现的。它覆盖了.cd-main-content元素,并具有相同的背景色,然后在body被添加.page-is-changing
class的时候,将透明度从0修改为1。
Loading进度条使用.cd-loading-bar::before伪元素来制作。默认它被缩小(scaleX(0))和transform-origin:
left
center。当页面切换开始时它被使用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来实现。每一个动画元素都被添加了不同的transition-delay,以实现不同的元素动画顺序。
JAVASCRIPT
该页面切换特效中在链接上使用data-type="page-transition"属性,用于触发页面切换事件。当插件检测到用户点击事件,changePage()方法将被执行。
$('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);
});
这个方法会触发页面切换动画,并通过loadNewContent()方法加载新内容。
function
changePage(url,
bool)
{
isAnimating
=
true;
//
trigger
page
animation
$('body').addClass('page-is-changing');
//...
loadNewContent(url,
bool);
//...
}
当新的内容被加载后,会替代原来main元素中的内容。.page-is-changing
class被从body中移除,新加载的内容会被添加到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);
}
});
}
为了在用户点击浏览器的回退按钮时触发相同的页面切换动画效果,插件中监听popstate事件,并在它触发时执行changePage()函数。
$(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);
});
本文实例讲述了jQuery简单tab切换效果实现方法。分享给大家供大家参考。具体如下:
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="#"选择标题1/a/li
li
class="taba"a
href="#"选择标题2/a/li
li
class="taba"a
href="#"选择标题3/a/li
li
class="taba"a
href="#"选择标题4/a/li
li
class="taba"a
href="#"选择标题5/a/li
/ul
div
class="tabcontent"
选择内容1
/div
div
class="tabcontent"
style="DISPLAY:
none"
选择内容2
/div
div
class="tabcontent"
style="DISPLAY:
none"
选择内容3
/div
div
class="tabcontent"
style="DISPLAY:
none"
选择内容4
/div
div
class="tabcontent"
style="DISPLAY:
none"
选择内容5
/div
/div
希望本文所述对大家的jQuery程序设计有所帮助。
!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"
!--这个是tab切换标题--
div class="tab_header"
ul
li class="current"tab1/li
litab2/li
litab3/li
/ul
!--这个是要显示的内容部分--
div class="tab_content"
divtab1的内容/div
div class="hide"tab2的内容/div
div class="hide"tab3的内容/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
这个是效果图