背景グループでは、CSS を使用してインセット コーナー ボタンを実装する方法や、矢印付きのボタンを実装する方法など、関連する質問をする学生もいます。 この記事では、デザイン案によく登場するボタンのうち、CSS で実装するには少々難しくてコツがいるボタンをいくつか取り上げ、それらを CSS で可能な限り実装する方法を説明します。 まず、よく見られるボタンの形状を見てみましょう。 長方形と丸いボタン通常、ボタンには長方形と丸い形の 2 種類があります。 これらは、幅、高さ、丸い角、背景色など、非常にシンプルです。 <div class='btn rect'>矩形</div> <div class='btn circle'>円</div> .btn{ マージン: 8px 自動; フレックス収縮: 0; 幅: 160ピクセル; 高さ: 64px; } .rect { 背景: #f6ed8d; } 。丸 { 境界線の半径: 64px; 背景: #7de3c8; } 台形と平行四辺形次に、長方形の変形に基づいて、台形や平行四辺形のボタンがよく登場します。 これらを実現するには、主に 平行四辺形
<div class='btn parallelogram'>平行四辺形</div> .平行四辺形 { 位置: 相対的; 幅: 160ピクセル; 高さ: 64px; &::前に { コンテンツ: ""; 位置: 絶対; 上: 0; 左: 0; 下部: 0; 右: 0; 背景: #03f463; 変換: skewX(15deg); } } 疑似要素を使用したくない場合は、 おそらく次のようになります: { 背景: linear-gradient(45度、透明22%、#04e6fb 22%、#9006fb 78%、透明0); } 台形 台形は平行四辺形よりも少し複雑です。台形は <div class='btn trapezoid'>台形</div> .平行四辺形 { 位置: 相対的; 幅: 160ピクセル; 高さ: 64px; &::後 { コンテンツ:""; 位置: 絶対; 上: 0; 右: 0; 下: 0; 左: 0; 変換: 視点(40px) 回転X(10deg); 変換の原点: 下; 背景: #ff9800; } } カットアウェイ - 単色の背景とグラデーションの背景次は角をカットします。これを実現する最も一般的な方法は、 <div></div> .ノッチング{ 背景: 線形グラデーション(135度、透明10px、#ff1493 0); 背景繰り返し: 繰り返しなし; } 結果は以下のとおりです。 これに基づいて、複数のグラデーションを使用して 4 つのグラフィックを実現し、 <div class="notching">ノッチング</div> .ノッチング{ 背景: 線形グラデーション(135度、透明10ピクセル、#ff1493 0) 左上、 linear-gradient(-135度、透明10ピクセル、#ff1493 0) 右上、 線形グラデーション(-45度、透明10ピクセル、#ff1493 0) 右下、 linear-gradient(45度、透明10px、#ff1493 0) 左下; 背景サイズ: 50% 50%; 背景繰り返し: 繰り返しなし; } クリップパスを使用してグラデーション背景カットオフグラフィックを実現するもちろん、この手法には問題があります。背景色をグラデーションカラーにする必要がある場合、この方法はかなり扱いにくくなります。 幸いなことに、 <div class="clip-notching">ノッチング</div> .クリップノッチング{ 背景: 線形グラデーション( 45度、 #f9d9e7, #ff1493 ); クリップパス: ポリゴン( 15ピクセル0, 計算(100% - 15px) 0, 100% 15ピクセル、 100% 計算(100% - 15px)、 計算(100% - 15px) 100%、 15ピクセル 100%、 0 計算(100% - 15px)、 0 15ピクセル ); } グラデーション背景を実装するだけです。 核となるのは、 もちろん、上記のコードは、グラデーションと 矢印ボタン次は矢印ボタンです。上の角切りボタンをよく見てください。両側の角を十分に切り落とすと矢印の形になります。 2 つのグラデーションを使用して、単一の矢印ボタンを作成できます。 <div class="arrow">矢印</div> &.矢印{ 背景: 線形グラデーション( -135度、 透明 22px、 #04e6fb 22ピクセル、 #65ff9a 100% ) 右上、 線形グラデーション( -45度、 透明 22px、 #04e6fb 22ピクセル、 #65ff9a 100% ) 右下; 背景サイズ: 100% 50%; 背景繰り返し: 繰り返しなし; } 矢印が表示されます: これは、2 つのグラデーション ブロックを上下に組み合わせたものです。色を変えるとすぐにわかります。 こんな感じの矢印の形だったらどうでしょうか? 同様に、2 つのグラデーションの重ね合わせでもあり、グラデーションの色は透明 --> 色 A --> 色 B --> 透明となります。もちろん、ここで { 背景: 線形グラデーション(45度, #04e6fb, #65ff9a); クリップパス: ポリゴン( 0 0, 30ピクセル50%、 0 100%, 計算(100% - 30px) 100%、 100% 50%、 計算(100% - 30px) 0 ); } 内接フィレットクーポンでは、下図のようなボタン形状がよく見られます。最も一般的な解決方法は、グラデーションを使用することです。もちろん、コーナーカットとは異なり、ここで使用されている放射状グラデーションは異なります。 まず、簡単な例を見てみましょう。 <div></div> div { 背景画像: 放射状グラデーション(円 100% 100%、透明 0、透明 12px、#2179f5 12px); } 次のようなグラフが得られます。 したがって、 <div class="inset-circle">インセットサークル</div> &.インセットサークル{ 背景サイズ: 70% 70%; 背景画像: 放射状グラデーション( 100% 100% の円、 透明 0, 透明 12px、 #2179f5 13ピクセル )、 放射状グラデーション( 0 0の円、 透明 0, 透明 12px、 #2179f5 13ピクセル )、 放射状グラデーション( 100% 0の円、 透明 0, 透明 12px、 #2179f5 13ピクセル )、 放射状グラデーション( 0 100%の円、 透明 0, 透明 12px、 #2179f5 13ピクセル ); 背景繰り返し: 繰り返しなし; 背景の位置: 右下、左上、右上、左下; } マスクを使用してグラデーションの丸いボタンを実現します背景色にグラデーションが必要な場合はどうすればよいでしょうか? 長方形の背景パターンがあると仮定すると、 <div class="mask-inset-circle">インセットサークル</div> .mask-inset-circle { 背景: 線形グラデーション(45度, #2179f5, #e91e63); マスク: 放射状グラデーション( 100% 100% の円、 透明 0, 透明 12px、 #2179f5 13ピクセル )、 放射状グラデーション( 0 0の円、 透明 0, 透明 12px、 #2179f5 13ピクセル )、 放射状グラデーション( 100% 0の円、 透明 0, 透明 12px、 #2179f5 13ピクセル )、 放射状グラデーション( 0 100%の円、 透明 0, 透明 12px、 #2179f5 13ピクセル ); マスク繰り返し: 繰り返しなし; マスク位置: 右下、左上、右上、左下; マスクサイズ: 70% 70%; } このようにして、次のようなグラフが得られます。 もちろん、上記のコードを理解するには、まず CSS 魔法の CSS マスク 不規則な角丸長方形次のボタンの形状も、最近最もよく聞かれる質問です。まずはその形状を見てみましょう。 名前を付けるのは簡単ではありません。片側は角が丸い直角で、もう片側は角が丸い斜角です。 実際、これは角丸長方形 + 角丸平行四辺形で構成されています。 したがって、2 つの疑似要素の助けを借りて、簡単に実装できます。 <div class="skew">スキュー</div> .skew { 位置: 相対的; 幅: 120ピクセル; &::後 { コンテンツ: ""; 位置: 絶対; 上: 0; 左: 0; 右: 0; 下部: 0; 境界線の半径: 10px; 背景: オレンジ; 変換: skewX(15deg); } &::前に { コンテンツ: ""; 位置: 絶対; 上: 0; 右: -13px; 幅: 100ピクセル; 高さ: 64px; 境界線の半径: 10px; 背景: オレンジ; } } 1 つの疑似要素が別の疑似要素に重ね合わされるため、1 つにはグラデーションが使用され、もう 1 つには単色が使用されます。これらの色は完全に接続できるため、グラデーション カラー グラフィックを実現できます。 丸い角のボタン次のボタンの形状は、Chrome のページングと同様に、タブ ページでよく見られます。 ボタンの形状を分解してみましょう。実際には 3 つのピースが積み重なっています。 両側に円弧三角形を実現する方法を考え出す必要があります。ここでもグラデーション(放射状グラデーション)を使用します。実際は次のようになります。下の図に示すように、2 つの疑似要素を使用して、黒い部分を透明に置き換えるだけです。 コードは次のとおりです。 <div class="outside-circle">外側の円</div> .外側の円 { 位置: 相対的; 背景: #e91e63; 境界線の半径: 10px 10px 0 0; &::前に { コンテンツ: ""; 位置: 絶対; 幅: 20px; 高さ: 20px; 左: -20px; 下部: 0; 背景: #000; background:radial-gradient(0 0の円、透明20px、#e91e63 21px); } &::後 { コンテンツ: ""; 位置: 絶対; 幅: 20px; 高さ: 20px; 右: -20px; 下部: 0; 背景: #000; background:radial-gradient(円 100% 0、透明 20px、#e91e63 21px); } } 以下が入手できます: 上記のすべてのグラフィックの完全なコードは、こちらでご覧いただけます: CodePen デモ - CSS さまざまなボタンの形状 | CSS さまざまなボタンの形状 総括する上記の実装に基づいて、スプライシング、手品、マスキングなどの方法によって、いくつかの少し特殊なボタンが実装されていることに気付くのは難しくありません。 そしてその中には:
これらは重要な役割を果たします。これらを上手に使用すれば、これらのグラフィックスを簡単に処理し、その変形に容易に対処できるようになります。 上記のグラフィックを さらに、より複雑なグラフを以下に示します。 絵を切りましょう。CSS は良いですが、実際の使用では入出力比も考慮する必要があります。 やっとこの記事の目的は、簡単なマニュアルを提供することです。実際には、上記の効果を達成するためのより良い方法があるかもしれません。この記事ではそれらを一つ一つ列挙するわけではありません。追加または修正していただいて構いません。 さて、この記事はこれで終わりです。この記事が皆さんのお役に立てば幸いです。 素晴らしい CSS 技術記事が私の Github -- iCSS に集められています。これらは継続的に更新されています。星をクリックして購読し、収集してください。 ご質問やご提案がございましたら、お気軽にご連絡ください。これはオリジナルの記事であり、私の文章力には限界があります。記事に誤りがある場合はお知らせください。 よく見かける変な形のボタンをCSSで簡単に実装する方法についての記事はこれで終わりです。CSSの変な形のボタンに関する関連コンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。 |
序文:この知識を理解する必要がある人は、すでにプロセス間通信とスレッド間通信の基本的な理解を持ってい...
目次1. クロージャとは何ですか? 2. クロージャの役割2.1) メモリ2.2) プライベート変数...
MySQL マルチテーブルクエリ (直積原理)まず、データが使用するテーブルを決定します。デカルト...
目次序文1. MySQLはSSL構成を有効にする1.1 SSLが有効になっているかどうかを確認する1...
mysql-connector-java.jar パッケージのチュートリアルをダウンロードします: ...
1. transform 属性を使用して、画像を拡大せずに表示します (パスの問題は必要に応じて修正...
目次1. プロジェクトの説明: 2. プロジェクト環境: 2. プロジェクトの手順: 3. プロジェ...
1. プロジェクトの実行時に報告されるエラー情報は次のとおりです。 ファイル "/home...
ホスト 'xxxx' はこの MySQL サーバーに接続できませんエラー: 1130...
この記事では、主にMACオペレーティングシステムでのMySQL5.7とMySQLWorkbenchの...
この記事では、タブバーの切り替え効果を簡単に実現するためのJavaScriptの具体的なコードを参考...
序文説明を簡略化するために以前に設定した要件は、他のグループから MQ メッセージを受信し、データベ...
目次1. 監視プロパティを監視する1. ショッピングカート2. すべて選択し、すべて選択解除する2....
この記事では、次のように、誰にでも共有できる左右幅固定のミドルアダプティブ HTML レイアウトソリ...
1. 何ですかRefs 、コンピューターでは Resilient File System (ReF...