CSS スタイルの読み込みの優先順位に関する経験の共有

CSS スタイルの読み込みの優先順位に関する経験の共有
昨日のプロジェクト開発中に、スタイルの読み込み優先順位に関する問題が発生しました。

クラスは定義され、ページの初期読み込み時に認識されます。読み込みが完了した直後に、スタイルが書き換えられ、定義された margin-bottom が機能しなくなります。このスタイルがないと、コントロールが密集してしまいます。

テスト中、FF と Chrome はどちらも問題なく動作しますが、IE8 では問題が発生します。ただし、IE 開発者ツールを使用すると、margin-bottom が認識され、再定義されていないことがわかります。

問題はむしろ奇妙です。

このページは通常の構造ではありません。さまざまな要素がすでに書き込まれている通常のページではなく、ページ コンテンツが非同期的に生成されます。ロード時にデータを再定義する理由については、まだ理由が見つかっていません。この現象は、混雑したフォーム要素のいずれかをクリックすると、その要素が配置されているモジュール内のすべてのフォームに margin-bottom スタイルが読み込まれ、混雑が解消されるというものです。または、IE 開発者ツールを使用して、最初に margin-bottom の前のボックスのチェックを外してから選択します。これにより、margin-bottom を認識しないページ上のすべてのフォーム要素でこのスタイルが正常に読み込まれるようになります。

しかし、これは決して問題の解決策ではありません。顧客にこの問題を見せてはいけません。UI はユーザーに最も印象を与えることができる部分ですが、ユーザーを最も苛立たせる可能性の高い部分でもあります。

次に、margin-bottom を他の定義に追加するのではなく、margin-bottom のスタイル定義を記述するなど、いくつかの方法を試しましたが、うまくいきませんでした。

優先度の高いメソッドである !important を追加しても機能しません。

直接記述するスタイルは !important よりも優先度が低く、コードの冗長性が多すぎてデメリットも増えるため、受け入れられません。

次に、スクリプト メソッドを試してみましたが、うまくいきました。コードは次のとおりです。

コードをコピー
コードは次のとおりです。

<script type="text/javascript">
document.getElementByClassName("mar_b_10").style.margin-bottom="10px";
</スクリプト>

実はこれも単なる宣言です。内容はクラスと同じで、ブラウザも認識できます。 JS によって制御されるスタイル オブジェクト、 document.getElementByClassName("mar_b_10").style.margin-bottom="10px"; 一般に、DOM 操作は DOM ツリーが読み込まれた後に実行されることが多いため、JS によって制御されるスタイルの方が優先度が高くなります。 DOM ツリーが読み込まれた後、それを再定義する js を記述しました。スタイル定義の上書きは他にはなく、結果はかなり満足のいくものでした。

一般的に:

[重要なフラグ1つ] > [特別なフラグ4つ] > 宣言順

!important > [インライン スタイル > ID セレクター > クラス、属性、疑似クラス セレクター > 要素タグ、疑似要素セレクター]

!important を使用すると、優先順位を最も高く、次にスタイル オブジェクト、次に id > class > タグの順に変更できます。また、宣言順で同じレベルのスタイルの後に表示されるスタイルは、優先順位が高くなります。

<<:  背景属性の8つの属性値の詳細解説(面接の質問)

>>:  DockerコンテナでArthasを使用するための詳細な手順

推薦する

Vue 初心者ガイド: 環境の構築と開始方法

目次初期ビューVue開発環境の構築Vueインスタンスの作成Vue テンプレート構文Vue データバイ...

Linux C++ マルチスレッド同期の非常に詳細な説明

目次1. ミューテックス1. ミューテックスの初期化2. ミューテックスロックの関連特性と分類3. ...

ショッピングカートの計算を実現する js メソッド

この記事の例では、ショッピングカートの計算を実装するためのjsの具体的なコードを参考までに共有してい...

JavaScript オブジェクト (詳細)

目次JavaScript オブジェクト1. 定義2. オブジェクトの分類3. オブジェクトを定義する...

js を使用してネットワークカメラを呼び出し、一般的なエラーを処理します

最近、業務上の理由により、Web ページ上のさまざまなネットワーク カメラにアクセスしてデバッグする...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

詳細なアイデアを備えたシンプルな計算機の HTML 実装

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

HTMLは角丸四角形を簡単に実装します

質問: div+css と配置を使用して角丸四角形を実現するにはどうすればよいですか?ソリューション...

HTML の div と span の違い (共通点と相違点)

共通点: DIV タグと SPAN タグは、コンテンツ全体を非表示にしたり、コンテンツ全体を移動した...

MySQLのREDOログとUNDOログの詳細な説明

MySQL ログ システムで最も重要なログは、REDO ログとアーカイブ ログです。後者は MySQ...

XHTML ドキュメントで JavaScript と CSS を正しく使用する方法

ますます多くのウェブサイトで、XHTML が HTML4 に取って代わって急速に普及しています。しか...

react+reduxを使用してカウンター機能を実装すると発生する問題

Redux はシンプルな状態マネージャーです。その歴史をたどることはしません。使用法の観点から見ると...

Mysql の使用法の概要

導入EXISTS は、サブクエリが少なくとも 1 行のデータを返すかどうかを確認するために使用されま...

MySQL における楽観的ロック、悲観的ロック、MVCC の包括的な分析

序文データベースの実際の使用では、データの書き込みや読み取りを同時に行わないことが必要な状況によく遭...

マウスがカード上に移動したときにフローティング効果を実現する CSS の使用例

原理ホバーしたときに要素に影を設定します: box-shadow で、通常とは異なるスタイルにします...