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

推薦する

Windows で Mysql を起動したときに 1067 が表示される場合の解決策

数日前に仕事を始めて、Mysql をインストールしたところ、開くことができました。今日、会社に行った...

レスポンシブデザインについての簡単な説明

1. レスポンシブ デザインとは何ですか?レスポンシブデザインとは、ウェブサイトの開発プロセス中に、...

HTML タグ: サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。関連記事: HTML タ...

指定された期間内のすべての日付または月を取得する MySQL ステートメント (ストアド プロシージャの設定やテーブルの追加は不要)

mysql は期間内のすべての日付または月を取得します1: mysqlは期間内のすべての月を取得し...

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

vue-cli の紹介とインストール

目次1. はじめに2. vue-cli の紹介2.1 コマンドライン2.2 CLI サービス2.3 ...

ベンダー プレフィックス: ブラウザ エンジン プレフィックスが必要なのはなぜですか?

ベンダープレフィックスとは何ですか?ベンダー プレフィックス - ブラウザー エンジン プレフィック...

反応ルーティングでパラメータを渡すいくつかの方法についての簡単な説明

最初のパラメータ渡し方法は、動的ルーティングパラメータ渡しです。リンクのパス属性を設定することで、ル...

反応自動構築ルーティングの実装

目次順序1. 集中ルーティング2. ファイルディレクトリ3. CompileRouterを作成する4...

MySQL 子テーブルで外部キー制約チェックを無効にする方法

準備する:教師テーブルと生徒テーブルを定義し、生徒テーブルで教師テーブルIDを参照します。テーブルt...

Vue3+el-tableは行と列の変換を実現します

目次行と列の変換トランスクリプトの構成を分析するvue3 + el-table で作成されたトランス...

MySQL binlog_ignore_dbパラメータの具体的な使用法

序文:前の記事を読んだ後、binlog はデータベースで実行されたすべての DDL および DML ...

MySQL の時間保持問題に関する簡単な分析

MySQL のデフォルトの時間タイプ (datetime と timestamp) の精度は秒です。...

スタイリッシュなウェブページデザインを作成する方法(グラフィックチュートリアル)

「壮大」という言葉は、おそらく現代のデザイナーが最も聞きたくない言葉でしょう。デザイナー:「デザイン...

Vue のルータールーティングの 2 つのモード (ハッシュと履歴) の詳細な説明

ハッシュモード(デフォルト)動作原理:ウェブページのハッシュ値の変化を監視する—> onhas...