Я хочу позиционировать DIV «.indicator» только там, где начинается литий элемент, так , например, если я хочу, чтобы позиционировать DIV по отношению ко второй Li , я:Is getBoundingClientRect(). Left возвращает неправильное значение?
indicator.style.left = li[1].getBoundingClientRect().left+"px";
Этот мой код:
var li = document.querySelectorAll(".ulcontainer > li");
var indicator = document.querySelector(".indicator");
indicator.style.left = li[1].getBoundingClientRect().left+"px";
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
.ulcontainer {
white-space: nowrap;
padding: 0;
position: relative;
}
.ulcontainer li {
list-style: none;
display: inline-block;
border: 1px solid;
padding: 0 20px;
}
.indicator {
background-color: red;
display: inline-block;
position: relative;
}
<ul class="ulcontainer">
<li>OPTION 1</li><li>OPTION 2</li><li>OPTION 3</li>
</ul>
<div class="indicator">indicator</div>
проблема заключается в том, что DIV getBoundingClientRect() слева не возвращается.- правильное значение для элементов li. Если вы запустите пример, вы увидите, что «.индикатор» не запускает в начале текущего li.
Почему не getBoundingClientRect(). Left возвращает текущее значение?
Я думаю, что это может иметь что-то делать с вашим стилем CSS 'дисплей: встроенный блок;' и/или 'position: relative;'. Попытайтесь возиться с ними и скажите мне, если это что-то сделало. – Luke