pub struct Rule {
pub selectors: Vec<Selector>,
pub declarations: Vec<Declaration>,
pub layer: Option<usize>,
pub media_query: Option<String>,
pub container_query: Option<String>,
}Fields§
§selectors: Vec<Selector>§declarations: Vec<Declaration>§layer: Option<usize>@layer カスケードレイヤーの優先順位(None = レイヤー無し = 最優先)。
数値が大きいほど後から宣言されたレイヤーで、通常宣言(非 !important)では
後のレイヤーほど勝つ。!important との組み合わせ時の優先順位反転(仕様上の
細かい挙動)は非対応の簡略実装(!important は従来通りレイヤーを見ずに勝つ)。
media_query: Option<String>【2026-07-24追加】このルールを包む@media条件文字列(None = 無条件)。
以前は@mediaをCSS解析時(parse_css呼び出し時点)に一度だけ静的評価し、
マッチしなかったブロックを丸ごと除外していたため、その一度きりの解析時点の
ウィンドウ幅と実際の表示時のウィンドウ幅がズレていると(起動直後のプレース
ホルダーページ表示中など)、モバイルファーストCSS(既定非表示→min-width
メディアクエリで表示)のナビゲーション等が永久に除外されたままになり、
ページが白紙同然になるバグの一因だった。ルール自体は常に保持し、カスケード
(要素へのマッチング)時に毎回media_query_matchesで動的に判定することで、
ウィンドウ幅が変わってもレイアウトのたびに正しく再評価されるようにする。
container_query: Option<String>@container の条件式(media_query と同じく動的評価するため保持する)。
@media との違いは基準がビューポートではなく「問い合わせコンテナ」で
あること。コンテナ寸法はレイアウトが決まるまで分からないので、
解析時に評価して落とすことはできない(@media を静的評価して
ページが白紙化した過去の失敗と同じ轍を踏まないこと)。
形式は 名前|条件 または |条件(名前省略時)。
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Rule
impl RefUnwindSafe for Rule
impl Send for Rule
impl Sync for Rule
impl Unpin for Rule
impl UnsafeUnpin for Rule
impl UnwindSafe for Rule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more