CSS - 创建圆角矩形

时间:2014-12-30 08:38:41

标签: css html5 css3 graphics css-shapes

有没有办法使用CSS创建一个圆形按钮,如图所示(不使用Canvas或SVG)?

rounded rectangle

编辑:我不是在谈论border-radius,请参阅图片

3 个答案:

答案 0 :(得分:6)

使用:after:before:伪元素可以实现这一点。

div {
  position: relative;
  margin: 30px;
  width: 150px;
  height: 100px;
  background: #FF5656;
  border-radius: 1000px / 200px;
}
div:after, div:before {
  position: absolute;
  content: '';
  width: 10px;
  height: 72%;
  border-top-left-radius: 200px 1000px;
  border-bottom-left-radius: 200px 1000px;
  left: -6px;
  top: 14%;
  background: #FF5656;
}
div:after {
  border-radius: 0;
  border-top-right-radius: 200px 1000px;
  border-bottom-right-radius: 200px 1000px;
  left: calc(100% - 4px);
}
<div></div>


将这些边框应用于input元素:

因为,你不能将伪元素应用于input个元素,你必须将:after:before:伪元素应用于它的容器。

input {
  width: 150px;
  height: 100px;
  background: #FF5656;
  border-radius: 1000px / 200px;
  border: 0;
  cursor: pointer;
  color: black;
  font-size: 16px;
}
input::-moz-focus-inner {
  border: 0;
}
input:focus {
  outline: none;
}
.btn-container {
  position: relative;
  width: 150px;
  height: 100px;
  margin: 30px;
}
.btn-container:after,
.btn-container:before {
  position: absolute;
  content: '';
  width: 10px;
  height: 72%;
  border-top-left-radius: 200px 1000px;
  border-bottom-left-radius: 200px 1000px;
  left: -6px;
  top: 14%;
  background: #FF5656;
}
.btn-container:after {
  border-radius: 0;
  border-top-right-radius: 200px 1000px;
  border-bottom-right-radius: 200px 1000px;
  left: calc(100% - 4px);
}
<div class="btn-container">
  <input type="button" value="Button" />
</div>


在评论中提及@ misterManSam时,您还可以使用button元素来避免使用容器。

button {
  position: relative;
  width: 150px;
  height: 100px;
  background: #FF5656;
  border-radius: 1000px / 200px;
  border: 0;
  cursor: pointer;
  color: black;
  font-size: 16px;
}
button::-moz-focus-inner {
  border: 0;
}
button:focus {
  outline: none;
}
button:after,
button:before {
  position: absolute;
  content: '';
  width: 10px;
  height: 72%;
  border-top-left-radius: 200px 1000px;
  border-bottom-left-radius: 200px 1000px;
  left: -6px;
  top: 14%;
  background: #FF5656;
}
button:after {
  border-radius: 0;
  border-top-right-radius: 200px 1000px;
  border-bottom-right-radius: 200px 1000px;
  left: calc(100% - 4px);
}
<button>Button</button>

答案 1 :(得分:0)

#example1 {
-moz-border-radius: 15px;
border-radius: 15px;
}

答案 2 :(得分:0)

试试这个

<input type='button' class='rectangle' />

CSS

.rectangle{
width: 150px;
height: 100px;
background-color:red;
border:1px solid red;
border-radius: 25px;
}