CSS 疑似要素と疑似クラスの魔法のような使い方についての簡単な説明

CSS 疑似要素と疑似クラスの魔法のような使い方についての簡単な説明

CSS は Web ページで非常に重要な役割を果たします。近年の CSS の発展に伴い、疑似要素/疑似クラスも広く使用されるようになりました。パフォーマンスがますます重要になる中、ドキュメント フローの外側にある CSS 疑似要素/疑似クラスは、まさに「無冠の王」です。

ここでは、著者がまとめた CSS に関する「セクシーな操作」をいくつか紹介します。皆さんのお役に立てば幸いです。

:hover と :focus はフローティングレイヤーを表示します

CSS 親子セレクター (「親子ネスト」用)/兄弟セレクター (「同一レベルの並列配置」用) + 疑似クラス:hoverのみを使用して、[マウスがスライドインすると xxx を表示する] を JS を使用せずに完全に実現できます。例えば、マウスをリンクの上に置くと画像が表示されます

<a href="javascript:;">画像リンク</a>
<img src="xxx" alt="" />
画像{
      可視性: 非表示;
      位置: 絶対;
      transition: visibility .2s; /** 遅延を設定する **/
}
a:ホバー+画像、
画像:ホバー{
  可視性: 可視;
}

最後に、画像がリンク表示を覆ってしまうのを防ぐために、マウスを画像の上に移動しても画像が表示され続けるようにimg:hover追加します。

しかし、マウス環境がない場合、これは「失敗」します。例: モバイル端末やスマートデバイス。エクスペリエンスを最適化するために、img に疑似クラス:focusを追加できます - フォーカス状態:

a:フォーカス + 画像、
フォーカス
	可視性: 可視;
	遷移: なし;
}

:フォーカス:ホバー

実際には、ドロップダウン リストにあります。 CSS だけを使用している場合は、「親子関係のない並列要素」の使用はお勧めしません。問題はフォーカスにあります: :focus現在の要素がフォーカスされた状態にある場合にのみ一致します。さて、この問題を簡単に解決するには、このエフェクトに対して上記の遷移遅延を設定するなど、一連の解決策が必要です。しかし、実際には、これはまだ「問題ではありません」。ブラウザが新しい仕様:focus-withinサポートしているためです。この仕様では、「現在の要素または現在の要素の任意の子要素にフォーカスがある場合に一致する」と規定されています。本質的には「親セレクタの動作」です。

<div class="y-table">
     <a href="javascript:;" class="y-msg">私のメッセージ</a>
     <div class="cs-list">
          <a href="javascript:;">私の回答</a>
          <a href="javascript:;">私のプライベートメッセージ</a>
          <a href="javascript:;">私の注文</a>
          <a href="javascript:;">私のフォロー</a>
          <a href="javascript:;">お気に入り</a>
      </div>
</div>

:フォーカス内

:not() は表示要素を決定します

Webページ上の[検索]ボタンでは、入力したキーワードに基づいてリストが表示されるシナリオがあります。著者はかつて、シナリオを説明するために JavaScript を使用した記事を書きました: (JavaScript) Baidu/Google 検索のインスタント自動補完機能はどのように「機能」するのでしょうか?

実際、CSS :not()を使用して表示を最適化することもできます。つまり、条件を満たす情報が xxx ではないかどうかを判断するのです。

.list:not([class="show"]) { 表示: なし; }

CSS3 セレクターには、属性セレクターと呼ばれるものがあり、次のような使い方をします: [attr](有該屬性)[attr=xxx](屬性值是xxx)[attr^=xxx](屬性值是xxx開頭)[attr$=xxx](屬性值以xxx結尾)[attr*=xxx](屬性值包含xxx)

次に、フィルタリング時に、条件を満たしているかどうかに基づいて、返されたリストの一部の項目に表示クラス名を動的に追加します。 「カスタム データ属性」を使用することもできます。

:ない

ボタンをクリックすると菊の写真が表示されます

一般的な使用シナリオについてお話ししましょう。フォームで送信ボタンをクリックしたときに、ユーザーが「より多くのフィードバック効果」を見ることができれば、Web ページの人気が高まると思われます。したがって、「フォームを送信」するときに、ユーザーに待機中であることを知らせるのが良いようです。

JavaScript を通じてクラス名を制御し、クリック時にボタンに loading-name を追加し、テキストを透明にして、背景を読み込み中の画像に設定します。

「クリック」を見たら、「疑似クラス: focus」や「疑似クラス: active」をちょっと考えて、書き直してみてほしいと思います。

:active は「データレポート」を実装します

実際、Web ページには小さな問題があります。ユーザーが JavaScript を無効にした場合、またはブラウザーが JavaScript をサポートしていない場合はどうなるでしょうか?もちろん、後者の状況は現在では基本的に発生していませんが、これは確かに厄介な問題であり、多くのフロントエンド開発者がそれに取り組んでいます。

この問題は、著者の他の記事でも言及されています。ここでは、「データ レポート」についてのみ説明します。フォームがなく、JavaScript がサポートされていない場合 (ajax を使用できない場合)、データをバックエンドに渡すにはどうすればよいでしょうか。幸いなことに、クリック状態を表す疑似クラス:activeがあります。元々は のみをサポートしていましたが、現在はすべての HTML タグをサポートしています。しかし、あなたはこう尋ねるかもしれません: この疑似クラスは通常、リンクの色などを変更するためにのみ使用されるのではないですか?もちろんこの要素だけでは十分ではないのですが、定番のデモ【クリック数を判断する】を考えたことがあるでしょうか!

通常、active と after を一緒に使用します。

信じられないかもしれませんが、サーバーにリクエストを送信してデータをアップロードします。

ここで URL を使用するのはなぜですか?画像形式を使用しない場合は、after-contentの文字列形式で固定値のみ書き込むことができます。

::after と ::before のシナリオ

疑似要素/疑似クラスの「リーダー」として、どうして「後」と「前」について話さずにはいられないのでしょうか?これらは非常に多くのシナリオで使用されます。一般的な「単語間の '|' 記号」、「単語の前後の水平線」、「いくつかの特殊なパターン、さらには組み合わせたパターン」などで見られます。

:後

「検索アイコン」スタイルの実装

純粋な CSS で実装されたクールな「読み込み」

CSS 疑似要素と疑似クラスの素晴らしい使い方を紹介したこの記事はこれで終わりです。CSS 疑似要素と疑似クラスに関するより詳しい情報は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  面接で聞かれる可能性のあるCSSに関する質問

>>:  JS の FileReader を介して .txt ファイルの内容を取得する方法

推薦する

複数の条件を持つ MySQL クエリ メソッド

複数の条件を持つ MySQL クエリ環境: MySQL 5.7 where ステートメントに複数の ...

Win10システムにMySQL 8.0をインストールするときに発生する問題を解決する

Win10 システムに MySQL 8.0 をインストールする際に発生する問題と解決策は次のとおりで...

Linux カーネル デバイス ドライバー Linux カーネル 基本メモの概要

1. Linuxカーネルドライバモジュールの仕組み静的ロードでは、ドライバモジュールをカーネルにコン...

Dockerコンテナ間のホスト間通信 - オーバーレイベースの実装方法

オーバーレイネットワーク分析組み込みのホスト間ネットワーク通信は、常に Docker の待望の機能で...

Vue3 でサードパーティのコンポーネントライブラリをオンデマンドでロードする方法

序文Element Plus を例に、コンポーネントとスタイルのオンデマンド読み込みを構成します。環...

テーブル内の要素のドラッグと並べ替えの問題について簡単に説明します

最近、要素テーブルを使用すると、並べ替えの問題によく遭遇します。単純な並べ替えであれば、要素の公式が...

星のフラッシュ効果を実現するjs

この記事の例では、スターフラッシュ効果を実現するためのjsの具体的なコードを参考までに共有しています...

Vue-routerルーティングの使い方

目次1. 説明2. インストール3. テスト1. 説明Vue Router は、Vue.js の公式...

MLSQL スタックでストリームのデバッグを簡単にする方法

序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...

MySQL 自動インクリメント ID のオーバーサイズ問題のトラブルシューティングと解決策

導入Xiao A がコードを書いていたところ、DBA Xiao B が突然、「急いでユーザー固有情報...

ウェブページに埋め込まれた Flash と IE、FF、Maxthon の互換性の問題

いろいろ苦労した後、インターネットで検索したり、以前の会社のプロジェクトを探したり、他の人のプロジェ...

ulとliの基本的な使用法の分析

ナビゲーション、少量のデータテーブル、中央揃え<!DOCTYPE html PUBLIC &q...

CentOS 8.4 での Docker パッケージのオフラインインストールの問題について

使用する仮想マシンは、サーバー環境をシミュレートする CentOS 8.4 です。外部ネットワークに...

Vue 学習 - VueRouter ルーティングの基礎

目次1. Vueルーター1. 説明2. 選択したルートのレンダリング: 3. 基本的な動作原理2. ...

アイデアがWebプロジェクトを公開した後、Tomcatサーバーがプロジェクトとそのソリューションを見つけることができません

概要プロジェクトは正常に作成され、正常にデプロイされましたが、以下に示すように、Tomcat サーバ...