用CSS圆角梯形

Cor*_*ius 4 css border rounding css3

我对css有点小问题.我需要一个梯形div,其左上角(角度大于90度的那个)是圆形的.我已经知道了这个:

HTML:

<div style="margin:30px">
  <div class="trapezoid">
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.trapezoid{
  vertical-align: middle;
  border-bottom: 31px solid red;
  border-left: 25px solid transparent;
  height: 0;
  width: 150px;
}
Run Code Online (Sandbox Code Playgroud)

产生一个梯形.我尝试了这个border-top-left-radius属性,但效果还不够.

这里有一个jsfiddle上面的代码,好吧,摆弄:http://jsfiddle.net/n3TLP/5/

我需要更多信息才能评论.
提前致谢 :)

Wes*_*rch 7

虽然我认为你最好使用<canvas>/ SVG绘制这个形状,但这很接近你想要的:

.trapezoid{
    vertical-align: middle;
    border-bottom: 120px solid red;
    border-left: 200px solid transparent;
    border-top-left-radius:30px;
    height: 0;
    width: 150px;}

/* ---------- */

.trapezoid {
    position:relative;
}
.trapezoid:after {
    content:' ';
    left:-14px;
    top:-10px;
    position:absolute;
    background:red;
    border-radius:40px 0 0 0;
    width:164px;
    height:40px;
    display:block;
}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/n3TLP/20/

它并不完美,你必须使用数字来获得你想要的尺寸,它非常挑剔.你可能对Raphaël这样的绘画感兴趣,CSS并不具备复杂形状的能力(至少不是故意的).


met*_*ion 7

不是你应该这样做,但你也可以通过应用CSS 3d转换创建一个带有单个元素的圆角梯形:

.trapezoid {
  position: relative;
  width: 300px;
  height: 200px;
  overflow: hidden;
}

.trapezoid:after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 200%;
  height: 100%;
  background: red;
  border-radius: 20px 0 0 0;
  -webkit-transform-origin: 100% 100%;
  -moz-transform-origin: 100% 100%;
  -ms-transform-origin: 100% 100%;
  -o-transform-origin: 100% 100%;
  transform-origin: 100% 100%;
  -webkit-transform: perspective(400px) rotateX(45deg);
  -moz-transform:  perspective(400px) rotateX(45deg);
  -ms-transform: perspective(400px) rotateX(45deg);
  -o-transform: perspective(400px) rotateX(45deg);
  transform: perspective(400px) rotateX(45deg);
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/RzJTP/