2017-10-20 12 views
2

CSS 변수의 산술 연산이 코드를 손상시키는 이유를 알아보십시오. 산술 연산을 사용하는 CSS 변수가 속기 속성에서 작동하지 않습니까?

나는 하나의 규칙과 간단한 CSS 파일을 시작 : 브라우저에서

html { 
    font: 16px/32px Arial; 
} 

, 그것은 기록 된대로 작동 : 글꼴 크기가 줄 높이가 32px입니다 16px이며, 글꼴 자체가 굴림이다.

은 그 때 나는 변수 추가 : 그것은 너무 작품

html { 
    --default-font-size: 16px; 
    --default-line-height: var(--default-font-size); 
    font: var(--default-font-size)/var(--default-line-height) Arial; 
} 

을; 줄 크기가 16px라고 생각했습니다. 글꼴 크기와 동일하게 만들었 기 때문입니다. ,

html { 
    --default-font-size: 16px; 
    --default-line-height: var(--default-font-size) * 2; 
    font: var(--default-font-size)/var(--default-line-height) Arial; /* not working! */ 
} 

모든 속성 font-sizeline-height을하고 font-family는 브라우저의 기본값으로 설정 : 내가 두 번째 값을 multiplicated 때

는하지만, 글꼴 선언은 작동이 중지.

나는 세 가지 긴 형식의 특성에 font 약식 속성을 분할하는 경우는, 코드 확인을 다시 작동 : 이전 코드 샘플에 문제가 있습니다 그것은 긴 형식으로 분할없이 작동 할 수있는 방법이 무엇

html { 
    --default-font-size: 16px; 
    --default-line-height: var(--default-font-size) * 2; 
    font-size: var(--default-font-size); 
    line-height: var(--default-line-height); 
    font-family: Arial; 
} 

속성?

+0

세 번째 하나가 작동 확신 내에서 사용되어야한다 같이 CSS는 곱셈 기호를 인식하지 못하는 이유는 무엇입니까? 그것은 역시 –

+0

@TemaniAfif가되어서는 안된다. 맞다. 부분적으로 작동한다 :'font-size'와'font-family'가 설정되어 있지만'line-height'는 설정되어 있지 않습니다. –

+0

네,이 경우에는 논리입니다. line-height가 세 번째 경우에도 작동하지 않아야합니다 ... 역시'calc' 함수가 필요합니다;) –

답변

2

는이 같은 calc를 사용해야합니다 :

--default-line-height는이 같은 ( 유효하지) 그래서 evalutated하기 전에 font 속성에 교체
html { 
    --default-font-size: 16px; 
    --default-line-height: calc(var(--default-font-size) * 2); 
    font: var(--default-font-size)/var(--default-line-height) Arial; 
} 

:

font: var(--default-font-size)/var(--default-font-size) * 2 Arial; 

calc을 사용하면 표현식을 평가하고 올바른 구문을 사용할 수 있습니다. 세 번째 예도 작동하지 않습니다. 그것이 calc

p { 
 
    --default-font-size: 16px; 
 
    --default-line-height: calc(var(--default-font-size) * 4); 
 
    font: var(--default-font-size)/var(--default-line-height) Arial; 
 
}
<p>lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum</p>

+0

하지만이 코드는 파이어 폭스에서만 작동하지 않습니다 ** 다른 브라우저에서 작동합니다. 코드 또는 Firefox의 잘못입니까? ': 루트 { - 그리드 간격 : 12px; --font-size-default : calc (var (- grid-spacing) * 4/3); - 행간 높이 기본값 : calc (var (- grid-spacing) * 2); } html { 글꼴 : var (- font-size-default)/var (줄 높이 기본값) Arial; }' –