Circle Goes Outside Of Parent Div
Solution 1:
We can fix everything with just one line:
add box-sizing: border-box
to .player-thumb
:
.player-holder {
height: 100px;
max-width: 100px;
min-width: 50px;
}
.player-thumb {
box-sizing: border-box;
margin: auto;
height: 100%;
min-width: 50px;
width: 100px;
border-radius: 100%;
border: 1px solid #ccc;
overflow: hidden;
background-color: #f8f8f8;
background-image: url("chat-icon.png");
background-repeat: no-repeat;
background-position: center center;
background-size: 50px;
}
<divclass="player-holder"><ahref="#"><divclass="player-thumb"></div></a></div>
Since no-one explained why it is happening, here is the explanation on what is going on:
In CSS there is a property called box-sizing
(Documentation on MDN), which defines how the dimensions of an element are calculated. There are three options;
- content-box
- padding-box
- border-box
Note: I'm omitting initial
and inherit
, because they depend on default values or parent values.
The image below shows you what the options capture:
Source (Image re-uploaded at Stack Overflow, because direct link didn't work)
Content-box is the default, which means whenever you define a width and height, the padding and border sizes are not included in those sizes.
Lets say you define a div which has a height of 100 pixels, the padding-top is 30 pixels and there is a border at the bottom that's 10 pixels:
.random_div {
height: 100px;
padding-top: 30px;
border-bottom: 1px solid #FFFFFF;
}
Now we'll have to choose a setting for box-sizing:
Content-box:
When you wouldn't change the box-sizing, the div would get a total height of 140 pixels (100 + 30 + 10).
Padding-box:
When you set box-sizing to padding-box, the div would get a total height of 110 pixels (100 + 10). This is because padding is now included in the 100 pixels of height. This leaves you with 70 pixels of space for content.
Border-box:
When you set box-sizing to border-box, the div would get a total height of 100 pixels. All the sizes are included into the height of the div.
Which one you use is up to you. I usually set most of my elements to border-box, because that works for me.
Solution 2:
You have the circle border and so the actual circle width will be of 102px;
See this pen to see how it behaves:
If you need the circle border, then add 2px to the parent div. Also check the circle height;
.player-holder {
height: 100px;
max-width: 102px;
min-width: 50px;
background-color: red;
}
.player-thumb {
margin: auto;
height: calc(100% - 2px);
min-width: 50px;
width:100px;
border-radius: 100%;
border: 1px solid #ccc;
overflow: hidden;
background-color: #f8f8f8;
background-image: url("chat-icon.png");
background-repeat: no-repeat;
background-position: center center;
background-size: 50px;
}
Post a Comment for "Circle Goes Outside Of Parent Div"