前端面试项目细节重难点(十)(已工作|做分享)

面试官:现场出需求:我想让一个左侧盒子可以进行拉伸、缩小、展示或隐藏这些功能,你会如何实现?

答:(1)分析问题:其实,我听到这个问题后:

我的第一种想法:搜索以前项目经验过程中有没有是实现类似需求,那确实没有做过。

我的第二个想法:想一想有没有什么插件可以是西安该功能,我以前确实用到过一个drag可拖拽的插件,好像不符合需求。

我的第三个想法:自己先分析这个业务场景,然后根据该分析使用代码是实现该功能。【便于大家理解需求,还是附上一张原型图】

afc719cb48fb4ba1abbe1d475520cd51.png

 

(2)业务功能分析:

拉伸、缩小功能:用户拉动右侧拉伸杠时的步骤分析:用户在拉伸杠上按下鼠标->用户在页面上左右移动鼠标->用户在页面某一个位置手指从鼠标按钮上抬起,停止移动

展示、隐藏功能:用户点击右侧蓝色按钮时的步骤分析:用户点击蓝色按钮:如果盒子展示,则将盒子收起;如果盒子收起,则将盒子展开。

(3)代码逻辑分析:

拉伸、缩小功能:

第一个处理逻辑:在拉伸杠上绑定鼠标按下事件,即mousedown

第二个处理逻辑:在页面上触发鼠标移动事件,即mousemove

第三个处理逻辑:在页面上触发鼠标停下事件,即mouseup

展示、隐藏功能:在蓝色按钮上绑定点击事件,控制盒子的显隐

(4)代码实现:【代码逻辑和重点内容已在代码中进行备注,大家仔细看看】

ac19805fbca24a11a532fba986c7c97e.png

da49ce83c1a04d39a9d166e708b03b11.png 

911576e7731f4c94a1415aa921eb0b50.png 

73890aa8aa6c45b4a5252aa3d8c9220a.png 

9bbdf0e8898e495a99305f37b6671c66.png 

a3efe426df2349998ffb2df19a3e8091.png 

(5)知识点运用:你能区分event.clientX、ref.$el.getBoundingClientRect()和document.body.offsetWidth?

ebaa992e0814479184506286c7954f23.png 

附上两张图片帮助你们理解:

595be1ca79854cca9f7ec9578f38be44.png

781559cac7fe4183abadc129c0708e2a.png 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值