これは基本的に私が達成したいことです --> https://jsfiddle.net/tak1pyt7/1/
.clip {
width: 500px;
height: 500px;
-webkit-clip-path: polygon(100% 0, 100% 81%, 82% 100%, 0 100%, 0 0);
clip-path: polygon(100% 0, 100% 81%, 82% 100%, 0 100%, 0 0);
}
body {
background-image: radial-gradient(circle, #3F9CBA 0%, #153346 100%);
height: 100%;
width: 100%;
}
<body>
<div class="clip">
<img src="http://lorempixel.com/600/600/" width="100%" height="100%" />
</div>
</body>
私には解決策がありますが、フィドルのコードには次のようなさまざまな問題があります。
- クリップ パスがサポートされていないため、IE または Edge では機能しません。
- クリップ パスは、Firefox の CSS シェイプをサポートしていません。Firefox で機能させる必要がある場合は、インライン svg を指定する必要があります。
- インライン svg も提供しようとしましたが、私の要件を解決しない独自の問題があります。コンテナの高さと幅に関係なく、カット寸法を同じにする必要があります。現在、画像をカットするインライン svg を使用すると、高さと幅の変化に応じて寸法が変化します。つまり、カットはレスポンシブです。カットの静的寸法が必要です。
上記のソリューション以外に、コーナーをカットしたdivを作成するのに役立つソリューションをたくさん検索しましたが、後ろにしっかりした背景がないため、カット自体が透明です。
調査したその他のソリューション
CSS3 グラデーション サンプルの使用
- サンプル --> http://jsfiddle.net/spdawson/3Tc8S/light/
- 投稿の冒頭で提供したフィドルなど、領域の高さと幅全体を占めるコンテンツがある場合は機能しません。
CSS ボーダーの使用
カットを作成する必要があるコンテナには、私のデザインには当てはまらない無地の背景色が含まれている必要があるため、うまくいきません。
jQuery プラグインの使用 ( http://jquery.malsup.com/corner/ )
サンプルコード --> http://jsfiddle.net/spdawson/nxnCD/light/
私の要件を考慮すると、そうではない無地の背景色が必要です。代わりに背景として画像があります。
機能するが非常にハッキーなソリューション
サンプル --> http://jsfiddle.net/26v7pfLb/
現在、高さと幅が固定されているコンテナにこのソリューションを使用していますが、コンテナの幅が静的で高さが動的であるページがアプリにあります。その場合、ハッキングを実装するのはかなり難しく、このソリューションを個人的に使用するのは非常に奇妙に思えます。
CSSでこの種のソリューションを実装するために、よりエレガントでクリーンなものを見つけようとしています
どんなポインタも役に立ちます。