Сделайте родительский div с абсолютной позицией берут ширину дочерних div
У меня есть следующая структура HTML:
<div class="parent">
<div class="child1"></div>
<div class="child2"></div>
</div>
Родитель расположен абсолютно, child1 и child2 отображаются бок о бок, используя inline-block. Мне нужно, чтобы все это было отзывчивым, исходя из ширины двух дочерних элементов. проблема в том, что если я увеличу ширину любого из них, ширина родителя останется прежней. Изменение его положения на относительное исправляет это, но я должен иметь это в абсолюте. Есть ли способ заставить его реагировать?
РЕДАКТИРОВАТЬ:
Я надеялся, что это будет просто, но, видимо, не так уж много...:(вот собственно HTML:
<div class="action_container">
<div class="action_inner">
<div class="action_title">Format Text</div>
<div class="action_body">
<div class="action_args_section"></div>
<div class="action_output_section"></div>
</div>
</div>
</div>
И CSS:
<style>
.action_container {
display: block;
position: absolute;
}
.action_inner {
border: 1px solid black;
}
.action_inner {
min-width: 120px;
min-height: 50px;
background-color: white;
border: 1px solid #666;
border-radius: 5px;
}
.action_title {
font-size: 12px;
font-weight: bold;
text-align: center;
border-bottom: 1px solid #ccc;
padding: 3px;
}
.action_args_section {
display: inline-block;
box-sizing: border-box;
-moz-box-sizing: border-box;
padding: 3px;
}
.action_output_section {
display: inline-block;
width: 50px;
vertical-align: top;
box-sizing: border-box;
-moz-box-sizing: border-box;
padding: 3px;
}
</style>
8 ответов
.parent{
position: absolute;
display: table;
}
.child{
position: relative;
display: table-cell;
}
Используйте этот трюк, чтобы установить дочерние элементы в одну строку, а родительский - чтобы получить от них ширину. Не применяйте поплавки ни к чему. И помните о пустом месте: Nowrap; если вам нужно сохранить одну строку в дочерних элементах.
Вот скрипка.
.parent {
position:absolute;
height:50px;
border:1px solid red;
}
.child1 {
width:100px;
height:30px;
border:1px solid green;
}
.child2 {
width:150px;
height:30px;
border:1px solid blue;
}
<div class="parent">
<div class="child1"></div>
<div class="child2"></div>
</div>
Это то, что вы ищете?
.parent{
position:absolute;
left : 60px;
top : 60px;
width : auto;
height:auto;
border:1px solid black;
}
.parent .child{
display:inline-block;
border:1px solid blue;
}
<div class="parent">
<div class="child">aaaaaassssssssssssss</div>
<div class="child">sssssssccccccccccccccccccc</div>
</div>
Попробуйте использовать максимальную ширину, чтобы установить максимальную ширину для родительского элемента div, чтобы он не стал шире указанного.
Я сделал это легко. Изменение ширины div также меняет родителя.
<div class="parent">
<div class="child1"></div>
<div class="child2"></div>
</div>
<style>
div{border:1px solid black;}
.parent{
position:absolute;
width:auto;
height:auto;
}
.child1{
display:inline-block;
width:40px;
height:40px;
}
.child2{
display:inline-block;
width:30px;
height:40px;
}
</style>
Если вы хотите адаптивный дизайн, убедитесь, что вы используете проценты, а не значения в пикселях, потому что размер div будет рассчитываться по ширине области просмотра.
Если вы просто хотите, чтобы размер родительского элемента изменялся в зависимости от абсолютных размеров дочерних элементов div, добавьте height:auto; width:auto
к родителю. Затем измените дочерние элементы div на display:block; float:left
, Родитель изменит размер соответственно.
Обновленная демонстрация CodePen
CSS
.action_container {
display: block;
position: absolute;
height:auto;
width:auto;
}
.action_inner {
border: 1px solid black;
}
.action_inner {
min-width: 120px;
min-height: 50px;
background-color: white;
border: 1px solid #666;
border-radius: 5px;
}
.action_title {
font-size: 12px;
font-weight: bold;
text-align: center;
border-bottom: 1px solid #ccc;
padding: 3px;
}
.action_args_section {
display: block;
float:left;
box-sizing: border-box;
-moz-box-sizing: border-box;
padding: 3px;
width:300px;
border: 1px solid red;
}
.action_output_section {
display: block;
float:left;
width: 150px;
vertical-align: top;
box-sizing: border-box;
-moz-box-sizing: border-box;
padding: 3px;
border: 1px solid blue;
}
См. пример решения здесь в ссылке jsfiddle
используя эту CSS:
.parent{
position:fixed;
background-color:blue;
height:auto;
width:auto;
}
.child1{width:200px;background-color:black;height:200px;float:left;}
.child2{width:200px;background-color:red;height:200px; float:left;}
если это не то, что вы ищете, вы можете отредактировать свой CSS здесь, тогда мы можем помочь
.parent{
float: left;
posetion: absolute;
background-color: yellow;
width:auto;
height: auto;
}
.parent div{
float: left;
display: inline-block;
width: 100px;
height: 100px;
background-color: red;
}
<div class="parent">
<div class="child1">this</div>
<div class="child2">this</div>
</div>