CSS 전환 상태를 전환하기 위해 CSS 전환을 사용하고 있습니다 (기본적으로 요소의 크기 전환). 요소가 전환 될 때 페이지의 나머지 텍스트 (Webkit에서)는 전환이 완료 될 때까지 렌더링을 약간 변경하는 경향이 있습니다.
바이올린 : http://jsfiddle.net/russelluresti/UeNFK/
나는 또한 이것이 -webkit-font-smoothing: antialiased
속성 / 값 쌍이 있는 내 헤더에서 발생하지 않는다는 것을 알았 습니다. 그래서 나는 텍스트가 기본 모양 (글꼴 스무딩에 대한 “자동”값)을 유지하고 전환 중에 렌더링을 변경하지 않도록하는 방법이 있는지 궁금합니다.
“자동”값을 사용하도록 텍스트를 명시 적으로 설정하려고 시도했지만 아무 작업도 수행하지 않습니다. 또한 font-smoothing을 “none”으로 설정하면 전환 중에 렌더링 깜박임이 방지됩니다.
도움을 주시면 감사하겠습니다.
편집 1
제가 OS X를 사용하고 있다는 점에 유의해야합니다. Parallels의 Chrome에서 테스트를 보는 동안 두 개의 다른 단락이 다르게 작동하는 것을 보지 못했기 때문에 이것은 Mac 전용 문제 일 수 있습니다.
답변
해결책을 찾은 것 같습니다.
-webkit-transform: translateZ(0px);
부모 요소에 하드웨어 가속 을 강제 하면 문제가 해결되는 것 같습니다 …
편집
주석에서 언급했듯이,이 해킹은 글꼴 부드럽게하기를 비활성화하고 글꼴, 브라우저 및 OS에 따라 텍스트 렌더링을 저하시킬 수 있습니다!
답변
2020 년 8 월 업데이트
더 이상 하위 픽셀 글꼴 다듬기를 활성화하기 위해 미디어 쿼리로 Safari를 대상으로 지정할 필요가 없습니다. 기본값은 괜찮습니다.
그러나 기본적으로 하위 픽셀 글꼴 다듬기를 사용 하지만 , 일관된 텍스트 렌더링을 원하는 모든 사람을 위해 Chrome의 글꼴 다듬기 에서 연고 에 중요한 부분이 있습니다 .
위의 문자 e에서 전체의 크기를보십시오. 어두운 배경의 밝은 텍스트는 밝은 배경의 어두운 텍스트 (동일한 CSS 글꼴 스타일)보다 눈에 띄게 더 무거운 가중치로 렌더링됩니다.
사용자의 어둡거나 밝은 테마 설정을 존중하는 사이트의 한 가지 해결책은 어두운 모드로 제한된 미디어 쿼리로 Chrome을 타겟팅하고 다음과 같이 하위 픽셀이 아닌 스무딩으로 전환하는 것입니다.
@media screen
and (-webkit-min-device-pixel-ratio: 0)
and (min-resolution: 0.001dpcm)
and (prefers-color-scheme: dark) {
body {
-webkit-font-smoothing: antialiased;
}
}
결과 :
빛을 어둡게 렌더링하든, 어둡게 렌더링하든 관계없이 훨씬 더 일관된 텍스트 가중치.
–
2018 년 5 월 업데이트
-webkit-font-smoothing: subpixel-antialiased
이제 Chrome에서는 효과가 없지만 Safari에서는 여전히 많은 것을 개선하지만 RETINA에서만 가능합니다. 망막 화면의 Safari에서 텍스트가 없으면 텍스트가 얇고 멍청한 반면 텍스트가 있으면 적절한 무게가 있습니다. 그러나 Safari의 비 레티 나 디스플레이에서 이것을 사용하면 (특히 가벼운 값에서) 텍스트는 재앙입니다. 미디어 쿼리를 사용하는 것이 좋습니다.
@media screen and (-webkit-min-device-pixel-ratio: 2) {
body {
-webkit-font-smoothing: subpixel-antialiased;
}
}
-webkit-font-smoothing: subpixel-antialiased
더 얇은 앤티 앨리어싱 된 텍스트를 적어도 부분적으로 피하려는 경우 명시 적으로 설정 하는 것이 현재 최상의 솔루션입니다.
–tl; dr–
기본 글꼴 렌더링이 하위 픽셀 앤티 앨리어싱을 사용하는 Safari와 Chrome 모두에서, 위의 제안처럼 translateZ를 사용하여 변환을 사용하거나 심지어 크기 전환 만 사용하도록 GPU 기반 렌더링을 강제하는 CSS는 Safari와 Chrome이 자동으로 “포기”합니다. “하위 픽셀 앤티 앨리어싱 된 글꼴 다듬기 대신 앤티 앨리어싱 된 텍스트로 전환합니다.이 텍스트는 특히 Safari에서 훨씬 더 밝고 얇아 보입니다.
다른 응답은 단순히 더 얇은 안티에 일리 어스 텍스트에 글꼴을 부드럽게 설정하거나 강제하여 지속적인 렌더링을 유지하는 데 중점을 두었습니다. 내 눈에 translateZ 또는 backface hidden을 사용하면 텍스트 렌더링의 품질이 크게 저하되며 텍스트가 일관성을 유지하고 더 얇은 텍스트를 사용하는 것이 괜찮을 경우 최상의 솔루션 -webkit-font-smoothing: antialiased
입니다. 그러나 명시 적으로 설정하면 -webkit-font-smoothing: subpixel-antialiased
실제로 약간의 효과가 있습니다. 텍스트는 여전히 약간 변경되고 GPU에서 렌더링되는 전환 중에 눈에 띄게 얇아 지지만이 설정이 없을 때만 큼 얇지는 않습니다. 따라서 이것은 최소한 부분적으로 안티 에일 리 어스 텍스트로의 전환을 방해하는 것처럼 보입니다.
답변
나는 -webkit-backface-visibility : hidden;을 사용하여 전환으로 인해 그래픽 문제 (깜박임 / 말더듬 / 잘림 등)가 발생할 때마다 거의 매번 발견했습니다. 작용하는 요소에 대해 문제를 해결하는 경향이 있습니다.
답변
하드웨어 가속으로 인한 텍스트 렌더링 변경을 방지하려면 다음 중 하나를 수행 할 수 있습니다.
-
모든 텍스트를 -webkit-font-smoothing : antialiased로 설정합니다. 이는 텍스트가 더 얇고 하위 픽셀 앤티 앨리어싱이 아님을 의미합니다.
-
하드웨어 가속의 영향을받는 텍스트가 하위 픽셀 앤티 앨리어싱 (기본 글꼴 다듬기)되도록하려면 해당 텍스트를 테두리없이 입력 내부에 넣고 비활성화하면 해당 하위 픽셀이 앤티 앨리어싱됩니다 (최소한 Mac OS X의 Chrome). 다른 플랫폼에서는 테스트하지 않았지만 하위 픽셀 안티 앨리어싱이 중요한 경우이 트릭을 사용할 수 있습니다.
답변
Mac에서 Firefox를 사용하는 경우 다음 CSS를 사용하여 문제를 해결하는 것이 좋습니다.
-moz-osx-font-smoothing: grayscale;
자세한 내용 은 Firefox 및 Opera의 Webfont Smoothing and Antialiasing 에서 확인 하세요.
답변
이것이 나를 위해 일한 것입니다. 도움이 되었기를 바랍니다. 다른 stackoverflow 게시물에서 발견되었습니다.
-webkit-font-smoothing:antialiased;
-webkit-backface-visibility:hidden;