Web前端最全vue 实现像web淘宝一样区域放大功能,最新阿里前端高级面试题及答案

最后

小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析

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

虽只说了一个公司的面试,但我们可以知道大厂关注的东西并举一反三,通过一个知识点延伸到另一个知识点,这是我们要掌握的学习方法,小伙伴们在这篇有学到的请评论点赞转发告诉小编哦,谢谢大家的支持!

cursor: ‘move’

},

minImgStyle: {},

maxImgBoxStyle: {

},

maxImgStyle: {

position: ‘absolute’,

},

}

},

watch: {

‘minIMGsrc’() {

this.init()

},

‘maxIMGsrc’() {

this.init()

},

},

mounted() {

this.init()

},

methods: {

init() {

this.imgBoxWidth = this.width

this.imgBoxHeight = this.height

this.$set(this.minImgStyle, ‘width’, this.imgBoxWidth + ‘px’)

this.$set(this.minImgStyle, ‘height’, this.imgBoxHeight + ‘px’)

this.$set(this.maxImgStyle, ‘width’, this.imgBoxWidth + ‘px’)

this.$set(this.maxImgStyle, ‘height’, this.imgBoxHeight + ‘px’)

this.$set(this.minImgBoxStyle, ‘width’, this.imgBoxWidth + ‘px’)

this.$set(this.minImgBoxStyle, ‘height’, this.imgBoxHeight + ‘px’)

this.$set(this.maxImgBoxStyle, ‘width’, this.imgBoxWidth + ‘px’)

this.$set(this.maxImgBoxStyle, ‘height’, this.imgBoxHeight + ‘px’)

this.$set(this.maxImgBoxStyle, ‘left’, this.imgBoxWidth + ‘px’)

this.areaWidth = this.imgBoxWidth / this.scale

this.areaHeight = this.imgBoxHeight / this.scale

this.finalMinIMGsrc = this.minIMGsrc

if (!this.maxIMGsrc) {

this.finalMaxIMGsrc = this.minIMGsrc

}

this.$set(this.areaMarkStyle, ‘width’, this.areaWidth + ‘px’)

this.$set(this.areaMarkStyle, ‘height’, this.areaHeight + ‘px’)

this.$set(this.maxImgStyle, ‘transform’, ‘scale(’ + this.scale + ‘)’)

},

mouseEnter() {

this.show = true

},

mouseLeave() {

this.show = false

},

mousemove(e) {

// 获取文档顶端与屏幕顶部之间的距离

// scrollTop指的是“元素中的内容”超出“元素上边界”的那部分的高度

let documentScrollTop = document.documentElement.scrollTop || document.body.scrollTop;

// 获取鼠标相对于屏幕的坐标

let mouseClientX = e.clientX

let mouseClientY = e.clientY

// 获取小照片相对于屏幕位置信息

// getBoundingClientRect()用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。

let minImgPosition = this.$refs.minImg.getBoundingClientRect();

let minImgX = minImgPosition.left;

let minImgY = minImgPosition.top;

// 计算出探测块相对于小图片的坐标

let areaLeft = mouseClientX - minImgX - this.areaWidth / 2

let areaTop = mouseClientY - minImgY - this.areaHeight / 2

if (documentScrollTop > 0) {

areaTop = documentScrollTop + areaTop

}

let minLeft = 0

let maxLeft = this.imgBoxWidth - this.areaWidth

let minTop = 0

let maxTop = this.imgBoxHeight - this.areaHeight

// 禁止探测块移出小图片

if (areaLeft < minLeft) {

areaLeft = minLeft

}

if (areaLeft > maxLeft) {

areaLeft = maxLeft

}

if (areaTop < minTop) {

areaTop = minTop

}

if (areaTop > maxTop) {

areaTop = maxTop

}

// 更新探测块的坐标

this.$set(this.areaMarkStyle, ‘left’, areaLeft + ‘px’)

this.$set(this.areaMarkStyle, ‘top’, areaTop + ‘px’)

// 更新放大后照片的坐标

this.$set(this.maxImgStyle, ‘left’, (this.scale - 1) * this.imgBoxWidth / 2 - areaLeft * this.scale + ‘px’)

this.$set(this.maxImgStyle, ‘top’, (this.scale - 1) * this.imgBoxHeight / 2 - areaTop * this.scale + ‘px’)

}

}

}

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值