1. 简易选项卡
* {
margin: 0;
padding: 0;
}
.box {
width: 600px;
height: 400px;
margin: 50px auto;
display: flex;
flex-direction: column;
border: 5px solid #333;
}
.box>ul {
height: 60px;
display: flex;
}
.box>ul>li {
list-style: none;
font-size: 24px;
color: white;
display: flex;
justify-content: center;
align-items: center;
flex: 1;
background-color: skyblue;
cursor: pointer;
}
.box>ul>li:active {
background-color: orange;
}
.box>ol {
flex: 1;
position: relative;
}
.box>ol>li {
width: 100%;
height: 100%;
font-size: 100px;
color: white;
justify-content: center;
align-items: center;
flex: 1;
background-color: palegreen;
display: none;
}
.box>ol>li.active {
display: flex;
}
<div class="box">
<ul>
<li class="active">1</li>
<li>2</li>
<li>3</li>
</ul>
<ol>
<li class="active">1</li>
<li>2</li>
<li>3</li>
</ol>
</div>
$('ul>li').click(function () {
$(this).addClass('active').siblings().removeClass('active'
$('ol>li').removeClass('active').eq($(this).index()).addClass('active')
}
$('ul>li').click(function () {
$('ul>li,ol>li').removeClass('active').parent().find(`li:eq(${$(this).index()})`).addClass('active')
})
2. jQuery 基础动画
- 要求:单击 '显示' 按钮, 盒子显示 ;
- 单击 '隐藏' 按钮, 盒子隐藏 ;
- 单击 '却换' 按钮, 盒子却换 ;
div {
width: 400px;
height: 400px;
background-color: pink;
}
<button>显示</button>
<button>隐藏</button>
<button>切换</button>
<div></div>
$('button').eq(0).click(() => {
$('div').show(2000,'linear',()=>console.log('显示完毕'))
})
$('button').eq(1).click(() => {
$('div').hide(2000,'linear',()=>console.log('隐藏完毕'))
})
$('button').eq(2).click(() => {
$('div').toggle(2000,'linear',()=>console.log('显示和隐藏完毕'))
})
3. jQuery 折叠动画
- 要求:单击 '显示' 按钮, 盒子折叠显示 ;
- 单击 '隐藏' 按钮, 盒子折叠隐藏 ;
- 单击 '却换' 按钮, 盒子折叠却换 ;
.two {
width: 400px;
height: 400px;
background-color: pink;
position: absolute;
bottom: 0;
left: 0;
}
.out {
width: 400px;
height: 400px;
position: relative;
}
<button>显示</button>
<button>隐藏</button>
<button>切换</button>
<div class="out">
<div class="two"></div>
</div>
$('button').eq(0).click(() => {
$('div.two').slideDown(2000, 'linear', () => console.log('显示完毕'))
})
$('button').eq(1).click(() => {
$('div.two').slideUp(2000, 'linear', () => console.log('隐藏完毕'))
})
$('button').eq(2).click(() => {
$('div.two').slideToggle(2000, 'linear', () => console.log('显示和隐藏完毕'))
})
4. jQuery 渐隐渐显动画
- 要求:单击 '显示' 按钮, 盒子渐近显示 ;
- 单击 '隐藏' 按钮, 盒子渐近隐藏 ;
- 单击 '却换' 按钮, 盒子渐近却换 ;
.two {
width: 400px;
height: 400px;
background-color: pink;
position: absolute;
bottom: 0;
left: 0;
}
.out {
width: 400px;
height: 400px;
position: relative;
}
<button>显示</button>
<button>隐藏</button>
<button>切换</button>
<button>go</button>
<div class="out">
<div class="two"></div>
</div>
$('button').eq(0).click(() => {
$('div.two').fadeIn(2000, 'linear', () => console.log('显示完毕'))
})
$('button').eq(1).click(() => {
$('div.two').fadeOut(2000, 'linear', () => console.log('隐藏完毕'))
})
$('button').eq(2).click(() => {
$('div.two').fadeToggle(2000, 'linear', () => console.log('显示和隐藏完毕'))
})
$('button').eq(3).click(() => {
$('div.two').fadeTo(2000, 0.5, 'linear', () => console.log('显示和隐藏完毕'))
})
5. jQuery 综合动画
* {
margin: 0;
padding: 0;
}
div {
width: 100px;
height: 100px;
background-color: pink;
}
<button>揍你</button>
<div></div>
/*
jQuery 的综合动画
+ 什么样式都能运动
+ 但是 颜色不行,2D 和 3D 变化不行
+ 语法:元素集合.animeta()
=> 参数1:对象数据类型,你要运动的样式
=> 参数2:运动时间,单位是 ms
=> 参数3:运动曲线
=> 参数4:运动结束的回调函数
*/
$('button').click(() => {
$('div').animate({
width: 300,
height: 500,
margin:150
},1000)
})
6. jQuery 树状菜单
* {
margin: 0;
padding: 0;
}
div {
width: 300px;
margin: 0 auto;
}
ul {
width: 200px;
border: 3px solid black;
list-style: none;
padding: 5px;
cursor: pointer;
}
li::before {
content: '+';
}
li.active::before {
content: '-';
}
ol {
list-style: none;
margin: 10px;
display: none;
}
<div>
<ul>
<li>
<span>一级菜单</span>
<ol>
<li>二级菜单1</li>
<li>二级菜单2</li>
<li>二级菜单3</li>
</ol>
</li>
<li>
<span>一级菜单</span>
<ol>
<li>二级菜单1</li>
<li>二级菜单2</li>
<li>二级菜单3</li>
<li>二级菜单4</li>
<li>二级菜单5</li>
<li>二级菜单6</li>
</ol>
</li>
<li>
<span>一级菜单</span>
<ol>
<li>二级菜单1</li>
<li>二级菜单2</li>
<li>二级菜单3</li>
</ol>
</li>
</ul>
</div>
$('ul>li').click(function () {
$(this).toggleClass('active').siblings().removeClass('active')
$(this)
.find('ol')
.slideToggle()
.parent()
.siblings()
.find('ol')
.slideUp()
})
7. jQuery 选项卡跟随
* {
margin: 0;
padding: 0;
}
ul,
ol {
list-style: none;
}
ul {
width: 1000px;
height: 40px;
display: flex;
border-bottom: 3px solid #000;
margin: 30px auto;
position: relative;
}
ul>li {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
position: relative;
z-index: 999;
cursor: pointer;
}
ul>span {
width: 100px;
height: 100%;
background-color: skyblue;
position: absolute;
top: 0;
left: 0;
border-bottom: 3px solid red;
}
<ul>
<li style="color: white;">第1个选项</li>
<li>第2个选项</li>
<li>第3个选项</li>
<li>第4个选项</li>
<li>第5个选项</li>
<li>第6个选项</li>
<li>第7个选项</li>
<li>第8个选项</li>
<li>第9个选项</li>
<li>第10个选项</li>
<span></span>
</ul>
$('ul>li').mouseover(function () {
const index = $(this).index()
$('ul>span').stop().animate({ left: index * 100 }, 1000, 'linear', () => {
$(this).css('color', 'white')
})
$(this).siblings().css('color', 'black')
})
8. jQuery 手风琴
* {
margin: 0;
padding: 0;
}
ul {
list-style: none;
width: 640px;
height: 280px;
display: flex;
border: 5px solid pink;
margin: auto;
}
li {
width: 160px;
height: 280px;
overflow: hidden;
}
img {
width: 520px;
height: 280px;
}
<ul>
<li><img src="./image/01.jpg" alt=""></li>
<li><img src="./image/02.jpg" alt=""></li>
<li><img src="./image/03.jpg" alt=""></li>
<li><img src="./image/04.jpg" alt=""></li>
</ul>
$('ul>li').mouseover(function () {
$(this).stop().animate({ width: 520 }).siblings().stop().animate({ width: 40 }).siblings()
})
$('ul').mouseleave(function () {
$('ul>li').stop().animate({ width: 160 })
})
9. jQuery 楼层导航
* {
margin: 0;
padding: 0;
}
.header {
width: 1000px;
height: 60px;
background-color: skyblue;
margin: auto;
font-size: 40px;
color: white;
text-align: center;
}
.top {
width: 1000px;
height: 160px;
background-color: pink;
margin: auto;
font-size: 40px;
color: white;
text-align: center;
line-height: 160px;
}
.banner {
width: 1000px;
height: 360px;
background-color: purple;
margin: auto;
font-size: 40px;
color: white;
text-align: center;
line-height: 360px;
}
ul {
list-style: none;
}
ul li p {
font-size: 40px;
text-align: center;
margin: 10px;
}
ul li div {
width: 1000px;
height: 600px;
background-color: orange;
margin: auto;
font-size: 60px;
text-align: center;
line-height: 600px;
color: white;
}
.footer {
width: 1000px;
height: 450px;
background-color: gray;
margin: auto;
margin-top: 40px;
font-size: 60px;
text-align: center;
line-height: 450px;
color: white;
}
ol {
width: 40px;
height: 300px;
position: fixed;
top: 50%;
right: 0%;
list-style: none;
transform: translateY(-50%);
}
ol li,
ol span {
cursor: pointer;
border: 1px solid black;
}
ol span {
background-color: red;
width: 40px;
display: inline-block;
color: white;
}
ol li.active {
background-color: skyblue;
}
<div class="header">我是网站的头部</div>
<div class="top">我是顶部搜索 + logo</div>
<div class="banner">我是轮播图区域</div>
<ul>
<li>
<p class="title">频道广场</p>
<div class="content">我是楼层内容</div>
</li>
<li>
<p class="title">为你推荐</p>
<div class="content">我是楼层内容</div>
</li>
<li>
<p class="title">特色优选</p>
<div class="content">我是楼层内容</div>
</li>
<li>
<p class="title">京东秒杀</p>
<div class="content">我是楼层内容</div>
</li>
<li>
<p class="title">最近热销</p>
<div class="content">我是楼层内容</div>
</li>
</ul>
<div class="footer">我是网站底部</div><ol>
<li class="active">频道广场</li>
<li>为你推荐</li>
<li>特色优选</li>
<li>京东秒杀</li>
<li>最近热销</li>
<span>回到顶部</span>
</ol>
$('ol>li').click(function () {
$(this).addClass('active').siblings().removeClass('active')
const li_top = $('ul>li').eq($(this).index()).offset().top
$('html,body').animate({ scrollTop: li_top })
})
$(window).scroll(function () {
const scroll_top = document.documentElement.scrollTop || document.body.scrollTop
$('ul>li').each(function (index, item) {
if (scroll_top >= $(item).offset().top) {
$('ol>li').eq(index).addClass('active').siblings().removeClass('active')
}
})
})
$('ol>span').click(() => {
$('html, body').animate({ scrollTop: 0 })
})