スプライトとフォントアイコンを実装するためのCSS

スプライトとフォントアイコンを実装するためのCSS

スプライト:

以前は、各画像リソースは独立した画像でした。ブラウザが Web サイト内のさまざまな Web ページにアクセスすると、これらの画像が繰り返し取得され、リソースに何度もアクセスする必要がありました。

リソースへのアクセス回数を減らすために、よく使用される複数の画像を 1 つの画像に結合します (Web ページのキャッシュ メカニズムにより、すでに使用可能なローカル リソースは省略されます。リソースが前回取得された場合は、キャッシュされたリソースの有効期限が切れるまで再度アクセスされません。[遊園地に行くのに少し似ています。すべてのゲームをプレイできるチケットもあれば、1 つのゲームしかプレイできないチケットもあります。すべてのゲームをプレイできるチケットがあれば、何度もチケットを購入する必要はありません])。

よく使用する複数の画像を 1 つの画像に結合した後、この画像を背景画像として設定し、background-position を使用して画像のさまざまな部分を表示します。

例:

以下は26文字のアルファベットです。この絵を使ってGOOGLEを綴ります。

<!DOCTYPE html>
<html>
<ヘッド>
    <メタ文字セット="UTF-8" />
    <title>ドキュメント</title>
    <スタイル>
        div{
            表示:インラインブロック;
        }
        div:最初の子{
            幅:79px;
            高さ: 79px;
            背景画像:url('abcd.jpg');
            背景位置:-396px 0;
        }
        div:n番目の子(2){
            幅:82ピクセル;
            高さ: 82px;
            背景画像:url('abcd.jpg');
            背景位置:-326px -98px;
        }
        div:n番目の子(3){
            幅:82ピクセル;
            高さ: 82px;
            背景画像:url('abcd.jpg');
            背景位置:-326px -98px;
        }
        div:n番目の子(4){
            幅:79px;
            高さ: 79px;
            背景画像:url('abcd.jpg');
            背景位置:-396px 0;
        }
        div:n番目の子(5){
            幅:48px;
            高さ: 77px;
            背景画像:url('abcd.jpg');
            背景位置:-81px -101px;
        }
        div:n番目の子(6){
            幅:48px;
            高さ: 77px;
            背景画像:url('abcd.jpg');
            背景位置:-286px 0;
        }

    </スタイル>
</head>
<本文>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</本文>
</html>

結果:

上記の例に示すように、複数の画像を 1 つの大きな画像に配置し、background-position を使用して表示したいコンテンツを抽出できます。

実際には、多くの背景画像でこの手法が使用されています。

たとえば、JD.com ロゴ:

JD.com の小さなアイコン:

フォントアイコン:

ご存知のとおり、ユニットフォントのファイルサイズは画像のサイズよりも小さくなります。スプライトが画像を 1 つずつ処理することを考慮して、画像をフォントに変換するという素晴らしいアイデアを思いついた人がいました (実際、フォントは元々そのように設計されていました)。

フォントに変換後、特殊なコードを使用して指定した画像を表示することができます。

フォント アイコンはフォントなので、フォントの色やフォント サイズを (歪みなく) 変更できるため、スプライトに比べて非常に明らかな利点があります。

例: [以下はフォントアイコンの作成方法ではなく、使用方法のみを示しています]

私はicomoonを使ってフォントアイコンのセットを作成し(icomoonには既製のアイコンオプションがあります)、それをダウンロードしました。以下にファイル名を記載します。

style.cssはフォントアイコンを使用する方法を提供することができます

demo.html は、フォント アイコンを使用する 2 番目の方法を提供します。

次に以下を使用します:

<!DOCTYPE html>
<html>
<ヘッド>
    <メタ文字セット="UTF-8" />
    <title>ドキュメント</title>
    <スタイル>
    /* フォントを宣言します。次のテキストはダウンロードしたフォルダ内の css ファイルにあります */
        @フォントフェイス {
      フォントファミリー: 'icomoon';
      src: url('fonts/icomoon.eot?ni3k5c');
      src: url('fonts/icomoon.eot?ni3k5c#iefix') フォーマット('embedded-opentype'),
        url('fonts/icomoon.ttf?ni3k5c') フォーマット('truetype'),
        url('fonts/icomoon.woff?ni3k5c') フォーマット('woff'),
        url('fonts/icomoon.svg?ni3k5c#icomoon') フォーマット('svg');
      フォントの太さ: 標準;
      フォントスタイル: 通常;
        }
        /* 使用*/
        [class^="icon-"]、[class*="icon-"] {
          /* フォントを変更するブラウザ拡張機能の問題を防ぐために !important を使用します */
          フォントファミリー: 'icomoon' !important;
          話す:なし
          フォントスタイル: 通常;
          フォントの太さ: 標準;
          フォントバリアント: normal;
          テキスト変換: なし;
          行の高さ: 1;
          /* フォントレンダリングの改善 =========== */
          -webkit-font-smoothing: アンチエイリアス;
          -moz-osx-font-smoothing: グレースケール;
        }
        .icon-home:before {
          内容: "\e900";
        }
        .icon-image:before {
          内容: "\e90d";
        }
        .icon-music:before {
          内容: "\e911";
        }
        div{
            font-family:'icomoon';/* 上記と一致している必要があります*/
        }
    </スタイル>
</head>
<本文>
    <div class=".icon-imagee"></div> 
    <!-- 最初の使用方法:
    style.css ファイルをインポートし、指定されたアイコンのクラスセレクターのプロパティを対応するクラス属性値として使用します -->
    <div></div> <!-- 2 番目の使用方法:
    タグのフォント宣言を行い、demo.html を開いてアイコンをコピーします (左側にコード 1 つ、右側にアイコン 1 つ)
     -->
     <!-- 最初の方法は ::before を使用して追加することですが、他の ::before メソッドを使用して追加することもできます -->
</本文>
</html>

要約する

上記はエディターが紹介したスプライトとフォントアイコンの CSS 実装です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、エディターがすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

<<:  ファイルアップロードスタイルの詳細を実装するjs

>>:  ウェブデザインと制作におけるハイパーリンクの効果の向上

推薦する

MySQL マスタースレーブレプリケーションの原理と実践の詳細な説明

目次導入効果原理形状練習するこの記事では、例を使用して、MySQL マスター/スレーブ レプリケーシ...

Vueデータ割り当て問題の解決

私が長い間遭遇してきた問題を要約してみましょう。プロジェクトでは、フロントエンドをレンダリングするた...

WeChatアプレットのスクロールビューが左右の連動を実現

この記事では、WeChatアプレットのスクロールビューの左右連動を実現するための具体的なコードを参考...

JavaScriptでページスクロールアニメーションを実装する

目次レイアウトを作成するCSSスタイルを追加するJavaScript で要素を操作する対象要素を取得...

Centos7 で ZooKeeper3.4 ミドルウェアを構築するための一般的なコマンドの概要

1.ダウンロードして解凍する1. Zookeeperの紹介分散サービス フレームワークとして、Zoo...

jsプロジェクトでの双方向データバインディングの簡単な実装方法

目次序文パブリッシュ・サブスクライバ・パターン結果電話要約する序文双方向データ バインディングとは、...

画像ソーシャルネットワーキングサイトのUIアプリケーションの比較分析(図)

私たちの生活、仕事、勉強において、ソーシャル ネットワークは徐々に将来のインターネット発展のトレンド...

mysqlサーバーは--skip-grant-tablesオプションで実行されています

MySQLサーバーは--skip-grant-tablesオプションで実行されているため、このステー...

Linux システムのパフォーマンスを分析するための top コマンドの詳細な説明

Linux topコマンドの紹介top コマンドは、Linux でよく使用されるパフォーマンス分析ツ...

CSSでスペースを処理する方法

1. 宇宙のルールHTML コード内の空白は通常、ブラウザによって無視されます。 <p>...

MySQL スケジュール データベース バックアップ (フル データベース バックアップ) の実装

目次1. MySQLデータのバックアップ1.1. データをバックアップするためのmysqldumpコ...

vue3 コンポーネント通信方法の概要と例

vue3コンポーネントの通信モードは次のとおりです。小道具$放出$expose / 参照$属性vモデ...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...

HTML タイトル属性をラップする方法

数日前にプログラムを書いていたとき、プロンプト情報 (TITLE) を新しい行で囲みたいと思いました...

MySQL でデータベースを作成した後、ユーザー 'root'@'%' によるデータベース 'xxx' へのアクセスが拒否される問題を解決する

序文最近、仕事で問題が発生しました。データベースを作成した後、データベースに接続するときにエラーが発...