css做出响应性的椭圆形块

时间:2015-03-14 11:11:48

标签: css css3 css-shapes

我正在尝试为下面的图片中显示的数字制作一个css块。我的想法/目标是制作一个响应块,如果有一个数字,它将是圆形的,如果两个则是第二个。我已经尝试过制作border-radius:50%所以我成功做第二块的第二块不像是带有border-radius的图像:50%

所以我的问题是可以用一个类块或每个按钮(左|右)来产生这样的结果我需要为每个块写特殊的类吗?

enter image description here

3 个答案:

答案 0 :(得分:5)

固定高度解决方案

为此你需要一个“固定”的高度(否则,你需要用jquery来计算)。

你需要做的是这样的事情;

html,body{background:#222;}
div {
  margin:10px;
  display: inline-block;
  height: 30px;
  border-radius: 25px;
  background: lightblue;
  font-size: 30px;
  min-width: 30px;
  text-align: center;
  line-height: 30px;
  padding: 10px;
  position:relative;
  color:blue;
}
div:before{
  content:"";
  position:absolute;
  left:0;
  top:-10px;
  width:100%;
  border-top:3px solid tomato;
  }
<div>1</div>
<div>123</div>

注意:border-radius应设置为此总高度的一半。

我还包括一个最小宽度,以确保它始终至少是一个圆圈。


JQuery解决方案对于非固定高度

$(document).ready(function() {
  $('div').each(function(index) {
    var height = $(this).height();
    $(this).css("border-radius", height + "px");
  });
});
html,
body {
  background: #222;
}
div {
  margin: 10px;
  display: inline-block;
  border-radius: 25px;
  background: lightblue;
  font-size: 30px;
  min-width: 30px;
  text-align: center;
  line-height: 30px;
  padding: 10px;
  position: relative;
  vertical-align:top;
  color: blue;
}
div:before {
  content: "";
  position: absolute;
  left: 0;
  top: -10px;
  width: 100%;
  border-top: 3px solid tomato;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>1</div>
<div>123</div>

<div>Not a set height,
  <br/>either :)</div>

答案 1 :(得分:4)

对于椭圆使用100%:

border-radius: 100%;

体育场使用px中的大值:

border-radius: 9999px;

实施例

.round{
  display: inline-block;
  width:50px;
  height:50px;
  background: red;
  border-radius: 100%;
  margin: 10px;
}

.ellipse,.stadium{
  width: 80px;
}

.stadium{
  border-radius: 9999px;
}
<div class="round circle"></div>
<div class="round ellipse"></div>
<div class="round stadium"></div>

答案 2 :(得分:0)

&#13;
&#13;
div{
	height:50px;
	width:50px;
	border-radius:9999px;
	background:red;
	text-align:center;
	display:inline-block;
	line-height:3em;
	font-weight:bold;
	font-size:16px;
		}
&#13;
<div>2</div>
 <div>28</div>
&#13;
&#13;
&#13;