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 CSSStyleSheet3단계: 스타일이 적용된 요소 만들기
문서를 만들고 클래스와 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()으로 값을 읽으세요.
미디어, 키프레임 및 폰트-페이스 규칙이 모델링되어 있나요?
예 — 파싱된 시트에는 CSSMediaRule, CSSKeyframesRule, 및 CSSFontFaceRule가 CSSRuleList에 포함된 타입 규칙이 들어 있습니다.