Would like to set the width of child_sub
DIV 100% width so that even if I scroll the parent DIV horizontally, the child_sub
DIV should cover the parent DIV's whole width.
Here's the code:
.main {
overflow-x: scroll;
white-space: nowrap;
width: 100%;
}
.main_sub {
width:100%;
}
.main_sub_sub {
display:inline-block;
width:50px;
}
.child_sub {
width:100%;
background:darkred;
color:white;
}
<div class="main">
<div class="main_sub">
<p class="main_sub_sub">1</p>
<p class="main_sub_sub">2</p>
<p class="main_sub_sub">3</p>
<p class="main_sub_sub">4</p>
<p class="main_sub_sub">5</p>
<p class="main_sub_sub">6</p>
<p class="main_sub_sub">7</p>
<p class="main_sub_sub">8</p>
<p class="main_sub_sub">9</p>
<p class="main_sub_sub">10</p>
<p class="main_sub_sub">11</p>
<p class="main_sub_sub">12</p>
<p class="main_sub_sub">13</p>
<p class="main_sub_sub">14</p>
<p class="main_sub_sub">15</p>
<p class="main_sub_sub">16</p>
<p class="main_sub_sub">17</p>
<p class="main_sub_sub">18</p>
<p class="main_sub_sub">19</p>
<p class="main_sub_sub">20</p>
</div>
<hr>
<div class="child_sub">
<div>
some
</div>
</div>
</div>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
Here's the fiddle to play around
As you can see in the fiddle, if I scroll the parent main
DIV the child_sub
DIV which is set at 100% only covers till 10th
field in the main
DIV. I m trying to default set the child_sub
DIV to cover the full length of main
DIV.
I have come across the SO answer regarding the same query which told me to add display:table-row
to the child_sub
, But unfortunately, I couldn't make it work by myself.
Any Help is greatly appreciated.
CodePudding user response:
.child_sub
already has 100% width of the parent, overflow does not change dimensions of a div.
There are multiple ways to achieve the same result,
The easiest being to remove the .child_sub
from within the scroll
Another method is to add position: absolute
to .child_sub
CodePudding user response:
Right below your .main
set a container with display:grid;
.
<div class="main">
<div class="grid">
<div class="main_sub"></div>
<div class="child_sub"></div>
</div>
</div>
This way it will take the whole width.
.grid{
display:grid;
}
.grid hr {
width: 100%;
}
DEMO:
.main {
overflow-x: scroll;
white-space: nowrap;
width: 100%;
}
.grid{
display:grid;
}
.grid hr {
width: 100%;
}
.main_sub {
width:100%;
}
.main_sub_sub {
display:inline-block;
width:50px;
}
.child_sub {
width:100%;
background:darkred;
color:white;
}
<div class="main">
<div class="grid">
<div class="main_sub">
<p class="main_sub_sub">1</p>
<p class="main_sub_sub">2</p>
<p class="main_sub_sub">3</p>
<p class="main_sub_sub">4</p>
<p class="main_sub_sub">5</p>
<p class="main_sub_sub">6</p>
<p class="main_sub_sub">7</p>
<p class="main_sub_sub">8</p>
<p class="main_sub_sub">9</p>
<p class="main_sub_sub">10</p>
<p class="main_sub_sub">11</p>
<p class="main_sub_sub">12</p>
<p class="main_sub_sub">13</p>
<p class="main_sub_sub">14</p>
<p class="main_sub_sub">15</p>
<p class="main_sub_sub">16</p>
<p class="main_sub_sub">17</p>
<p class="main_sub_sub">18</p>
<p class="main_sub_sub">19</p>
<p class="main_sub_sub">20</p>
</div>
<hr>
<div class="child_sub">
<div>
some
</div>
</div>
</div>
</div>
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>