目次
HTML構造
基本的なスタイル
一意の三角形の形を作成します
方法1:境界線方法
方法2:背景画像方法
ホームページ ウェブフロントエンド CSSチュートリアル ああ、三角形のパンムーブリボンを作る多くの方法!

ああ、三角形のパンムーブリボンを作る多くの方法!

Apr 21, 2025 am 11:26 AM

ああ、三角形のパンムーブリボンを作る多くの方法!

三角形のパンパン粉ストリップを作るさまざまな方法

この記事では、ステップバイステップのブレッドクランブナビゲーションに見られる各ブロックのV字型の形状とノッチと同様に見える一連の相互接続リンクを作成する方法について説明します。

このスタイルは、マルチステップフォームやWebサイトBreadcrumb Navigationなど、Webデザインで一般的です。これらのスタイルを「バンディング」と呼び、理解しやすくします。

多くのWeb要素と同様に、これらのストライプをさまざまな方法で作成できます! CSSの三角形、SVG背景、CSSクリップパスプロパティを使用するなど、複数の方法を備えたデモページを作成しました。

HTML構造

各デモンストレーションのHTML構造は、基本的に同じです。<nav></nav>要素へのリンクと子要素として。

<nav aria-label="breadcrumbs" role="navigation"><a href="https://www.php.cn/link/3dc023ccc7e0bd23ce2d4427756fd03c">ホームページ</a>
  <a href="https://www.php.cn/link/3dc023ccc7e0bd23ce2d4427756fd03ccategories/articles/">ブログ</a>
  <a aria-current="page" href="https://www.php.cn/link/3dc023ccc7e0bd23ce2d4427756fd03carticles/building-an-animated-sticky-header-with-custom-offset/">記事</a>
</nav>
ログイン後にコピー

A11Yスタイルガイドによると、これらの要素はアクセシビリティ基準に準拠する必要があることに注意してください。コンポーネントを設計するときは、アクセシビリティを考慮し、最初にアクセシビリティを導入することが重要です。「アクセシビリティを追加するのを忘れない」問題を避けるための最良の方法です。

基本的なスタイル

このタイプのスタイルのために、要素サイズが正しいことを確認する必要があります。これを行うには、 .ribbonのフォントサイズ(これらの要素を「バンド」と呼ぶ)を定義し、要素をラップし、子要素(リンク)でEMユニットを使用します。

 /*ラッピング要素のフォントサイズを定義します*/
.ribbon {
  フォントサイズ:15px;
}

/* EMユニットを使用して、ストライプ要素のサイズを定義します*/
.ribbon__element {
  Font-Size:1.5EM;
  文字分割:0.01em;
  Line-Height:1.333em;
  パディング:0.667EM 0.667EM 0.667EM 1.333EM;
}
ログイン後にコピー

この手法は、同じサイズを使用して三角形を計算するため、各ストリップの三角形の形状サイズを定義するのに有益です。 EMユニットを使用して、ストライプ要素のサイズを計算するため、ラッパー要素のフォントサイズを再定義することにより、すべての要素をサイズ変更できます。

レイアウトにはCSSグリッドを使用しましょう。これは、より広い範囲のブラウザ対応アプローチを使用して行うことができますが、サポートのニーズに依存します。

4つの列を定義します。

  • ストライプ要素には3つの列が使用されます
  • 列は、間隔の問題を解決するために使用されます。現状では、右矢印の形状はストリップアセンブリの外側に配置され、元のレイアウトが台無しになる可能性があります。
 /*パッケージング要素* CSSグリッドは使用しますが、ブラウザのサポート要件を満たしていることを確認してください。
 * Autoprefixerがベンダーのプレフィックスと属性に使用されていると仮定します。
 */

.ribbon {
  ディスプレイ:グリッド;
  グリッドギャップ:1px;
  Grid-Template-Columns:Repeat(auto-fill、1fr)1em; /*サイズの問題を解決するために、3つのストライプ要素を狭い列で自動的に満たす*/
}
ログイン後にコピー

ストリップ要素の伸びを避けたい場合は、メッシュを異なる方法で定義できます。たとえば、 max-contentを使用して、コンテンツのサイズに応じて列をサイズ変更できます。 (ただし、 max-content一部の主要なブラウザではまだサポートされていないことに注意してください。)

 /*最大コンテンツサイズに従ってストライプ列を調整する*/
.ribbon-- auto {
  Grid-Template-Columns:Repeat(3、Max-Content)1EM;
}
ログイン後にコピー

レイアウトするにはさまざまな方法があると思います。複雑な計算なしに縞模様の要素間の正確なギャップを定義するため、私はこのアプローチが好きです。

アクセシビリティは、ARIA属性を追加するだけではありません。また、色のコントラストと読みやすさ、およびホバーとフォーカスの状態を追加することも含まれます。アウトラインスタイルが気に入らない場合は、Box-Shadowなどの他のCSSプロパティを使用できます。

 /*現在のリンク色を使用しますが、ホバーにアンダースコアを追加します*/
.ribbon__element:ホバー、
.ribbon__element:Active {
  色:継承;
  テキスト装置:下線;
}

/*デフォルトのアウトラインスタイルをクリアし、埋め込みボックスシャドウを使用してフォーカス状態を示します*/
.ribbon__element:Focus {
  Box -Shadow:Inset 0 -3px 0 0#343435;
  アウトライン:なし;
}
ログイン後にコピー

一意の三角形の形を作成します

各ストリップの最後に三角形を定義するときに複数のオプションがあります。我々はできる:

  1. 擬似要素と境界で三角形を作成します
  2. 擬似要素でSVG背景画像を使用します
  3. インラインSVG画像を使用します
  4. polygon()関数を使用してクリップパスを作成します

それぞれを掘り下げましょう。

方法1:境界線方法

まず、要素の幅と高さをゼロに設定して、三角形を描くために使用する擬似要素を妨げないようにする必要があります。次に、境界線を使用して三角形を描画し、具体的には、背景の色に合った固体の左の境界を定義し、ストリップの残りの部分とブレンドするようにします。次に、上部と下部の境界線を定義し、透明に設定しましょう。ここでのトリックは、境界線のサイズを計算することです。

ストライプ要素のコンテンツサイズは、row high value plus上部および下部のパディングです。

 <code>1.333em 0.667em 0.667em = 2.667em</code>
ログイン後にコピー

これは、上部と下部の境界線がこのサイズの半分であることを意味します。残っているのは、要素をコンポーネントの正しい側に絶対に配置することです。

 /*左矢印*/
.ribbon-- alpha .ribbon__element:前{
  /*コンテンツサイズをゼロにする*/
  コンテンツ: '';
  高さ:0;
  幅:0;

  /*境界線を使用して、擬似要素をストリップサイズに合わせる*/
  国境圏:1.333em固体透明。
  国境左:0.667EMソリッド#FFF;
  ボーダートップ:1.333em固体透明。

  /*要素をストライプ要素の左側に絶対に配置*/
  位置:絶対;
  上:0;
  下:0;
  左:0;
}

/*右矢印*/
.ribbon-- alpha .ribbon__element:後{
  /*コンテンツサイズをゼロにする*/
  コンテンツ: '';
  高さ:0;
  幅:0;

  /*境界線を使用して、擬似要素をストリップサイズに合わせる*/
  国境圏:1.333em固体透明。
  国境左:0.667EMソリッド;
  ボーダートップ:1.333em固体透明。

  /*要素をストライプ要素の右側に絶対に配置し、それを外に押します*/
  位置:絶対;
  上:0;
  右:0;
  下:0;
  -webkit-transform:transtex(0.667em);
  変換:transtex(0.667em);
}
ログイン後にコピー

直角三角形はストリップの背景色と一致する必要があるため、各ストリップの擬似エレメントに正しい境界色の色を追加することを忘れないでください。

 /*最初の要素の右矢印*/
.ribbon-- alpha .ribbon__element:nth-​​child(1):後{
  国境左の色:#11d295;
}

/* 2番目の要素の右矢印*/
.ribbon--アルファ.ribbon__element:nth-​​child(2):後{
  国境左の色:#ef3675;
}

/* 3番目の要素の右矢印*/
.ribbon-- alpha .ribbon__element:nth-​​child(3):後{
  国境左の色:#4CD4E9;
}
ログイン後にコピー

それでおしまい!

方法2:背景画像方法

背景画像を使用して三角形を作成することもできます。これには、デザインに一致する画像を作成する必要があります。これは少し面倒ですが、それでも完全に可能です。 SVGは、任意の解像度で滑らかになるため、ここで使用します。

Border Triangleメソッドとは異なり、擬似要素の高さをストライプ要素の高さ(または100%)に合わせたいと考えています。コンポーネントの幅は、ボーダートライアングルの左境界幅と一致する必要があります。この場合、0.66666666です。次に、白い三角形を左三角形の背景画像として使用し、次に右三角形のカラートライアングル画像として使用する必要があります。繰り返しますが、絶対的な位置決めを使用して、三角形をストライプ要素の正しい側に配置します。

 /*左矢印*/
.ribbon--ベータ.ribbon__element:前{
  /*矢印のサイズを定義*/
  コンテンツ: '';
  高さ:100%;
  幅:0.6666666m;

  /*背景色に一致する背景画像を定義します*/
  背景 - イメージ:url(data:image/svg xml; base64、phn2zybozwlnahq9ijqwiib223qm94psiwidagmtagndaiihdpzhropsixmceg1sbnm9imh0dha6ly93d3cudzmub3jnlzmbmibmibmibmibmibmibmibmibmibmawxiebmibmawxiwxmibmwxmibmwxmibmwxmibmwxmibmwxmibmwxmibmawxmibmwxmibmibmibmawx jzmzmij48cgf0acbkpsjtnsaxnsaymcaxmggtndb6iibmawxslxj1bgu9imv2zw5vzgqiihryyw5zm9ybt0ibwf0cmml4kdagltegltegmcaynasnskilz48l3n2zz4);
  背景ポジション:中央の左。
  バックグラウンドリピート:ノーリピート。
  バックグラウンドサイズ:100%;

  /*要素をストライプ要素の左側に絶対に配置*/
  位置:絶対;
  下:0;
  上:0;
  左:0;
}

/*右矢印*/
.ribbon-ベータ.ribbon__element:後{
  /*矢印のサイズを定義*/
  コンテンツ: '';
  高さ:100%;
  幅:0.667EM;

  /*背景画像プロパティを定義*/
  背景ポジション:中央の左。
  バックグラウンドリピート:ノーリピート。
  バックグラウンドサイズ:100%;

  /*要素をストライプ要素の右側に絶対に配置し、それを外に押します*/
  位置:絶対;
  上:0;
  右:0;
  下:0;
  -webkit-transform:transtex(0.667em);
  変換:transtex(0.667em);
}

/*最初の要素の背景色に一致する背景画像を定義します*/
.ribbon-ベータ.ribbon__element:nth-​​child(1):後{
  背景画像:url(data:image/svg Xml; base64、phn2zybozwlnahq9ijqwiib2awv3qm94psiwidagmtagndaiihdpzhropsixmcigeg1sbnm9imh0dha6ly93d3cudzmub3jnlziwmdavcpp sjtnsaxnsaymcaxmggtndb6iibmawxspsijmtfkmjk1iibmawxslxj1bgu9imv2zw5vzgqiihryyw5zm9ybt0ibwf0cmml4kdagltegltegmcaynsnsnsnsnsnkilz48l3z48l3z48l3z48l3z48l3z48l3tgltegm
}

/* 2番目の要素の背景色に一致する背景画像を定義します*/
.ribbon-ベータ.ribbon__element:nth-​​child(2):後{
  背景画像:url(data:image/svg Xml; base64、phn2zybozwlnahq9ijqwiib2awv3qm94psiwidagmtagndaiihdpzhropsixmcigeg1sbnm9imh0dha6ly93d3cudzmub3jnlziwmdavcpp sjtnsaxnsaymcaxmggtndb6iibmawxspspijzwyznjc1iibmawxslxj1bgu9imv2zw5vzgqiihryyw5zm9ybt0ibwf0cmml4kdaglteggltegmcaynsnsnsnsnkilz48l3z48l3z48l3z48l3z48l3z48l3z48l3tgltegm
}

/* 3番目の要素の背景色に一致する背景画像を定義します*/
.ribbon-ベータ.ribbon__element:nth-​​child(3):後{
  背景画像:url(data:image/svg Xml; base64、phn2zybozwlnahq9ijqwiib2awv3qm94psiwidagmtagndaiihdpzhropsixmcigeg1sbnm9imh0dha6ly93d3cudzmub3jnlziwmdavcpp sjtnsaxnsaymcaxmggtndb6iibmawxspspijngngngu5iibmawxslxj1bgu9imv2zw5vzgqiihryyw5zzm9ybt0ibwf0cmml4kdagltegltegmcaynaynskilz48l3333z48l3333z48l3333333333
}
ログイン後にコピー

それでおしまい!

残りは元のテキストに似ていますが、ステートメントが調整されて置き換えられ、元のテキストは変更されていません。スペースの制限のため、ここで繰り返しません。残りの部分を継続するには、元のテキストを参照してください。

以上がああ、三角形のパンムーブリボンを作る多くの方法!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

それは&#039; Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

Redwood.jsと動物相を使用してイーサリアムアプリを構築します Redwood.jsと動物相を使用してイーサリアムアプリを構築します Mar 28, 2025 am 09:18 AM

最近のビットコインの価格が20k $ $ USDを超えており、最近30Kを破ったので、イーサリアムを作成するために深く掘り下げる価値があると思いました

ブラウザから有効なCSSプロパティ値を取得できますか? ブラウザから有効なCSSプロパティ値を取得できますか? Apr 02, 2025 pm 06:17 PM

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード 粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード Apr 03, 2025 am 10:30 AM

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

CI/CDで少し CI/CDで少し Apr 02, 2025 pm 06:21 PM

「ウェブサイト」は「モバイルアプリ」よりも適していると言いますが、Max Lynchからのこのフレーミングが好きです。

レスポンシブデザインのブラウザを比較します レスポンシブデザインのブラウザを比較します Apr 02, 2025 pm 06:25 PM

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

WordPressブロックエディターでのマークダウンとローカリゼーションを使用します WordPressブロックエディターでのマークダウンとローカリゼーションを使用します Apr 02, 2025 am 04:27 AM

WordPressエディターでユーザーに直接ドキュメントを表示する必要がある場合、それを行うための最良の方法は何ですか?

フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? Apr 05, 2025 pm 05:51 PM

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

See all articles