我想在圆圈内显示通知计数,但我不希望它具有固定的宽度,因此当圆圈内有更大的数字/文字时,圆圈可以展开。
.circle {
height: 20px;
width: 20px;
line-height: 20px;
border-radius: 50%;
background-color: red;
color: white;
text-align: center;
}
<div class="circle">5</div>
<br>
<div class="circle">102</div>
答案 0 :(得分:12)
请参阅此仅CSS解决方案。为1位数字设置min-width
和min-height
的相同值。使用伪元素进行垂直对齐并保持方形。 border-radius
适用于圆圈的容器。
.circle {
display: inline-block;
border-radius: 50%;
min-width: 20px;
min-height: 20px;
padding: 5px;
background: red;
color: white;
text-align: center;
line-height: 1;
box-sizing: content-box;
white-space: nowrap;
}
.circle:before {
content: "";
display: inline-block;
vertical-align: middle;
padding-top: 100%;
height: 0;
}
.circle span {
display: inline-block;
vertical-align: middle;
}
&#13;
<div class="circle"><span>8</span></div>
<div class="circle"><span>64</span></div>
<div class="circle"><span>512</span></div>
<div class="circle"><span>4096</span></div>
&#13;
答案 1 :(得分:2)
这太苛刻了,但它似乎可以查看所有主流浏览器&#39;最新版本,所以无论如何我都会发布它。基本原则是基于百分比的填充(甚至顶部和底部填充)相对于父级的宽度。将其设置为100%
,宽度和高度为0
理论上意味着元素的高度始终等于宽度。将它与伪元素相结合,您甚至不需要更改标记。我使用flexbox来纠正内容的居中。它似乎适用于我测试过的浏览器,但这肯定取决于最新版本,因为它使用flexbox
和display:table
。我还必须添加一个min-width
,以确保它不会因为内容太少而变形。
.circle {
background-color: red;
color: white;
text-align: center;
position: relative;
border-radius: 50%;
min-width: 1.25em;
display: inline-flex;
align-items: center;
justify-content: center;
}
.circle:after {
content: '';
padding-top: 100%;
display:table;
}
&#13;
<div class="circle">5</div>
<br>
<div class="circle">102</div>
<br>
<div class="circle">4298347918</div>
&#13;
答案 2 :(得分:1)
简单的CSS,几乎可以使用:
.circle {
position: relative;
border-radius: 50%;
width: 100%;
height: auto;
padding-top: 100%;
}
诀窍在于,填充顶部是根据宽度计算的,因此您可以将其用于宽度等于宽度的
答案 3 :(得分:0)
尝试使用border-radius:50%并设置max-width和height
答案 4 :(得分:-1)