gpt4 book ai didi

javascript - 如何水平滚动 DIV 到容器中心?

转载 作者:行者123 更新时间:2023-11-28 03:12:26 26 4
gpt4 key购买 nike

我有一个包含 2 个 DIV 的容器。当我单击一个按钮时,我试图将黄色 DIV 在容器中水平居中。但是,如果我多次单击按钮,它会来回滚动,如果我手动滚动容器然后单击按钮,黄色 DIV 永远不会滚动到 View 中。

这是 jsfiddle。如果您一遍又一遍地单击该按钮,它将来回滚动。为什么这样做?: https://jsfiddle.net/nug4urna/

HTML:

<div id='container'>
<div id='blue'></div>
<div id='yellow'></div>
</div>
<div id='mybutton'>
click to scroll yellow div into view
</div>
<div id='log'>
</div>

脚本:

function scrollDivIntoView(id) {
var elOffset = $(id).offset().left;
var elWidth = $(id).width();
var containerWidth = $('#container').width();
var offset = elOffset - ((containerWidth - elWidth) / 2);

$('#container').scrollLeft(offset);

var _log = 'elOffset = ' + elOffset + '<br>';
_log += 'elWidth = ' + elWidth + '<br>';
_log += 'containerWidth = ' + containerWidth + '<br>';
_log += 'offset = ' + offset;

$('#log').html(_log);
}

$(document).ready(function() {
$('body').on('click', '#mybutton', function(){
scrollDivIntoView('#yellow');
});
});

CSS:

#container{
width:100%;
height:150px;
border:1px solid red;
display:inline-block;
white-space:nowrap;
overflow-y:hidden;
overflow-x:auto;
}
#blue{
width:2000px;
height:100px;
background-color: blue;
margin:5px;
display:inline-block;
}
#yellow{
width:200px;
height:100px;
background-color: yellow;
margin:5px;
display:inline-block;
}
#mybutton{
margin-top:10px;
cursor:pointer;
background-color:black;
color:white;
width:400px;
padding:4px;
text-align:center;
}

最佳答案

如果将第一行更改为 var elOffset = $(id)[0].offsetLeft;,那么原始代码在任何情况下都能正常工作。

有关详细信息,请参阅以下内容: https://javascript.info/size-and-scroll

关于javascript - 如何水平滚动 DIV 到容器中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45639372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com