CSS Pulsuz, qeydiyyatsız

CSS clamp() kalkulyatoru

Ən kiçik və ən böyük şrift ölçüsünü, həmçinin onlara aid ekran enlərini yazın — alət clamp() düsturunu hesablayır, şrift ölçüsünün ekran enindən asılılığını qrafikdə göstərir və font-size üçün hazır CSS verir.

Nəticə
Hazır CSS kodu
h1 {
  font-size: clamp(1rem, 0.6667rem + 1.6667vw, 2rem);
}

Necə istifadə etmək olar

  1. Minimum və maksimum şrift ölçüsünü piksellə yazın, məsələn, telefonda 16px, geniş ekranda 32px.
  2. Şriftin böyüməyə başladığı və dayandığı ekran enlərini seçin: adətən 320px və 1280px.
  3. Nəticənin vahidini seçin: rem (tövsiyə olunur) və ya px. rem üçün root şrift ölçüsünü yoxlayın, adətən 16.
  4. Qrafikdəki işarəni sürüşdürün və ya «Yoxlanılan ekran eni» sürgüsünü çəkin — nümunə başlıq həmin en üçün hesablanmış ölçüdə göstərilir. Kodu götürmək üçün «Kopyala» düyməsini basın.

Bu necə işləyir

Düstur necə işləyir

Şrift ölçüsü iki nöqtədən keçən düz xətt üzrə dəyişir: (minVw, min) və (maxVw, max). Maillik slope = (max − min) / (maxVw − minVw), sürüşmə isə intercept = min − slope × minVw kimi tapılır. CSS-də maillik vw ilə yazılır: 1vw pəncərə enin 1%-dir, ona görə slope × 100 götürülür. Nəticə clamp(min, intercept + slope×100vw, max) olur: minimum endən aşağıda ölçü sabitdir, iki en arasında artır, maksimum endən yuxarıda yenə sabit qalır.

font-size: clamp(1rem, 0.6667rem + 1.6667vw, 2rem);

Niyə düsturda rem də lazımdır

Yalnız vw ilə yazılmış ölçü (font-size: 2vw) səhifəni böyütdükdə (zoom) böyümür: zoom zamanı pəncərənin eni CSS-piksellə kiçilir və mətnin ekrandakı real ölçüsü dəyişmir. Bu, WCAG 1.4.4 Resize Text meyarını pozur — mətn 200%-ə qədər böyüdülə bilməlidir. rem hissəsi həm zoom-a, həm də brauzer ayarlarındakı şrift ölçüsünə reaksiya verir; rem ilə yazılmış sərhədlər də böyüyür. Tez-tez deyilən qayda: maksimum ölçü minimumun təxminən 2,5 mislindən çox olmasın.

min(), max() və clamp()

clamp(MIN, VAL, MAX) həm aşağı, həm yuxarı sərhədi birlikdə qoyur və max(MIN, min(VAL, MAX)) ilə eynidir. min() yalnız yuxarıdan, max() yalnız aşağıdan məhdudlaşdırır.

font-size: min(5vw, 3rem);   /* 3rem-dən böyük olmaz */
font-size: max(1rem, 2vw);   /* 1rem-dən kiçik olmaz */

clamp() təkcə şrift üçün deyil

Uzunluq qəbul edən istənilən xassə onu dəstəkləyir: padding, margin, gap, width. Axıcı boşluqlar mətnlə birlikdə nisbəti saxlayır. Boşluqlar üçün çox vaxt sadə clamp(1rem, 5vw, 3rem) kifayətdir, kalkulyatorun orta hədli isə iki en arasında dəqiq keçid lazım olanda yarayır.

padding-inline: clamp(1rem, 5vw, 3rem);
gap: clamp(0.75rem, 2vw, 2rem);

Tez-tez verilən suallar

clamp() şrift üçün media-sorğulardan nə ilə yaxşıdır?

Media-sorğular ölçünü breykpointlərdə pillə-pillə dəyişir, clamp() isə eninin hər pikselində hamar dəyişir. Daha az qayda və breykpoint lazımdır. Dizayn dəqiq pilləli ölçülər tələb edirsə, media-sorğular yenə yerinə düşür.

Min və maks ekran eni üçün hansı dəyərləri seçməli?

Ən çox 320px (kiçik telefon) və 1280–1440px (noutbuk və ya konteynerin maksimum eni) götürülür. Maksimumu məzmun enine yaxın seçin: ondan sonra mətn artıq böyümür. Nəzərə alın ki, vw klassik sürüşdürmə zolağının enini də daxil edir.

Nəticəni rem, yoxsa px ilə almalı?

rem daha yaxşıdır: brauzer ayarlarındakı şrift ölçüsünü nəzərə alır və mətn böyüdülə bilən qalır. Piksel dəyərləri istifadəçinin şrift ayarını izləmir, ona görə px-i yalnız şüurlu seçimlə istifadə edin.

clamp() brauzerlərdə dəstəklənirmi?

Bəli, 2020-ci ildən bütün müasir brauzerlərdə (Chrome 79, Firefox 75, Safari 13.1) işləyir. Çox köhnə brauzerlər üçün əvvəlcə adi font-size: 1.25rem;, ardınca clamp() sətrini yazın — köhnə brauzer başa düşmədiyi sətri sadəcə buraxır.

HTML və CSS kursunda bu mövzu

Digər CSS alətləri

CSS gradient generatoru Linear, radial və conic gradient: rəngləri, bucağı və nöqtələri seçin, hazır kodu kopyalayın. Flexbox generatoru və playground Konteyner və elementlərin flex xassələrini sınayın: istiqamət, düzləmə, boşluq və hazır CSS. CSS Grid generatoru Sütun və sətir ölçülərini seçin, boşluğu və düzləməni tənzimləyin, hazır grid kodunu kopyalayın. CSS box-shadow generatoru Kölgənin yerini, bulanıqlığını, rəngini və laylarını seçin, hazır box-shadow kodunu kopyalayın. Cubic-bezier generatoru Easing əyrisinin nöqtələrini sürüşdürün və hazır CSS transition kodunu kopyalayın. SVG animasiya generatoru Forma və effekt seçin — səhifəyə yapışdırmaq üçün hazır SVG və CSS keyframes alın. CSS specificity kalkulyatoru Seçiciləri yazın — (a,b,c) ağırlığını, rəngli təhlilini və hansı qaydanın qalib gəldiyini görün. CSS box model vizualizatoru Content, padding, border və margin-i DevTools tipli sxemdə görün və hazır CSS kodunu alın. CSS transform generatoru Elementi sürüşdürün, fırladın, böyüdün və əyin: ilkin mövqe önizləmədə görünür, kod hazırdır. Rəng kontrastı yoxlayıcısı (WCAG) Mətn və fon rənginin kontrastını WCAG AA və AAA üzrə yoxlayın, uyğun gəlməyən cütü düzəldin. CSS clip-path generatoru Poliqon, dairə, ellips və kəsilmiş künclər: nöqtələri sürüşdürün və hazır CSS kodunu kopyalayın. CSS Glassmorphism generatoru Mat şüşə effekti: backdrop-filter blur, şəffaflıq, kənar işığı və hazır CSS kodu. CSS border-radius (Blob) generatoru Üzvi formalar və 8 dəyərli border-radius: radiusları sürüşdürün, canlı blob animasiyasını yoxlayın. CSS Stacking Context və z-index vizualizatoru z-index: 9999 niyə işləmir? 3D laylar görünüşü ilə CSS Stacking Context mexanizmini və səbəblərini vizual öyrənin. CSS aspect-ratio və object-fit generatoru Şəkillərin deformasiyasına və CLS sıçrayışlarına son: aspect-ratio proporsiyaları və object-fit fokus nöqtəsi canlı. CSS Filtr Studiyası və generatoru Qrafik redaktorsuz foto effektləri: blur, contrast, hue-rotate, sepia və Instagram üslublu hazır presətlər. OKLCH rəng generatoru və palitrası Göz üçün bərabər parlaqlıq və Display P3 canlı rənglər: OKLCH konvertasiyası, qradasiya və harmonik palitralar. CSS Scroll-driven Animations generatoru JavaScript olmadan skroll animasiyaları: animation-timeline scroll() və view() ilə oxuma lenti və kartların açılması. CSS Container Queries (@container) generatoru Media sorğularına son: komponent ekran ölçüsünə deyil, öz konteynerinin eninə uyğunlaşır. Canlı ölçü dəyişmə və @container qaydaları.
WhatsApp