矩形,有一个斜边

时间:2014-11-21 23:56:05

标签: css css3 geometry

我正在寻找一种CSS方法来使一个div的侧面倾斜,但边缘半径在顶部。例如

enter image description here

具有变换偏斜的解决方案不起作用,因为我需要正确的border-radius。 提前谢谢!

3 个答案:

答案 0 :(得分:3)

这个怎么样?我在标签的两个部分做了不同的颜色,所以你可以看到它们的轮廓。



.tab {
    display: inline-block;
    border: 1px solid black;
}
.tab .left {
    background-color: pink;
    border: solid red;
    border-width: 3px 0 0 3px;
    border-radius: 10px 0 0 0;
    height: 20px;
    padding: 0 10px;
    float: left;
}
.tab .right {
    background-color: #8080FF;
    border: solid blue;
    border-width: 3px 3px 0 0;
    width: 20px;
    height: 20px;
    border-radius: 0 10px 0 0;
    float: left;
    transform: skew(30deg);
    transform-origin: 0 100%;
}

<div class="tab">
    <div class="left">TextTexT</div>
    <div class="right"></div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

演示 - http://jsfiddle.net/bu4aps5a/

使用伪元素:after

div {
  width: 100px;
  height: 40px;
  border: 1px solid grey;
  border-right: 1px solid transparent;
  border-top-left-radius: 5px;
  border-top-right-radius: 6px;
  position: relative;
  background: rgb(219, 219, 219);
  text-align: center;
  line-height: 40px;
}
div:after {
  content: '';
  width: 20px;
  height: 100%;
  position: absolute;
  transform: skewX(25deg);
  border: 1px solid grey;
  border-left: 1px solid transparent;
  top: -1px;
  right: -11px;
  border-top-right-radius: 6px;
  background: rgb(219, 219, 219);
}
<div>test</div>

答案 2 :(得分:1)

这是一个没有任何CSS的svg解决方案:

<svg width="95" height="46">
    <path d="M1,9 Q1,1 9,1 L70,1 Q76,0 80,9 L95,45 L1,45z" fill="#EEEEEE" stroke="#818185" stroke-width="1" />
    <text x="25" y="29" font-size="18" font-weight="500" fill="#414145">Hits</text>
</svg>