Як працювати з CSSOM у Python

Як працювати з CSSOM у Python

Aspose.HTML FOSS для 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"))

Поширені проблеми та їх виправлення

Обчислене значення ігнорує мою таблицю стилів. Таблицю треба прикріпити за допомогою Document.attach_style_sheet() before get_computed_style() називається.

Вбудований стиль програє правилу таблиці стилів. Правила автора, позначені !important перевищують неважливі вбудовані оголошення; перевірте пріоритети за допомогою get_property_priority().

Два правила з однаковою специфічністю дають несподіваного переможця. Пізніші правила виграють у випадках рівної специфічності — порядок правил у таблиці важливий.

Поширені запитання

Як програмно задати вбудовані стилі?

Через декларацію style елемента: присвойте її змінній і викличте set_property() на ній.

Який об’єкт повертає get_computed_style?

Об’єкт ComputedStyleDeclaration; читаєте значення за допомогою get_property_value().

Чи моделюються правила media, keyframes та font-face?

Так — розпарсені листи містять типізовані правила, включаючи CSSMediaRule, CSSKeyframesRule і CSSFontFaceRule у CSSRuleList.

Дивіться також

 Українська