响应式CSS圆形,可以容纳居中的内容

5
我正在寻找一种创建响应式CSS3圆形的方法,可以容纳居中的内容。关于圆形,我在这个问题中找到了一些好的信息。可惜似乎无法在其中居中内容。 这个问题也与我的问题非常相似,尽管是应该居中的图像。在我的情况下,使用背景图像不是一个选项,所以这个选项对我也没用。
你有什么想法如何解决这个问题吗?当然,我可以使用图像,但CSS会更加优雅!

你考虑过使用SVG吗?你希望圆圈以何种方式响应 - 是针对浏览器窗口还是内容? - robertc
内容的高度是固定的吗? - Thanh Trung
我刚试了SVG - 效果很棒,尽管我仍在寻找只使用CSS的解决方案。是的,内容的高度是固定的。 - Sven
@Sven:我之前发布了一个答案,但是它没有响应式圆圈,后来我注意到这是你的要求,所以我将其删除了。现在我已经发布了一个更新的答案,其中包含我认为你想要的响应性。 - ScottS
3个回答

5

需要许多额外包装的纯CSS

更新:原始发布(已删除)忽略了您正在寻找响应式设计的事实。在您引用的响应式圆形问题的答案基础上构建,似乎在所有CSS3浏览器中都可以工作,请查看fiddle

HTML(需要五个级别的包装器,在此HTML中仅显示一个圆形)

<div class="circles">
    <div>
      <div>
        <div>
          <div>
            <!-- BEG Content -->
            All types of content (see fiddle)
            <!-- END Content -->
          </div>
        </div>
      </div>
    </div>
    <!-- ditto the above 3 more times -->
</div>

CSS

.circles{
    margin:0px auto;
}
.circles > div {
    overflow:hidden;
    float:left;
    width:auto;
    height:auto;
    position: relative;
    border-radius:50%;
    -moz-border-radius:50%;
    -webkit-border-radius:50%;
    -khtml-border-radius: 50%;
    background:#eee;
}

.circles > div > div {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
}
.circles > div > div > div {
    display: table;
    width: 100%;
    height: 100%;
}
.circles > div > div > div > div {
    display: table-cell;
    text-align: center;
    vertical-align: middle;
}

@media (max-width: 320px)
{
    .circles > div {padding: 50%;}
}

@media (min-width: 321px) and (max-width: 800px)
{
    .circles > div {padding: 25%;}
}

@media (min-width: 801px)
{
    .circles{width:800px}
    .circles > div {padding: 12.5%;}
}

1
接受的答案对我没有用,因为我想旋转圆圈。 这个可以做到:
HTML
<div class="mycircle">
  <div class="mycontent">
    <span>TEXT</span>
  </div>
</div>

CSS

.mycircle {
  width: 30%; 
  height: 0;
  padding: 15% 0; //padding top & bottom must equal width 
  border-radius: 50%;
  -moz-border-radius: 50%; 
  -webkit-border-radius: 50%; 
  background: #dedede; 
}
.mycontent {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  text-align: center;
}
.mycontent:before {
  content: '';
  vertical-align: middle;
  display: inline-block;
  width: 0;
  height: 100%;
}

.mycontent span {
  vertical-align: middle;
  display: inline-block;
}

1
如果内容的高度是固定的,并且您想使用CSS方法,请使用以下属性应用于圆形内部的内容。
margin: auto; /*will center the element*/
position: relative;
top: 50%;
margin-top: - [here insert the height of the element if you know in advance / 2]px

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接