//this是移入的li
// 移入li的索引值 $(this).index()
// 让 span 滑块 的 left 值跟着改变就可以了
// 运动就使用 animate() 函数
// $(‘span’).animate({
// left: $(this).index() * 100 第n个选项卡*选项卡宽度
// })
// 每次移入的时候, 都让之前的动画停止, 直接做最新的这个动画
$(‘span’).stop().animate({
left: $(this).index() * 100
})
})
二、选项卡
实现思想
-
利用添加删除类名来实现选项卡的切换
-
一个类名控制选项卡的颜色变化,一个类名控制内容的显示隐藏也就是
display
的改变
程序代码
*{margin: 0;padding: 0;}
ul,li{list-style: none;}
.box{border: 10px solid;width: 600px;margin: auto;height: 400px;}
.ul1{display: flex;text-align: center;font-size: 30px;}
.ul1>li{flex: 1;background: rgba(168, 255, 251, 0.7);height: 60px;line-height: 60px;}
.ul2{width: 100%;background: rgb(241, 138, 250);height: 340px;display:flex;justify-content:center;align-items:center;}
.ul2>li{font-size: 80px;display: none;}
/* 控制选项卡背景颜色的改变 */
.ul1 .active{background: rgb(255, 211, 91);}
/* 控制内容的显示隐藏 */
.ul2 .active{display: block;}
- 1
- 2
- 3
- 1
- 2
- 3
// 第一种方法
$(‘.ul1>li’).click(function(){
$(this)
.addClass(‘active’)//在点击的按钮上添加active类名
.siblings()//找到其余兄弟元素
.removeClass(‘active’)//删除其余兄弟元素上的active类名
.parent()//找到父元素 ul1
.next()//找到父元素的下一个兄弟元素ul2
.children()//找到ul2下所有的子元素
.removeClass(‘active’)//删除所有子元素的active类名
.eq($(this).index())//找到与点击按钮this对应的元素的索引
.addClass(‘active’)//添加active类名
})
//第二种方法
$(‘.ul1>li’).click(function(){
$(‘.box li’).removeClass(‘active’)//所有li移除属性active
$(this).addClass(‘active’)//在点击按钮上添加类名active
( ′ . u l 2 > l i ′ ) . e q ( ('.ul2>li').eq( (′.ul2>li′).eq((this).index()).addClass(‘active’)//在相应的内容上添加active类名
})
三、树状菜单
实现思想
-
点击某一个一级菜单,其下的二级菜单显示,其余一级菜单的二级菜单隐藏
-
二级菜单均隐藏
display:none
,当点击相应的一级菜单后,该二级菜单显示slideDown()
,其余二级菜单隐藏slideUp()
-
一种伪元素的方式写
+ -
程序代码
- {
margin: 0;
padding: 0;
}
ul, ol, li {
list-style: none;
}
ul {
width: 300px;
/* 高不需要写, 让内容撑开 */
border: 3px solid pink;
margin: 30px auto;
padding-left: 20px;
}
ul > li {
cursor: pointer;
}
/* 二级菜单 所有二级菜单隐藏*/
li > ol {
padding-left: 20px;
display: none;
}
/*
使用一种伪元素的方式写 + -
*/
/* 包含一级菜单和二级菜单的所有 li */
li::before {
content: '+ ';
}
/* 有 active 类名的 li 的 before 伪元素样式 */
li.active::before {
content: '- ';
}
-
- 一级菜单
- 二级菜单
- 二级菜单
- 二级菜单
- 一级菜单
- 二级菜单
- 二级菜单
- 二级菜单
- 二级菜单
- 二级菜单
- 一级菜单
- 二级菜单
- 二级菜单
- 二级菜单
- 二级菜单
- 二级菜单
- 二级菜单
- 二级菜单
// 每一个一级菜单都有一个点击事件
// 注意: ul > li 子代选择器 选择的就是一级菜单的 li
// ul li 后代选择器 选择的是所有一级菜单和二级菜单的 li
// 给所有一级菜单添加点击事件
$(‘ul > li’).click(function () {
// 点击的时候, 自己有 active 类名, 并且自己的子元素的 ol slideDown()
// 兄弟元素取消 active 类名, 并且兄弟元素下的 ol slideUp()
$(this)// 找到 点击的一级菜单
.toggleClass(‘active’)//切换 有类名就添加 没有就删除 更改一级菜单前的加减
.children(‘ol’)// 找到该一级菜单的子元素 ol 二级菜单
.slideToggle()// 切换 显示和隐藏 如果隐藏就让其显示 如果显示就让其隐藏
.parent()// 找到 ol 二级菜单 的父元素一级菜单 也就是重新返回点击的一级菜单
.siblings()//找到点击菜单的所有兄弟元素
.removeClass(‘active’)//让兄弟元素全部移除类名active 其余一级菜单前变为 减号
.children(‘ol’)// 找到其余一级菜单的所有二级菜单
.slideUp()//让其二级菜单 隐藏
})
四、回到顶部
实现思想
-
判断浏览器卷去高度,在某一特定高度时隐藏,超过这一高度时显示
-
点击该按钮回到顶部,并利用定时器,让页面缓慢回到顶部
程序代码
p {
width: 60px;
height: 60px;
background-color: purple;
font-size: 24px;
line-height: 24px;
text-align: center;
color: #fff;
cursor: pointer;
display: none;
position: fixed;
right: 30px;
bottom: 50px;
}
body {
height: 5000px;
}
回到顶部
// 1. 通过浏览器卷去的高度来决定按钮显示和隐藏
// 需要一个浏览器的滚动事件
$(window).scroll(() => {
// 通过判断卷去的高度来决定 隐藏或者显示 回到顶部按钮
if ($(window).scrollTop() >= 300) {
//卷去高度大于300 让回到顶部按钮显示
$(‘p’).fadeIn()
} else {
//卷去高度小于300 让回到顶部按钮隐藏
$(‘p’).fadeOut()
}
})
// 2. 点击按钮的时候让页面回到顶部
$(‘.goTop’).click(() => {
// 让页面回到顶部 -> 滚回去
// 让页面滚回去, 需要用到 animate() 函数
// 滚动的不是窗口, 是页面
// 所以我们是在这里让 页面的 scrollTop 变成 0
$(‘html’).animate({
scrollTop: 0
}, 1000)
// animate 是要操作元素的
// document 是根节点 不是 元素
// html 是根元素节点
})
五、全选反选案例
实现思想
-
全选按钮:点击全选按钮时,获取其状态,让所有单选按钮保持跟全选按钮的状态一致
-
单选按钮:当单选按钮每个都被选中时,让全选按钮也被选中
-
单选按钮从全部选中,变为非全部选中,全选按钮也取消选中
-
反选按钮:点击反选按钮,每一个单选按钮的状态都与之前相反
程序代码
- {
margin: 0;
padding: 0;
}
.box {
width: 200px;
border: 10px solid #333;
margin: 50px auto;
padding: 20px;
}
hr {
margin: 20px 0;
}
.fan {
float: right;
}
反选
全选
选项一:
选项二:
选项三:
选项四:
// 1. 全选按钮
$(‘.all > input’).click(function () {
// 先拿到自己的状态 获取自己的 checked 属性 true或者false
//this.checked
// 让 单选按钮 与全选按钮保持一致
$(‘.select > input’).prop(‘checked’, this.checked)
})
// 2. 单选按钮
$(‘.select > input’).click(function () {
// 判断一下四个选项是不是都是true
//如果是 全选按钮就选中 true 如果不是 全选按钮就取消选中 false
//方法一
// 定义一个变量假设他们都是 true
var flag = true
// 遍历四个按钮, 只要有一个是 false, 那么就把 flag 变成 false
$(‘.select > input’).each(function (index, item) {
// 只要有一个的 checked 是 false , 那么我就让 flag 是 false
if (item.checked === false) {
flag = false
}
})
//循环结束设置全选按钮的值
$(‘.all > input’).prop(‘checked’, flag)
//方法二
// 利用数组方 every()
//如果数组中每一个元素都满足条件就返回 true, 只要有一个不满足条件就返回 false
// 因为 jQuery 元素集合不能使用 数组的方法
// 我们可以使用 call 借用一下
// call 是改变 this 指向, 从第二个参数开始时给函数传递参数
$(‘.all > input’)
.prop(‘checked’, [].every.call($(‘.select > input’), function (item, index) {
return item.checked === true
}))
})
// 3. 反选按钮
$(‘.fan > button’).click(function () {
// 让每一个 select 下面的 input 都改变自己的状态
// 遍历每一个单选按钮
$(‘.select > input’).each(function (index, item) {
item.checked = !item.checked
})
//跟单选按钮的 代码一样 选择其中一种即可
( ′ . a l l > i n p u t ′ ) . p r o p ( ′ c h e c k e d ′ , [ ] . e v e r y . c a l l ( ('.all > input').prop('checked', [].every.call( (′.all>input′).prop(′checked′,[].every.call((‘.select > input’), function (item, index) { return item.checked === true }))
})
六、手风琴
实现思想
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。
资料领取方式:点击这里获取前端全套学习资料
[外链图片转存中…(img-hFkcsrVk-1711680579760)][外链图片转存中…(img-Z3aw4Pca-1711680579760)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-uwPs3non-1711680579761)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。
资料领取方式:点击这里获取前端全套学习资料
[外链图片转存中…(img-bARz42uB-1711680579761)]
[外链图片转存中…(img-McVA1RQ5-1711680579761)]
-