::before/:before と ::after/:after の使用に関する深い理解

::before/:before と ::after/:after の使用に関する深い理解

パート1: 基礎

1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑似要素です。

2. :before/:after 疑似要素は CSS2 で提案されました。 ::before/::after は CSS3 での記述方法です。疑似クラスを区別するために、疑似要素を表す 2 つのコロンを使用することが再度提案されています。

3. これらは、セマンティクスを実現できるため、CSS のセレクターの後に装飾的なコンテンツを追加するために使用されます。HTML を使用して、実際のコンテンツや補助的なサンプル テキストのないノードを追加した場合、それらは意味を持ちません。

4. これらには独自の属性コンテンツがあり、追加されたコンテンツはデフォルトでインライン要素になります。

5. 作成された疑似要素は、デフォルトでは、それが添付されている要素の上にあります。下に配置するには、z-index:-1; を使用します。

6. これらは実際のノードではなく、仮想ノードです。のように:

 div::after{
            コンテンツ: " ";
            境界線:細い実線の赤;
        }

ブラウザで確認できます:

::after は実際のノードではありませんが、一部の Web サイトで使用されているのをよく見かけます。

6. input、img、iframe などの要素には他の要素を含めることができないため、疑似要素を通じてコン​​テンツを挿入することはできません。

パート II: アプリケーション

1. セパレーターとして使用します。

 <!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>疑似要素</title>
    <スタイル>
        {
            色:青;
            テキスト装飾: なし;
        }
        .log:後{
            コンテンツ:"|";
            色:赤;
        }
    </スタイル>
</head>
<本文>
    <a href="" class="log">ログイン</a><a href="">登録</a>
</本文>
</html>

効果は以下のとおりです。

2. 三角形を作る

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>疑似要素</title>
    <スタイル>
        {
            色:青;
            テキスト装飾: なし;
        }
        .log:前{
            コンテンツ:" ";
            表示: インラインブロック;
            幅: 0;
            高さ: 0;
            border:10px 透明実線;
            border-left: 10px 赤一色;
        }
    </スタイル>
</head>
<本文>
    <a href="" class="log">ログイン</a>
</本文>
</html>

効果は以下のとおりです。

3. クリアフローティング(以下の内容は張新旭より引用)

 <!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>疑似要素</title>
    <スタイル>
    .box{パディング:10px; 背景:グレー;}
    .fix{*ズーム:1;}
    .fix:after{display:block; content:"clear"; height:0; clear:both; overflow:hidden; visibility:hidden;}
    .l{float:left;}
    </スタイル>
</head>
<本文>
    <div class="box fix">
    <img class="l" src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg" />
</div>
</本文>
</html>

効果は以下のとおりです。

注: *zoom:1; は IE6 でフロートをクリアするために使用されます (フロート要素の親要素で使用されます)。

要約する

上記がこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションを取ることができます。

<<:  HTML フォーム コンポーネントのサンプル コード

>>:  js を使用して過去 1 週間、1 か月、3 か月の時間を取得する簡単な例

推薦する

Jenkins の紹介と Docker で Jenkins をデプロイする方法

1. 関連概念1.1 Jenkins の概念: Jenkins は、使用されるプラットフォームに関係...

WeChatアプレットがスネークゲームを実装

この記事では、参考までに、スネークゲームを実装するためのWeChatアプレットの具体的なコードを紹介...

Linux サービス管理の 2 つの方法、service と systemctl の詳細な説明

1.サービスコマンドサービスコマンドは実際には/etc/init.dディレクトリに移動し、関連プログ...

Dockerでspringcloudプロジェクトをデプロイする方法

目次Dockerイメージのダウンロードmysqlとnacosを起動する独自のJavaプロジェクトを変...

Linux ログ表示方法 6 つのまとめ

バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...

Docker に共通コンポーネント (mysql、redis) をインストールする方法

Dockerはmysqlをインストールします docker search mysql 検索 dock...

VMware Workstation 14 Pro インストール Ubuntu 16.04 チュートリアル

この記事では、VMware Workstation14 ProにUbuntu 16.04をインストー...

アダプティブ Web デザインの手法 (モバイル フォンでの優れたアクセス エクスペリエンス)

1. HTML ヘッダーにビューポート タグを追加します。ウェブサイトの HTML ファイルの先頭...

Ubuntu 19.10 で ssh サービスを有効にする (詳細なプロセス)

Ubuntuでsshを開くのに1時間以上かかりました。主な原因は、最初に読んだチュートリアルの手順...

VUEは底部吸引ボタンを実装

この記事では、VUEの具体的なコードを共有して、下部吸引ボタンを実装する例を紹介します。具体的な内容...

DockerでのinfluxDB分散時系列データベースのインストールと関連操作について簡単に説明します。

influxDB の紹介influxDB は分散型時系列データベースです。 cAdvisor はリ...

SSH経由でローカルLinux仮想マシンに接続するプロセスを記録する

実験環境:物理マシン Windows 10 x64物理NIC情報IPv4 アドレス: 192.168...

Vue3 手動カプセル化ポップアップ ボックス コンポーネント メッセージ メソッド

この記事では、ポップアップボックスコンポーネントメッセージのVue3手動カプセル化の具体的なコードを...

Docker デプロイメント RabbitMQ コンテナ実装プロセス分析

1. イメージをプルするまず、次のコマンドを実行して、イメージをローカル コンピューターにダウンロー...

MySQLに挿入する前にデータが存在するかどうかを確認する方法

ビジネスシナリオ: 訪問者の訪問状況を記録する必要があるが、繰り返し記録することはできない挿入する前...