border-radius
オーバーレイ要素にa を適用することで実行できます。
デモ
.angled-triangle {
background-color:orange;
width:200px;
height:50px;
position:relative;
overflow:hidden;
padding-left:5px;
background-clip:content-box;
}
.angled-triangle::before {
content:'';
position:absolute;
width:100%;
height:100%;
background-color:white; /*same as element's parent background*/
border-bottom-right-radius: 99% 90%;
left:5px; /*push edge out of element*/
}
最新の Chrome および Firefox でテスト済み。必要に応じて自由に値を調整してください。
このアプローチの唯一の欠点は、要素の親の背景と同じbackground-color
ものを適用する必要があることです。これは常に実行可能であるとは限りません (背景画像など)。この制限がない別の方法については、以下の更新を確認してください。::before
body
アップデート
別の実行可能な方法は、放射状グラデーションの背景を使用することです。transparent
この方法は、「空白」領域を塗りつぶすために色を使用するため、上記の方法とは異なり、任意の要素の背景に関する問題はありません。
デモ
.angled-triangle {
width:200px;
height:50px;
background-image: -moz-radial-gradient(0 0, transparent 70%, orange 71.5%);
background-image: -webkit-radial-gradient(0 0, transparent 70%, orange 71.5%);
background-image: radial-gradient(top left, transparent 70%, orange 71.5%);
background-position: 5px 0px;
background-repeat:no-repeat;
}
上記はorange
、三角形にしたい色を表しています。透明とオレンジの1.5%
間は単なる「イージング」であるため、境界線がピクセル化されて見えません。これらのブラウザーでテストしていないため、これにはベンダー プレフィックスがありません-ms
。-o