回答:
CSSを使用できます(これはIEの古いバージョンでは機能しないことに注意してください)。
たとえば、長方形と2つの三角形のような形状を組み合わせることができます。このjsfiddleを参照してください。
HTML:
<div id="square"></div>
<div class="align">
<div id="triangle-topleft"></div>
<div id="triangle-topright"></div>
</div>
そして、CSS:
#triangle-topright {
width: 0;
height: 0;
border-top: 40px solid red;
border-left: 100px solid transparent;
}
#triangle-topleft {
width: 0;
height: 0;
border-top: 40px solid red;
border-right: 100px solid transparent;
}
#square {
background-color:red;
clear:both;
height:60px;
width:200px;
}
.align div {
float: left;
}
ここでさまざまなCSS形状を見ることができます。すべてではないにしても、ほとんどの場合、1つ以上のdivが必要になるため、課題はより暗い境界線を適用することです。
:before
し、:after
あなたの保つためにhtml
「クリーン」。:before
左の三角形、だろう:after
正しいもの。
Yiselaの答えは確かですが、私はこの代替案を提案すると思いました。CSSシェイプとクリップパスでポリゴンまたは画像URIを使用します。ここに簡単なチュートリアルがあります。
このメソッドは、現時点では三角形のボーダートリックよりも少ないブラウザーで動作することに注意してください。ただし、より複雑なシェイプを使用する場合や、テキストをシェイプにラップする場合は、これが最適な方法です。
vw
ユニットによって。その音は可能ですか?
サポートが制限される可能性のある別の方法は、「CSSにSVGを埋め込む」です。私自身はこれを試していませんが、イメージリソースをオブジェクトのcss宣言内のURLとして提供し、データを含む適切にエスケープされたURLを渡すという考えです。
SVGはプレーンテキスト/ xml形式です。ポリゴンの例(w3schoolsから):
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<polygon points="200,10 250,190 160,210"
style="fill:lime;stroke:purple;stroke-width:1"/>
</svg>
インライン(埋め込み)SVG(簡略化)の例(stackoverflowから):
url("data:image/svg+xml;utf8, <svg></svg>");
SVGデータは、インラインで使用するために適切に「エスケープ」する必要があることに注意してください。これにより、SVGファイルを単にリンクする場合よりも魅力がやや低下します。
上記のリンクされたスレッドのメソッドの実行可能性に関する議論があります。白塗りの三角形のような単純なものを埋め込むことは、サポートがあれば簡単な決定だと思います。複雑なSVG形式のデータは、インラインではなくSVGファイルとして保存する必要があります。
SVGファイルはベクトルであり、「境界線」メソッドとは異なり、パーセンテージでスケーリングできます。また、それらは(現在)リストされているクリッピングパスメソッドよりも優れた(少なくとも非インライン)サポートを持っています。プレーンテキストであるSVGは、PHPなどのサーバー側スクリプトを使用して、その場で出力することもできます。
画像上の青い領域が透明なpngで、白い領域が透明な場合、このHTMLを含めて影を落とす必要があります。
<svg height="0" xmlns="http://www.w3.org/2000/svg">
<filter id="drop-shadow">
<feGaussianBlur in="SourceAlpha" stdDeviation="4"/>
<feOffset dx="12" dy="12" result="offsetblur"/>
<feFlood flood-color="rgba(0,0,0,0.5)"/>
<feComposite in2="offsetblur" operator="in"/>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</svg>
そして、画像にこのCSSを使用します:
.shadowed {
-webkit-filter: drop-shadow(12px 12px 25px rgba(0,0,0,0.5));
filter: url(#drop-shadow);
-ms-filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=12, OffY=12, Color='#444')";
filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=12, OffY=12, Color='#444')";
}
これは完全にクロスブラウザのソリューションです。