#html #css
#HTML #css
Вопрос:
У меня есть два дочерних подразделения внутри родительского подразделения. Первый дочерний div составляет 32% от ширины, а второй дочерний div составляет 68% от ширины. Если для первого дочернего div установлено значение display: none;
, как мне сделать так, чтобы второй дочерний div увеличивался с 68% ширины до 100% ширины? Спасибо
.parent {
width: 400px;
height: 200px;
position: relative;
float: left;
display: inline-block;
}
.child1 {
width: 32%;
height: 100%;
float: left;
background-color: green;
}
.child2 {
width: 68%;
height: 100%;
float: left;
background-color: red;
}
<div class='parent'>
<div class='child1'></div>
<div class='child2'></div>
</div>
Комментарии:
1. Я бы настоятельно рекомендовал вам использовать flex вместо floats.
Ответ №1:
Я бы использовал магию flex!
flex: 0 0 32%;
On child1 устанавливает ширину равной 32%.
flex: 1;
для дочерняго2 означает: Заполнить все доступное пространство. Таким образом, если дочерний элемент1 исчезнет, дочерний элемент 2 заполнит все оставшееся пространство.
.parent {
width: 400px;
height: 200px;
display: flex;
}
.child1 {
flex: 0 0 32%;
background-color: green;
}
.child2 {
flex: 1;
background-color: red;
}
<div class='parent'>
<div class='child1'></div>
<div class='child2'></div>
</div>
Ответ №2:
Если вы используете flex вместо float, установка display: none
одного из них адаптирует другое для вас:
document.querySelector('button').addEventListener('click', () => {
document.querySelector('.child1').classList.toggle('hidden');
})
.parent {
width: 400px;
height: 200px;
position: relative;
display: flex;
}
.child1 {
flex: 0 0 32%;
background-color: green;
}
.child2 {
flex: 1 1 auto;
background-color: red;
}
.hidden {
display: none;
}
button {
margin-bottom: 1em;
}
<button>Toggle child1 visibility</button>
<div class='parent'>
<div class='child1'></div>
<div class='child2'></div>
</div>
Комментарии:
1. Черт, я только что опубликовал точно такой же ответ: D Я вернусь к своему пиву и почитаю об условиях гонки. Примите мой голос и приветствия
Ответ №3:
Здесь вместо использования свойства float вы можете использовать Flexbox. для получения более подробной информации перейдите по этой ссылке.
итак, в flexbox вы можете достичь этого, следуя приведенному ниже коду :-
.parent {
width: 400px;
height: 200px;
display: flex;
}
.child1 {
height: 100%;
background-color: green;
flex:1;
}
.child2 {
// display:none;
height: 100%;
flex:2;
background-color: red;
}
<div class='parent'>
<div class='child1'></div>
<div class='child2'></div>
</div>
Ответ №4:
вот как вы можете добиться этого, используя свой подход.
<div class="parent">
<div class="child1"></div>
<div class="child2"></div>
</div>
.parent {
width: 400px;
height: 200px;
font-size: 20px;
font-weight: bold;
color: white;
}
.child1 {
width: 32%;
height: 100%;
float: left;
background-color: green;
}
.child2 {
width: 100%;
height: 100%;
background-color: blue;
}