Reputation: 109
I'm trying to contain the NavigationItem
div
within the parent div
. It keeps breaking out of the parent div
in my example. I know I could just use overflow: hidden
; but when I center items within that div it doesn't center
right. Does anyone know what I'm doing wrong?
.B2_NavigationItem {
background: #0066a2;
display: inline-block;
color: #FFFFFF;
font-size: 14px;
margin: 0px 0px 4px 0px;
text-align: left;
padding: 6px;
width: 100%;
}
.B2_NavigationItem2 {
background: #0c3655;
display: inline-block;
color: #FFFFFF;
font-size: 14px;
margin: 0px 0px 4px 0px;
text-align: center;
padding: 6px;
width: 100%;
}
.B2_NavigationItem3 {
background: #dcdcdc;
display: inline-block;
border: 0px;
color: #000000;
font-size: 14px;
margin: 0px 0px 4px 0px;
padding: 6px;
width: 100%;
}
.B2_NavigationBubble {
background: #FFFFFF;
display: inline-block;
color: #000000;
width: 90%;
margin: 0px 0px 4px 0px;
border: 1px solid #000000;
border-radius: 6px;
}
.dropdown {
float: left;
position: relative;
display: inline-block;
}
.dropdown-content {
position: absolute;
background-color: #dcdcdc;
width: 260px;
border: 4px solid #0066a2;
border-radius: 0px 0px 12px 0px;
margin: 0px 0px 0px 0px;
padding: 4px 0px 0px 0px;
z-index: 999;
}
<div class="dropdown">
<div class="dropdown-content">
<div class="B2_NavigationItem">ITEM</div>
<div class="B2_NavigationItem">ITEM</div>
<div class="B2_NavigationBubble">
<div class="B2_NavigationItem2">ITEM</div>
</div>
<div class="B2_NavigationBubble">
<div class="B2_NavigationItem2">ITEM</div>
</div>
<div class="B2_NavigationItem">ITEM</div>
</div>
</div>
here is the code on jsfiddle: https://jsfiddle.net/gt9udvay/
Upvotes: 0
Views: 2122
Reputation:
It's because of the padding
. Having a width
of 100%
of the parent and the padding
makes it wider than the width of the parent container. To fix that just apply box-sizing: border-box
to the divs
.
You can see more about box-sizing
here.
.B2_NavigationItem {
background: #0066a2;
display: inline-block;
color: #FFFFFF;
font-size: 14px;
margin: 0px 0px 4px 0px;
text-align: left;
padding: 6px;
width: 100%;
}
.B2_NavigationItem2 {
background: #0c3655;
display: inline-block;
color: #FFFFFF;
font-size: 14px;
margin: 0px 0px 4px 0px;
text-align: center;
padding: 6px;
width: 100%;
}
.B2_NavigationItem3 {
background: #dcdcdc;
display: inline-block;
border: 0px;
color: #000000;
font-size: 14px;
margin: 0px 0px 4px 0px;
padding: 6px;
width: 100%;
}
.B2_NavigationBubble {
background: #FFFFFF;
display: inline-block;
color: #000000;
width: 90%;
margin: 0px 0px 4px 0px;
border: 1px solid #000000;
border-radius: 6px;
}
.dropdown {
float: left;
position: relative;
display: inline-block;
}
.dropdown-content {
position: absolute;
background-color: #dcdcdc;
width: 260px;
border: 4px solid #0066a2;
border-radius: 0px 0px 12px 0px;
margin: 0px 0px 0px 0px;
padding: 4px 0px 0px 0px;
z-index: 999;
}
.dropdown-content div {
box-sizing: border-box; /*apply where applicable*/
}
<div class="dropdown">
<div class="dropdown-content">
<div class="B2_NavigationItem">ITEM</div>
<div class="B2_NavigationItem">ITEM</div>
<div class="B2_NavigationBubble">
<div class="B2_NavigationItem2">ITEM</div>
</div>
<div class="B2_NavigationBubble">
<div class="B2_NavigationItem2">ITEM</div>
</div>
<div class="B2_NavigationItem">ITEM</div>
</div>
</div>
Upvotes: 1
Reputation: 100
You could change padding to be 0px on the left and right like.....
.B2_NavigationItem2 {
background: #0c3655;
display: inline-block;
color: #FFFFFF;
font-size: 14px;
margin: 0px 0px 4px 0px;
text-align: center;
padding: 6px 0px;
width: 100%;
}
Upvotes: 1