max-font-size를 구현하는 방법은 무엇입니까?
vw
에서와 같이 사용하여 글꼴 크기를 지정하고 싶습니다 .
font-size: 3vw;
그러나 글꼴 크기를 36px로 제한하고 싶습니다. max-font-size
미디어 쿼리를 사용하는 유일한 옵션 인 존재하지 않는에 해당하는 항목을 어떻게 얻을 수 있습니까?
font-size: 3vw;
글꼴 크기가 뷰포트 너비의 3 %가됨을 의미합니다. 따라서 뷰포트 너비가 1200px 인 경우 글꼴 크기는 3 % * 1200px = 36px가됩니다.
따라서 기본 3vw 글꼴 크기 값을 재정의하기 위해 단일 미디어 쿼리를 사용하여 36px의 max-font-size를 쉽게 구현할 수 있습니다.
Codepen 데모 (브라우저 크기 조정)
div {
font-size: 3vw;
}
@media screen and (min-width: 1200px) {
div {
font-size: 36px;
}
}
<div>hello</div>
즉 font-size
, 위의 방식으로 뷰포트 단위를 사용 하는 것은 뷰포트 너비가 훨씬 작을 때 (예 : 320px) 렌더링 된 글꼴 크기가 0.03 x 320 = 9.6px가되어 매우 (너무) 작아지기 때문에 문제가됩니다.
이 문제를 극복하기 위해 Fluid Type AKA CSS Locks 라는 기술을 사용하는 것이 좋습니다 .
CSS 잠금은 다음과 같은 특정 종류의 CSS 값 계산입니다.
- 최소값과 최대 값이 있습니다.
- 두 개의 중단 점 (일반적으로 뷰포트 너비에 따라),
- 중단 점 사이에서 실제 값은 최소값에서 최대 값까지 선형 적으로 이동합니다.
( 이 기사에서 CSS 잠금에 대한 자세한 내용 도 설명합니다.)
따라서 최소 글꼴 크기가 600px 이하의 뷰포트 너비에서 16px가되도록 위의 기술을 적용하고 1200px의 뷰포트 너비에서 최대 32px에 도달 할 때까지 선형 적으로 증가한다고 가정 해 보겠습니다.
CSS가 다음과 같이 보이도록 모든 수학을 수행 하는 이 SASS 믹스 인 을 사용할 수 있습니다 .
/*
1) Set a min-font-size of 16px when viewport width < 600px
2) Set a max-font-size of 32px when viewport width > 1200px and
3) linearly increase the font-size from 16->32px
between a viewport width of 600px-> 1200px
*/
div {
@include fluid-type(font-size, 600px, 1200px, 16px, 32px);
}
// ----
// libsass (v3.3.6)
// ----
// =========================================================================
//
// PRECISE CONTROL OVER RESPONSIVE TYPOGRAPHY FOR SASS
// ---------------------------------------------------
// Indrek Paas @indrekpaas
//
// Inspired by Mike Riethmuller's Precise control over responsive typography
// http://madebymike.com.au/writing/precise-control-responsive-typography/
//
// `strip-unit()` function by Hugo Giraudel
//
// 11.08.2016 Remove redundant `&` self-reference
// 31.03.2016 Remove redundant parenthesis from output
// 02.10.2015 Add support for multiple properties
// 24.04.2015 Initial release
//
// =========================================================================
@function strip-unit($value) {
@return $value / ($value * 0 + 1);
}
@mixin fluid-type($properties, $min-vw, $max-vw, $min-value, $max-value) {
@each $property in $properties {
#{$property}: $min-value;
}
@media screen and (min-width: $min-vw) {
@each $property in $properties {
#{$property}: calc(#{$min-value} + #{strip-unit($max-value - $min-value)} * (100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)});
}
}
@media screen and (min-width: $max-vw) {
@each $property in $properties {
#{$property}: $max-value;
}
}
}
// Usage:
// ======
// /* Single property */
// html {
// @include fluid-type(font-size, 320px, 1366px, 14px, 18px);
// }
// /* Multiple properties with same values */
// h1 {
// @include fluid-type(padding-bottom padding-top, 20em, 70em, 2em, 4em);
// }
////////////////////////////////////////////////////////////////////////////
div {
@include fluid-type(font-size, 600px, 1200px, 16px, 32px);
}
@media screen and (max-width: 600px) {
div {
font-size: 16px;
}
}
@media screen and (min-width: 1200px) {
div {
font-size: 36px;
}
}
<div>Responsive Typography technique known as Fluid Type or CSS Locks.
Resize the browser window to see the effect.
</div>
Codepen 데모
추가 읽기
CSS Poly Fluid Sizing을 사용한 유연한 반응 형 타이포그래피
또 다른 방법으로 글꼴 크기를 천천히 늘리면 최대 글꼴 크기가 제한되지 않지만 매우 넓은 화면에서도 더 좋아 보입니다. 질문에 완벽하게 답하지는 않지만 1 줄 ...
font-size: calc(16px + 1vw);
여기 또 다른 아이디어가 있습니다. calc 함수는 배정 밀도 부동 소수점을 사용합니다. 따라서 1e18 근처에서 계단 함수를 나타냅니다. 예를 들면
width: calc(6e18px + 100vw - 6e18px);
0px, 1024px, 2048px 등의 값으로 스냅됩니다. 펜 https://codepen.io/jdhenckel/pen/bQNgyW 참조
단계 함수는 몇 가지 영리한 수학으로 abs 값과 최소 / 최대를 생성하는 데 사용할 수 있습니다. 예를 들어
max(x, y) = x - (x + y) * step(y - x)
Given step(z) is zero when z<0 and one otherwise.
just an idea, not very practical, but maybe fun to try.
At some point, the font-size
exceeds the 36px
scale right, find that. Assuming, it exceeds when the width: 2048px
:
@media screen and (min-width: 2048px) {
.selector {
font-size: 36px;
}
}
Yes, unfortunately you need to use the @media
queries. I hope that doesn't affect anything.
ReferenceURL : https://stackoverflow.com/questions/40528290/how-to-implement-max-font-size
'IT TIP' 카테고리의 다른 글
Laravel 컬렉션에서 특정 속성 만 가져옵니다. (0) | 2021.01.10 |
---|---|
Typescript 인터페이스 내의 모든 속성을 선택 사항으로 설정 (0) | 2021.01.10 |
UI 및 게임 오브젝트에서 클릭 / 터치 이벤트를 감지하는 방법 (0) | 2021.01.10 |
함수형 프로그래밍의 핵심 개념은 무엇입니까? (0) | 2021.01.10 |
SQL "like"와 유사한 JavaScript 연산자 (0) | 2021.01.10 |