2024腾讯Web前端面试题精选,系统带你学习 WebAPIs —(2),高级前端面试答案

var arrow_l = document.querySelector(‘.arrow-l’);

var arrow_r = document.querySelector(‘.arrow-r’);

var focus = document.querySelector(‘.focus’);

var focusWidth = focus.offsetWidth;

// 2. 鼠标经过focus 就显示隐藏左右按钮

focus.addEventListener(‘mouseenter’, function() {

arrow_l.style.display = ‘block’;

arrow_r.style.display = ‘block’;

clearInterval(timer);

timer = null; // 清除定时器变量

});

focus.addEventListener(‘mouseleave’, function() {

arrow_l.style.display = ‘none’;

arrow_r.style.display = ‘none’;

timer = setInterval(function() {

//手动调用点击事件

arrow_r.click();

}, 2000);

});

// 3. 动态生成小圆圈 有几张图片,我就生成几个小圆圈

var ul = focus.querySelector(‘ul’);

var ol = focus.querySelector(‘.circle’);

// console.log(ul.children.length);

for (var i = 0; i < ul.children.length; i++) {

// 创建一个小li

var li = document.createElement(‘li’);

// 记录当前小圆圈的索引号 通过自定义属性来做

li.setAttribute(‘index’, i);

// 把小li插入到ol 里面

ol.appendChild(li);

// 4. 小圆圈的排他思想 我们可以直接在生成小圆圈的同时直接绑定点击事件

li.addEventListener(‘click’, function() {

// 干掉所有人 把所有的小li 清除 current 类名

for (var i = 0; i < ol.children.length; i++) {

ol.children[i].className = ‘’;

}

// 留下我自己 当前的小li 设置current 类名

this.className = ‘current’;

// 5. 点击小圆圈,移动图片 当然移动的是 ul

// ul 的移动距离 小圆圈的索引号 乘以 图片的宽度 注意是负值

// 当我们点击了某个小li 就拿到当前小li 的索引号

var index = this.getAttribute(‘index’);

// 当我们点击了某个小li 就要把这个li 的索引号给 num

num = index;

// 当我们点击了某个小li 就要把这个li 的索引号给 circle

circle = index;

// num = circle = index;

console.log(focusWidth);

console.log(index);

animate(ul, -index * focusWidth);

})

}

// 把ol里面的第一个小li设置类名为 current

ol.children[0].className = ‘current’;

// 6. 克隆第一张图片(li)放到ul 最后面

var first = ul.children[0].cloneNode(true);

ul.appendChild(first);

// 7. 点击右侧按钮, 图片滚动一张

var num = 0;

// circle 控制小圆圈的播放

var circle = 0;

// flag 节流阀

var flag = true;

arrow_r.addEventListener(‘click’, function() {

if (flag) {

flag = false; // 关闭节流阀

// 如果走到了最后复制的一张图片,此时 我们的ul 要快速复原 left 改为 0

if (num == ul.children.length - 1) {

ul.style.left = 0;

num = 0;

}

num++;

animate(ul, -num * focusWidth, function() {

flag = true; // 打开节流阀

});

// 8. 点击右侧按钮,小圆圈跟随一起变化 可以再声明一个变量控制小圆圈的播放

circle++;

// 如果circle == 4 说明走到最后我们克隆的这张图片了 我们就复原

if (circle == ol.children.length) {

circle = 0;

}

// 调用函数

circleChange();

}

});

// 9. 左侧按钮做法

arrow_l.addEventListener(‘click’, function() {

if (flag) {

flag = false;

if (num == 0) {

num = ul.children.length - 1;

ul.style.left = -num * focusWidth + ‘px’;

}

num–;

animate(ul, -num * focusWidth, function() {

flag = true;

});

// 点击左侧按钮,小圆圈跟随一起变化 可以再声明一个变量控制小圆圈的播放

circle–;

// 如果circle < 0 说明第一张图片,则小圆圈要改为第4个小圆圈(3)

// if (circle < 0) {

// circle = ol.children.length - 1;

// }

circle = circle < 0 ? ol.children.length - 1 : circle;

// 调用函数

circleChange();

}

});

function circleChange() {

// 先清除其余小圆圈的current类名

for (var i = 0; i < ol.children.length; i++) {

ol.children[i].className = ‘’;

}

// 留下当前的小圆圈的current类名

ol.children[circle].className = ‘current’;

}

// 10. 自动播放轮播图

var timer = setInterval(function() {

//手动调用点击事件

arrow_r.click();

}, 2000);

})

1.2.2. 节流阀

防止轮播图按钮连续点击造成播放过快。

节流阀目的:当上一个函数动画内容执行完毕,再去执行下一个函数动画,让事件无法连续触发。

核心实现思路:利用回调函数,添加一个变量来控制,锁住函数和解锁函数。

开始设置一个变量var flag= true;

If(flag){flag = false; do something} 关闭水龙头

利用回调函数动画执行完毕, flag = true 打开水龙头

1.2.3. 案例:返回顶部

  1. 带有动画的返回顶部

  2. 此时可以继续使用我们封装的动画函数

  3. 只需要把所有的left 相关的值改为 跟 页面垂直滚动距离相关就可以了

  4. 页面滚动了多少,可以通过 window.pageYOffset 得到

  5. 最后是页面滚动,使用 window.scroll(x,y)

//1. 获取元素

var sliderbar = document.querySelector(‘.slider-bar’);

var banner = document.querySelector(‘.banner’);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

总结

秋招即将开始,校招的朋友普遍是缺少项目经历的,所以底层逻辑,基础知识要掌握好!

而一般的社招,更是神仙打架。特别强调,项目经历不可忽视;几乎简历上提到的项目都会被刨根问底,所以项目应用的技术要熟练,底层原理必须清楚。

这里给大家提供一份汇集各大厂面试高频核心考点前端学习资料。涵盖 HTML,CSS,JavaScript,HTTP,TCP协议,浏览器,Vue框架,算法等高频考点238道(含答案)

资料截图 :

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

高级前端工程师必备资料包

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

03e1b69e399b6739e3d33554d42a7.png)

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值