Таким образом, у меня есть панель, которая содержит много меньших элементов div, каждый из которых имеет один и тот же класс.
.outer-bar{
width: 100%;
height: 50px;
background-color: blue;
}
.outer-bar button {
width: 50px;
height: 40px;
outline: none;
background-color: white;
border: none;
margin-top: 5px;
margin-bottom: 5px;
float: left;
margin-left: 2px;
}
<div class = "outer-bar">
<button class = "a">Hi</button>
<button class = "a">Hi</button>
<button class = "a">Hi</button>
<button class = "a">Hi</button>
<button class = "a">Hi</button>
<button class = "a">Hi</button>
<button class = "a">Hi</button>
<button class = "a">Hi</button>
<button class = "a">Hi</button>
</div>
Когда размер окна изменился, я хочу, чтобы окно показывало только их достаточно, чтобы не было переполнения, но их может быть как можно больше.
Итак, используя: window.addEventListener("resize", function() {} );
, есть ли способ реализовать это?
Один замечательный пример, который я видел, был на Документах Google , где их панель автоматически настраивалась.
Я бы предпочел сделать это с Javascript и CSS и без Jquery или с внешними библиотеками. (Обратите внимание, что я упростил ширину и количество элементов в целях иллюстрации, хотя основная идея c остается прежней). Я также предпочитаю использовать циклы for и document.getElementsByClassName("a")
.
. Я уже запустил его с помощью:
var ribbon = document.getElementsByClassName("outer-bar")[0];
var prevChild = 0;
for(var i = 0; i < ribbon.children.length; i++) {
if(ribbon.children[i].getBoundingClientRect().right < prevChild) {
for(var c = i; c < ribbon.children.length; c++) {
ribbon.children[c].style.display = "none";
}
break;
}
prevChild = ribbon.children[i].getBoundingClientRect().right;
}
Хотя этот метод не позволяет отображать дочерние элементы после изменения размера окна до быть больше.