Я пытаюсь создать меню, которое может содержать неопределенное количество объектов;размеры указанных объектов зависят от доступной ширины (ширины меню).Высота меню никогда не должна превышать определенного значения и по-прежнему содержать все дочерние объекты, то есть дочерние элементы могут уменьшаться при сохранении пропорций, но никогда не выходить за пределы «области содержания».
Примерно так:
add = () => {
const menuObject = document.createElement('div')
menuObject.classList.add('menu-element')
const menu = document.getElementById('menu')
menu.appendChild(menuObject)
}
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
button{
padding: 40px;
}
.bounds{
position: absolute;
border: 2px dashed black;
width: 10%;
right: 8px;
bottom: 8px;
height: 60%;
box-sizing: content-box;
}
.menu{
position: absolute;
width: 10%;
right: 10px;
bottom: 10px;
background-color: chocolate;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-end;
}
.menu-element{
width: 100%;
background-color: dodgerblue;
margin: 5%;
}
.menu-element::before{
content: "";
padding-top: 100%;
display: block;
}
<body>
<button onclick="add()">Add item</button>
<div class="bounds">
Items should never leave this box
</div>
<div id="menu" class="menu"></div>
</body>
Я попытался установить атрибут max-height
для меню, но это не меняет его ширину, которая, в конечном счете, является значением, котороеконтролирует всю схему размеров.Я ищу решение только для CSS, если оно вообще возможно, и любой свет, который можно пролить на этот вопрос, будет принят с благодарностью.