在不同的分辨率下,要求弹框的位置相对不变,如果写死left和top的话,会有影响
解决:用js来控制,例如有一个固定的元素model,获取这个固定的元素的left和top, 加减固定的数来给model。
componentDidUpdate() {
// console.log(document.querySelector('.modal-plate-select'))
const switchPlateOffsetTop = $('.section-switch-plate').offset().top + 40
const switchPlateOffsetLeft = $('.section-switch-plate').offset().left
let $selectPlate = null
/* 获取 Modal 组件的 DOM 元素方法一: */
// 选用定时器的原因:第一次 componentDidUpdate 时获取不到 Modal 组件的 DOM 元素,可能是由于动画或者其他原因导致的,所以采用了延时获取的方法,把获取 DOM 元素的逻辑放到异步队列中,这样就可以获取到了。
setTimeout(() => {
$selectPlate = document.querySelector('.modal-plate-select')
if ($selectPlate) {
$selectPlate.style.top = switchPlateOffsetTop + 'px'
$selectPlate.style.left = switchPlateOffsetLeft + 'px'
}
}, 0)
}