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を使用するための詳細な手順

推薦する

Nginx レベルで基本的なユーザー認証を構成する手順を完了します。

序文アプリケーション シナリオ: おそらく、内部 Web サイトは外部ユーザーにアクセス可能である必...

Vue は better-scroll を使用して水平スクロール方法の例を実現します

1. スクロールの実装原理better-scroll のスクロール原理は、ブラウザのネイティブスクロ...

Echarts は 1 つのグラフ内で異なる X 軸を切り替える機能を実装します (サンプル コード)

レンダリング下の画像のような効果を実現したい場合は、読み続けてアニメーション画像に直接進んでください...

docker-compose で Jenkins をインストールする際の実践的なメモ

ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...

Vue は、デスクトップから Web ページにファイルをドラッグするためのサンプル コードを実装します (画像/オーディオ/ビデオを表示できます)

効果使用する場合は、コードとスタイルを自分で最適化してください。画像を表示しない/ビデオとオーディオ...

docker で zabbix_agent をデプロイする方法

zabbix_agent のデプロイメント:推奨事項: zabbix_agent は docker-...

SpringBoot と Vue の相互作用におけるクロスドメイン問題の解決策

目次ブラウザ同一生成元ポリシー1. VUEフロントエンド構成プロキシはクロスドメインの問題を解決しま...

Baota LinuxパネルにFTP接続できない問題の解決方法の詳細な説明

Alibaba Cloud Server を使用している場合は、セキュリティ グループ設定でポート ...

dockerコンテナは直接実行され、pingを介してパブリックIP操作を取得します。

コンテナを通じてローカル パブリック IP アドレスを取得します。ローカル IP アドレスを使用して...

JS を使って 1 分で github+Jekyll ブログに訪問カウント機能を追加する実装

目次1分でgithub+Jekyllブログにトラフィック機能を追加する1. ジェクルとは何か1. J...

Vue における {{}}、v-text、v-html の違いと用途の詳細な説明

{ {}} 値を取得すると、タグの元のコンテンツはクリアされませんv-textは値を取得し、タグの元...

Nginx 設定ファイルの詳細な説明と最適化の提案ガイド

目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...

JavaScript BOM の説明

目次1. BOMの紹介1. JavaScriptは3つの部分から構成される2.ウィンドウオブジェクト...

element-plus でオンデマンドインポートとグローバルインポートを実装する方法

目次オンデマンドインポート:グローバルインポートオンデマンドインポート:プラグインをインストールする...

Linux でパスワードを入力せずに sudo コマンドを実行する方法

sudo コマンドを使用すると、信頼できるユーザーは別のユーザー (デフォルトでは root ユーザ...