PythonでCSSOMを操作する方法
Aspose.HTML FOSS for Python は CSS オブジェクトモデルを実装しています: スタイルシートはライブルールオブジェクトに解析され、ドキュメントに添付され、実際のカスケードを通じて解決されます。このガイドでは要素にスタイルを適用し、計算結果を取得します。インストールには pip を使用します。
ステップバイステップガイド
ステップ 1: パッケージをインストール
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .ステップ 2: 必要なクラスをインポート
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetステップ 3: スタイル付き要素を構築
ドキュメントと、クラスと ID を持つ要素を作成します — 両方ともセレクタのマッチングに参加します:
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)ステップ 4: スタイルシートを解析して添付する
replace_sync() はスタイルシートテキストを解析します; attach_style_sheet() はそれをドキュメントに登録します:
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)ステップ 5: 計算済みスタイルを読む
ID セレクタ(特異性 1,0,0)はクラスセレクタ(0,1,0)より優先されるため、青が勝ちます:
style = el.get_computed_style()
print(style.get_property_value("color"))一般的な問題と修正
計算された値は私のstylesheetを無視します。 シートは via を使って添付する必要があります。 Document.attach_style_sheet() before get_computed_style() と呼ばれます。
インラインスタイルはstylesheetのルールに負けます。 Authorルールはマークされています。 !important 重要でないインライン宣言よりも優先されます;優先度は以下で確認できます。 get_property_priority().
同じspecificityを持つ2つのルールは、意外な勝者を生み出します。 後のルールが等しいspecificityのタイを制します — sheet内のルール順序が重要です。
よくある質問
インラインスタイルをプログラムで設定するにはどうすればいいですか?
要素の style 宣言を通じて行います: 変数に代入し、set_property() を呼び出します。
get_computed_style はどのオブジェクトを返しますか?
ComputedStyleDeclaration です;get_property_value() で値を読み取ります。
media、keyframes、font-face ルールはモデル化されていますか?
はい — 解析されたシートには、CSSMediaRule、CSSKeyframesRule、およびCSSFontFaceRuleを含むCSSRuleListがあります。