当浏览器放大或缩小时,如何让绝对定位的元素保持响应?
How can I keep an absolutely positioned element responsive when the browser is zoomed in or out?
我有一张 header 图片,我在其右下角添加了标题和副标题。使用 jQuery,它们的位置会在 window 调整大小时做出响应,但在放大或缩小时不会。我听说 window 调整大小事件可以在某些浏览器上放大或缩小时触发,但似乎并非如此。我该如何解决这个问题?
HTML
<img src='images/header-photo.png' id='image'>
<div id='title-container'>
<h1 id='title' class='title-text'>Title</h1>
<img src='images/logo.png' class='logo-img'>
</div>
<h2 id='subtitle'>Subtitle</h2>
CSS
#title-container {
display: flex;
flex-direction: row;
position: absolute;
}
#title {
font-size: 2em;
margin-right: 0.5em;
}
#subtitle {
position: absolute;
}
#title-container,
#subtitle {
width: fit-content;
}
#image {
display: block;
margin: auto;
max-width: 100vw;
}
Javascript
$(document).ready(function(){
let titleLeft=()=>((parseFloat($('#image').css('margin-left')) + parseFloat($('#image').width())) * 0.65).toString().concat('px')
let titleTop=()=>((parseFloat($('#image').css('margin-top')) + parseFloat($('#image').height())) * 0.6).toString().concat('px')
let subtitleLeft=()=>((parseFloat(titleLeft())* 1.1).toString().concat('px'))
let subtitleTop=()=>((parseFloat(titleTop())* 1.2).toString().concat('px'))
$('#title-container').css({'left': titleLeft(), 'top': titleTop()})
$('#subtitle').css({'left': subtitleLeft(), 'top': subtitleTop()})
let resizeTitles=()=>{
$('#title-container').css({'left': titleLeft(), 'top': titleTop()})
$('#subtitle').css({'left': subtitleLeft(), 'top': subtitleTop()})
}
$(window).resize(resizeTitles())
})
正如 charlietfl 在他们的评论中所说,问题是我调用了 resizeTiles 而不是传递引用。
$(window).resize(resizeTitles)
我有一张 header 图片,我在其右下角添加了标题和副标题。使用 jQuery,它们的位置会在 window 调整大小时做出响应,但在放大或缩小时不会。我听说 window 调整大小事件可以在某些浏览器上放大或缩小时触发,但似乎并非如此。我该如何解决这个问题?
HTML
<img src='images/header-photo.png' id='image'>
<div id='title-container'>
<h1 id='title' class='title-text'>Title</h1>
<img src='images/logo.png' class='logo-img'>
</div>
<h2 id='subtitle'>Subtitle</h2>
CSS
#title-container {
display: flex;
flex-direction: row;
position: absolute;
}
#title {
font-size: 2em;
margin-right: 0.5em;
}
#subtitle {
position: absolute;
}
#title-container,
#subtitle {
width: fit-content;
}
#image {
display: block;
margin: auto;
max-width: 100vw;
}
Javascript
$(document).ready(function(){
let titleLeft=()=>((parseFloat($('#image').css('margin-left')) + parseFloat($('#image').width())) * 0.65).toString().concat('px')
let titleTop=()=>((parseFloat($('#image').css('margin-top')) + parseFloat($('#image').height())) * 0.6).toString().concat('px')
let subtitleLeft=()=>((parseFloat(titleLeft())* 1.1).toString().concat('px'))
let subtitleTop=()=>((parseFloat(titleTop())* 1.2).toString().concat('px'))
$('#title-container').css({'left': titleLeft(), 'top': titleTop()})
$('#subtitle').css({'left': subtitleLeft(), 'top': subtitleTop()})
let resizeTitles=()=>{
$('#title-container').css({'left': titleLeft(), 'top': titleTop()})
$('#subtitle').css({'left': subtitleLeft(), 'top': subtitleTop()})
}
$(window).resize(resizeTitles())
})
正如 charlietfl 在他们的评论中所说,问题是我调用了 resizeTiles 而不是传递引用。
$(window).resize(resizeTitles)