Reputation:
I have this index menu, and i'm trying to make all the links in the div have the same width, so they always fill the container.
The result should be: At start of div, we have A
and at the end we have Z (or the last element in the div)
As you can see it doesn't stretch at the moment. Is there some way to do it?
div{
width:100%;
display: block;
border: 1px solid #000;
padding: 10px;
}
div a{
display: inline-block;
}
<div>
<a href="Index.aspx?index=A">A</a>
<a href="Index.aspx?index=B">B</a>
<a href="Index.aspx?index=C">C</a>
<a href="Index.aspx?index=D">D</a>
<a href="Index.aspx?index=E">E</a>
<a href="Index.aspx?index=F">F</a>
<a href="Index.aspx?index=G">G</a>
<a href="Index.aspx?index=H">H</a>
<a href="Index.aspx?index=I">I</a>
<a href="Index.aspx?index=J">J</a>
<a href="Index.aspx?index=K">K</a>
<a href="Index.aspx?index=L">L</a>
<a href="Index.aspx?index=M">M</a>
<a href="Index.aspx?index=N">N</a>
<a href="Index.aspx?index=O">O</a>
<a href="Index.aspx?index=P">P</a>
<a href="Index.aspx?index=Q">Q</a>
<a href="Index.aspx?index=R">R</a>
<a href="Index.aspx?index=S">S</a>
<a href="Index.aspx?index=T">T</a>
<a href="Index.aspx?index=U">U</a>
<a href="Index.aspx?index=V">V</a>
<a href="Index.aspx?index=W">W</a>
<a href="Index.aspx?index=X">X</a>
<a href="Index.aspx?index=Y">Y</a>
<a href="Index.aspx?index=Z">Z</a>
</div>
Upvotes: 1
Views: 110
Reputation: 205
If I understand you correctly, you want to make something like a Menu, which always adapts to the length of the div.
My idea is to set the width of the <a></a>
elements
with the formula: 100 devided by the number of elements.
But thats not the best way I think.
div a{
display: inline-block;
text-align: center;
width: 3.5%;
}
Maybe this could help you :U
Upvotes: 0
Reputation: 1352
I think in this situation is better to use flex, so it could be something like :
Same html file :
<div>
<a href="Index.aspx?index=A">A</a>
<a href="Index.aspx?index=B">B</a>
<a href="Index.aspx?index=C">C</a>
<a href="Index.aspx?index=D">D</a>
<a href="Index.aspx?index=E">E</a>
<a href="Index.aspx?index=F">F</a>
<a href="Index.aspx?index=G">G</a>
<a href="Index.aspx?index=H">H</a>
<a href="Index.aspx?index=I">I</a>
<a href="Index.aspx?index=J">J</a>
<a href="Index.aspx?index=K">K</a>
<a href="Index.aspx?index=L">L</a>
<a href="Index.aspx?index=M">M</a>
<a href="Index.aspx?index=N">N</a>
<a href="Index.aspx?index=O">O</a>
<a href="Index.aspx?index=P">P</a>
<a href="Index.aspx?index=Q">Q</a>
<a href="Index.aspx?index=R">R</a>
<a href="Index.aspx?index=S">S</a>
<a href="Index.aspx?index=T">T</a>
<a href="Index.aspx?index=U">U</a>
<a href="Index.aspx?index=V">V</a>
<a href="Index.aspx?index=W">W</a>
<a href="Index.aspx?index=X">X</a>
<a href="Index.aspx?index=Y">Y</a>
<a href="Index.aspx?index=Z">Z</a>
</div>
But the css have to be :
div{
width:100%;
display:flex;
border: 1px solid #000;
padding: 10px;
}
div a{
flex-grow:1;
display: inline-block;
}
So flex-grow allow you to do this but 1 is the magic number, according to its definition :
If all items have flex-grow set to 1, the remaining space in the container will be distributed equally to all children.
I hope it can helps you.
Upvotes: 1
Reputation: 2446
these rules will do:
display: flex;
justify-content: space-around;
div{
width:100%;
border: 1px solid #000;
padding: 10px;
display: flex;
justify-content: space-around;
}
div a{
display: inline-block;
}
<div>
<a href="Index.aspx?index=A">A</a>
<a href="Index.aspx?index=B">B</a>
<a href="Index.aspx?index=C">C</a>
<a href="Index.aspx?index=D">D</a>
<a href="Index.aspx?index=E">E</a>
<a href="Index.aspx?index=F">F</a>
<a href="Index.aspx?index=G">G</a>
<a href="Index.aspx?index=H">H</a>
<a href="Index.aspx?index=I">I</a>
<a href="Index.aspx?index=J">J</a>
<a href="Index.aspx?index=K">K</a>
<a href="Index.aspx?index=L">L</a>
<a href="Index.aspx?index=M">M</a>
<a href="Index.aspx?index=N">N</a>
<a href="Index.aspx?index=O">O</a>
<a href="Index.aspx?index=P">P</a>
<a href="Index.aspx?index=Q">Q</a>
<a href="Index.aspx?index=R">R</a>
<a href="Index.aspx?index=S">S</a>
<a href="Index.aspx?index=T">T</a>
<a href="Index.aspx?index=U">U</a>
<a href="Index.aspx?index=V">V</a>
<a href="Index.aspx?index=W">W</a>
<a href="Index.aspx?index=X">X</a>
<a href="Index.aspx?index=Y">Y</a>
<a href="Index.aspx?index=Z">Z</a>
</div>
Upvotes: 2
Reputation: 8210
Use flexbox (display: flex
) in combination with justify-content: space-between;
on your div.
div{
width: 100%;
display: flex;
border: 1px solid #000;
padding: 10px;
justify-content: space-between;
}
div a{
display: inline-block;
}
<div>
<a href="Index.aspx?index=A">A</a>
<a href="Index.aspx?index=B">B</a>
<a href="Index.aspx?index=C">C</a>
<a href="Index.aspx?index=D">D</a>
<a href="Index.aspx?index=E">E</a>
<a href="Index.aspx?index=F">F</a>
<a href="Index.aspx?index=G">G</a>
<a href="Index.aspx?index=H">H</a>
<a href="Index.aspx?index=I">I</a>
<a href="Index.aspx?index=J">J</a>
<a href="Index.aspx?index=K">K</a>
<a href="Index.aspx?index=L">L</a>
<a href="Index.aspx?index=M">M</a>
<a href="Index.aspx?index=N">N</a>
<a href="Index.aspx?index=O">O</a>
<a href="Index.aspx?index=P">P</a>
<a href="Index.aspx?index=Q">Q</a>
<a href="Index.aspx?index=R">R</a>
<a href="Index.aspx?index=S">S</a>
<a href="Index.aspx?index=T">T</a>
<a href="Index.aspx?index=U">U</a>
<a href="Index.aspx?index=V">V</a>
<a href="Index.aspx?index=W">W</a>
<a href="Index.aspx?index=X">X</a>
<a href="Index.aspx?index=Y">Y</a>
<a href="Index.aspx?index=Z">Z</a>
</div>
Upvotes: 6