2014-05-12 5 views
0

최근 프로젝트에서 EM 미디어 쿼리를 사용하는 방법을 알아 내려고합니다. 그러나 몇 가지 테스트를 거친 후에 미디어 쿼리가 너무 적어서 왜 작동하지 않는지 알았습니다. 본문 대신 학부모 글꼴 크기를 사용하는 것과 관련이있을 수 있습니다. 내 몸은 14px로 설정하고 내 동작은 밖으로 모습 :EM 기반 미디어 쿼리를 해결하는 방법

$break-small: 22.8571em; //320px 
$break-smallish: 40em; //560px 
$break-med: 54.8571em; //768px 
$break-medish: 68.5714em; //960px 
$break-desk: 73.1428em; //1024px 

몸 글꼴 크기 :

body{ 
    font-size: 14px; 
    line-height: 1.5; 
    min-height: 100%; 
} 

* 나는 내가 한 이해 것과 (내 SCSS 브레이크 포인트 변수에서) : 14분의 768을 (의 기본 글꼴 크기) = 폭은 EM의

가 나는 div라는 헤더를했습니다 말해,이 div에는 font-size 설정이 div의 자녀가 없다. 확실하게 그것은 여전히 ​​몸을 사용하게 될 것입니다 font-size?

+0

언제든지 확인할 수 있습니다. 저는 크롬 개발자 도구를 사용하여 글꼴 크기를 설정하는 규칙을 찾거나보다 즉각적인 결과를 위해 계산 된 스타일을 확인할 수 있습니다. 코드가 없으며 포함 된 코드가이 경우 설정을 정확하게 묘사하지 않을 수 있으므로 크롬 또는 원하는 개발자 도구로 직접 확인하시기 바랍니다. –

+0

몸의'''font-size : 14px;''가 표시됩니다. – Doidgey

+0

그렇다면 어떤면에서 "약간 꺼져"있습니까? 문제를 자세히 설명하고 화면 캡쳐를 제공 할 수 있습니까? –

답변

6

미디어 검색어는 글꼴 크기가 body이거나 다른 요소를 기반으로하지 않습니다. 그들은 항상 브라우저 환경 설정에서 사용자가 설정 한 기본 글꼴 크기를 참조합니다. 대부분의 브라우저에서이 기본 글꼴 크기는 약 16px이며 CSS에서는 인 font-size 속성의 초기 값에 해당합니다. spec에서 :

미디어 쿼리의 상대 단위는 초기 값을 기반으로합니다. 즉, 단위는 선언 결과에 기반하지 않습니다. 예를 들어, HTML에서 'em'단위는 'font-size'의 초기 값에 상대적입니다.

이 같은 기본 글꼴 크기는 (here 참조) html 인 루트 요소, 하지body에 의해 상속됩니다. body에 상대 글꼴 크기를 지정하면 body은 계산 된 글꼴 크기가 html 인 자체 계산을 기반으로합니다. 즉, font-sizehtml에 설정하면 이 아닌은 미디어 쿼리에서 ems가 계산되는 방식에도 영향을 미칩니다.

+0

좋은 나는 그 & 내가 이것을 알아 내려고 애쓰는 것을 알지 못했다. ** [FIDDLE] (http://jsfiddle.net/UjgUj/2/) ** –

+0

위대한 정보에 감사드립니다. 그래서 기본적으로 대부분의 사용자는 브라우저 기본값에 따라 너비를 조정해야합니다. 16px입니까? – Doidgey

+0

이걸 알고있는 것 같아요. 저에게 em을 사용하는 것은 정말 나쁜 생각 인 것 같습니다. 왜냐하면 여러분은 누군가의 브라우저 글꼴의 기본 크기를 확실히 알지 못하기 때문에 사람들이이 모든 시간을 사용하는 것을 보았습니까? 왜 그런가요? – Michael

0

짐작할 만하다면 em 단위는 문서 루트를 기준으로하지 않고 부모 요소의 font-size에 상대적인 글꼴 크기를 설정합니다. 후자를 찾고있는 경우 rem 장치를 찾고 있지만 응용 프로그램에 따라 browser support이 문제 일 수 있습니다. http://jsfiddle.net/afp46/

HTML :

<span >This is text</span> 

<div><span >This is text</span></div> 

<span><span>This is text</span></span> 

CSS :

body { 
    font-size: 14px; 
} 

div { 
    font-size: 16px; 
} 

span { 
    font-size: 1.2em; 
} 
+1

귀하의 답변은 2014 년 3 월 12 일 이후입니다. 이제 저는'rem' 유닛에 대한 브라우저 지원이 이제 전 체적으로 완벽하다는 것을 명확히하고 싶었습니다. ** 참고 : ** Opera mini는 'rem'단위를 지원하지 않지만 [Opera Mini는 다른 브라우저와 매우 다르게 작동합니다] (http://en.wikipedia.org/wiki/Opera_Mini)와 많이 부족합니다. 기본 CSS 기능까지도 지원할 수 있습니다. 이는 의도적 인 것입니다. –

0

내가 몸 글꼴 크기를 100 %로 그 변경 것입니다 다음은이

샘플에 대해 다음과 바이올린을 참조하십시오 EM 및 % s 사이트의 유연성

0

font-s rem으로 "root em"을 나타냅니다. 그것은 훨씬 더 일관성이 있습니다.여기에 대해 자세히 알아보기 : http://snook.ca/archives/html_and_css/font-size-with-rem

또한, 나는 당신의 CSS에이를 추가하는 것이 좋습니다 :

html { 
    font-size: 62.5%; 
} 

지금, 당신의 REMS 또는 EMS는 쉽게 변환 할 수 있습니다. 10px font-size는 1rem 또는 1em이됩니다. 좋았지? :) 다시 말하지만, 요즘은 훨씬 더 나은 연습 인 rems를 사용합니다.

관련 문제