数年前までは、Web サイトの背景の形状やセクションを長方形以外にしたい場合、必要に応じて追加される静的な PNG または JPEG 画像をデザイナーに提供してもらう必要がほとんどでしたが、CSS はあれから長い道のりを歩んできました、友よ。
ページのコンテンツを異なる色の背景セクションに分割し、純粋な白と柔らかいグレーの色を交互に配置する Web サイトの更新に取り組んでいたとき、デザインのモックアップには、下端が上に傾いた 1 つのセクションが含まれていました。一般的なブロック要素のように、ページを完全に 90 度の角度で横切るのではなく、右に移動します。
これを行うためにデザイナーに背景画像の作成を依頼することもできましたが、代わりに CSS の力を使って自分でできるかどうかを確認したいと思いました。そしてなんと、CSS クリップパスを使えばそれができたのです。
DOM 内の興味深い形状やビジュアルは、もはや純粋にデザイナーの領域ではありません。CSS クリップパスなどのツールを使用すると、開発者は要素を再形成することができます。その方法を説明します。
私のように、CSS クリップパス プロパティにあまり詳しくない場合は、要素のどの部分を表示するかを設定するクリッピング領域が作成されます。領域の内側にある部分は表示されますが、外側の部分は非表示になります。
MDN クリップパス ドキュメントのデモ。さまざまなクリップパス オプションにより、熱気球とテキストのさまざまなビューが提供されます。
clip-path プロパティはさまざまな値を受け入れることができます:
/* this CSS combines two different clip path properties */ clip-path: padding-box circle(50px at 0 100px);
この投稿では、クリップパスが受け入れることができるすべてのプロパティと、それらを組み合わせて非常に複雑な形状を作成する方法については詳しく説明しません。さらに詳しい情報と、clip=path の動作例が必要な場合は、Mozilla ドキュメントから始めることをお勧めします。
clip-path が受け入れる
CSS で作成する必要があった灰色のポリゴンの背景。
上の画像は、CSS クリップパスの Polygon() プロパティを使用して再作成する必要があった灰色の背景セクションのスクリーンショットです。そして最初に行う必要があるのは、CSS を適用する HTML 要素をいくつか作成することでした。
polygon() クリップパスと rect() クリップパス
なぜクリップパスでrect()プロパティの代わりにpolygon()プロパティを使用することにしたのか疑問に思われるかもしれません。この 2 つは似ていますが、polygon() はより複雑な多角形の形状を作成でき、多角形の各頂点を定義するための座標のペアを受け入れることで高度な設計に優れた汎用性を提供します。一方、rect() は長方形の形状のみを処理できます。
私が取り組んでいたサイトは、Go ベースのフレームワークである静的サイト ジェネレーター Hugo に依存していました。 Hugo はテンプレートを使用してサイトの HTML をレンダリングするため、HTML の知識がある場合は、以下のコード例は比較的馴染みがあるはずです。
テンプレートに関する注意:
JSX コンポーネント、Pug または Handlebars を備えた Node.js、または Jekyll を使用したことがある場合は、Hugo のテンプレートも同様です。Go 変数と関数を含む HTML 要素に {{ }} が散りばめられており、テンプレートのどこにでも正しい情報が表示されます。
が注入されます。
このセクションの前景にあるパズルのピースにちなんで、私がページの「パズル セクション」と名付けたコードを次に示します。この記事の目的と明確さのために、テンプレートに挿入された Go 変数を生成された HTML に置き換えました。
シングル.html
Lorem ipsum dolor
Sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Ipsum dolor sit amet consectetur adipiscing elit pellentesque.
Duis aute irure dolor in reprehenderit
in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Consectetur adipiscing elit pellentesque habitant morbi tristique senectus et.
![]()
コードのこのセクションは比較的コンパクトですが、議論する価値があります。 HTML 要素に加えて、レスポンシブ Web デザイン用のオリジナルのオープンソース CSS フレームワークの 1 つである Bootstrap ライブラリから派生したかなりの数の CSS クラスがあります。
カスタム スタイルを追加するために使用した about-body などのカスタム クラスの中には、container、row、col-12 またはcol-md-6、mb-5、mb-3 などのクラスがあります。
後者のクラスはすべて Bootstrap クラスであり、ビューポートが特定の幅 (col-md-6) を超える場合、または margin-bottom を適用するときに、画面上のテキスト要素と画像要素がページの幅を共有するように機能します。
タグ (mb-3 または mb-5) に一定量を追加します。
Bootstrap クラスはこの投稿の要点から外れていますが、注目すべきクラスは、すべてのテキストとパズルのピースの画像をラップする パズルセクション です。
このパズル セクション クラスでは、クリップ パス プロパティを追加して、テキストと画像の後ろに明るい灰色の背景を、わずかに傾いた右上がりのデザインで表示します。
通常の長方形の
この CSS クリップパス作成 Web サイトは、豊富なプリセット形状、調整可能な画像サイズと背景があり、現在表示されている画像の頂点をドラッグして任意の配置にできるため、素晴らしいです。画面下部の行には、独自のプロジェクトの CSS にコピー/ペーストできる正確なクリップパス CSS 値が表示されます。
私は、開始点としてプリセット形状の平行四辺形を選択し、最初から再作成しようとしていた背景セクションの角度に合わせて角をドラッグしました。見た目が正確であることに満足したら、ページの下部にある CSS 行をクリップボードにコピーしました。
私のプロジェクトの SCSS ファイルでは、ライト グレーの背景色プロパティとパディングに加えて、コピーしたクリップパス CSS を追加して、ページ上のテキストとパズルのピースの画像に余裕を持たせました。
注: コード例に示されているこのファイルは純粋な CSS ではなく SCSS ですが、この投稿では違いは生じません。直接 1:1 で比較する必要があります。
.scss について
.about-body { // this white sets the white background color for the whole webpage background-color: white; .puzzle-section { // clip-path code copied from the clip-path maker website clip-path: polygon(0 0, 100% 0%, 100% 75%, 0% 100%); background-color: light-grey; padding: 2rem 0 10rem 0; } }
クリップパス用のこのちょっとした CSS だけで、完全に長方形の DOM 要素を不完全な多角形に変えるのに必要でした。汚すぎる格好はやめて!
CSS は、Web 開発者が画像、ビデオ、カスタム デザインの要素に常に依存せずにできることの限界を押し広げています。そして、ちょっとしたクールなデザインを自分で行う方法を見つけ出す満足感は、かなり力を与えてくれます。
この最近の例は、CSS クリップパス プロパティを使用して、下端が不均一なテキストと画像の背景ボックスを作成することでした。あらゆる形状やサイズのクリップパスをデコードする専用のインタラクティブな Web サイトの助けを借りて、このわずかに歪んだ多角形を素早く処理することができました。
そして、他の開発者のために非常に具体的な問題を解決する小さなサイトやコード スニペットを公開している人々に、私がどれだけ感謝しているかを叫ばせてください。皆さんはインターネットをより良い場所にし続けています。
数週間後にもう一度確認してください。JavaScript、React、IoT、またはその他の Web 開発関連のことについて詳しく書く予定です。
私が書いた記事を決して見逃さないようにしたい場合は、こちらからニュースレターにサインアップしてください: https://paigeniedringhaus.substack.com
読んでくれてありがとう。 CSS の力だけで DOM 内の要素の外観を変更する方法を学ぶことが、私にとって役に立ったのと同じように、あなたにも役立つことを願っています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3