CSS는 프로그래밍 언어가 아니기 때문에 프로그램의 변수 데이터를 포함하는 구성 파일입니다.
현재 CSS는 너무 강력해서 실제로 프로그래밍 할 수 는 있지만 요점은 아닙니다. 본질적으로 여전히 스타일 시트 언어 입니다.
물러나 보자. 화면에 그릴 수있는 프로그래밍 언어가 있다고 상상해보십시오. 웹 페이지를 페인트하도록 프로그램하고 싶다고 상상해보십시오.
처음에는 코드에 수많은 마법 숫자를 입력했습니다. 여백 너비, 텍스트 높이, 들여 쓰기 등
jump(100) // The margin
drawTable(500, 500)
writeText("Hello World", 12)
그래서 우리는 마법의 숫자를 추출하여 파일 위에 올려 놓습니다.
int margin = 100
int table = 500
int text_size = 12
jump(margin) // The margin
drawTable(table, table)
writeText("Hello World", text_size)
이제 이것은 조금 추악합니다. 오히려 설정 파일에서 변수 번호를 읽습니다.
margin 100
table 500
text size 12
음, 조금 불분명합니다 ... 그 숫자는 무엇을 의미합니까? 그 이름은 무엇을 의미합니까? 조금 공식화합시다.
margin_left 10em
table_width 500px
table_height 500px
font_size 12px
그러나 우리는 프로그램을 조금 확장하고 싶습니다. 또한 여러 테이블이있는 페이지, 테이블이없는 페이지, 단락 또는 버튼이있는 페이지 등을 그리는 것이 좋습니다. 구성 파일에 선택자를 추가하여 더 큰 글꼴 또는 다른 텍스트 색상을 가진 단락을 지정할 수 있습니다. 중첩 된 요소를 지원할 수 있습니다. 구성 파일에서 일반 속성을 사용한 다음 특정 속성으로 재정의 할 수 있습니다. 중첩 된 요소 중 하나입니다.
당신은 이것이 어디로 가고 있는지 느끼고 결국 CSS로 도착합니다. (그리고 그것을 렌더링하는 브라우저)
매직 파일을 다시 피할 수 있도록 구성 파일에 기능을 추가해야합니까? 변수를 추가 하시겠습니까? CSS 파일의 구성 파일을 추가 하시겠습니까? CSS 파일 이 이미 동일한 구성 파일이라는 것을 기억하면 약간 의미 가 없습니다.
그러나 그것은 사실이 아닙니다. CSS 파일이 점점 커지고 결국 원래 마법 번호와 같은 문제가 발생합니다. 같은 숫자가 사방에서 반복되고 때로는 작은 변형 등이 있습니다.
그러나 현대 CSS는 이러한 반복을 피할 수있는 여러 방법을 허용합니다. 많은 요소에 적용되는 클래스를 사용할 수 있고 모든 스타일을 설정할 수 div
있지만 특정 스타일을 재정의 할 수 있으며 CSS 3에서도 일부 변수 사용이 가능합니다.
그렇다고 가능한 모든 위치에서 CSS 변수를 사용해야한다는 의미는 아닙니다. 의미가있는 곳에서 사용하고 복제를 피하거나 다른 기술도 부족한 곳에서 사용하십시오.
결국, 구성 파일에 너무 많은 매직 넘버를 원하지 않습니다 :-)