Anasayfa » Kodlama » CSS Grid Layout Nasıl Kullanılır minmax ()

    CSS Grid Layout Nasıl Kullanılır minmax ()

    CSS Izgara Düzeni Modülü bir araya getirerek bir sonraki seviyeye duyarlı tasarım alır. yeni tür esneklik bu daha önce hiç görülmedi. Şimdi sadece yapamayız özel ızgaraları tanımla sadece saf CSS ile cayır cayır yanan hızlı ama CSS Grid ayrıca birçok gizli mücevher bu, şebekeyi daha da ince ayarlamamızı ve karmaşık düzenler elde etmemizi sağlar..

    en az en çok() fonksiyon bu daha az bilinen özelliklerden biridir. Izgara izinin boyutunu tanımlamayı mümkün kılar minimum ila maksimum aralık Böylece, şebekenin her kullanıcının görünümüne mümkün olan en iyi şekilde adapte olabilmesi için.

    Sözdizimi

    Sözdizimi en az en çok() fonksiyon nispeten basittir, sürer iki argüman: minimum ve maksimum değer:

     minmax (min, maks) 

    min değer daha küçük olmalı den maksimum, aksi takdirde maksimum tarayıcı tarafından göz ardı edilir.

    Kullanabiliriz en az en çok() işlevi değeri Izgara şablon sütunlar veya Izgara şablon satır mülk (veya her ikisi de). Örneğimizde, çok daha sık kullanılan bir durum olduğundan, eskisini kullanacağız..

     .konteyner ekran: ızgara; ızgara şablonu şablon sütunları: minmax (100px, 200px) 1fr 1fr; ızgara-şablon satırları: 100 piksel 100 piksel 100 piksel; ızgara aralığı: 10 piksel;  

    Aşağıdaki Codepen demosunda, HTML ve CSS kodu makale boyunca kullanacağız.

    Kullanabiliriz farklı tür değerler içinde en az en çok() işlev, tüm ne tür özel ızgara oluşturmak istediğimize bağlı.

    Statik uzunluk değerleri

    Bunu nasıl kullanabileceğimizin iki temel yolu vardır. en az en çok() ile işlev statik uzunluk değerleri.

    İlk önce kullanabiliriz en az en çok() sadece bir ızgara sütunu için ve diğer sütunların genişliğini basit statik değerler olarak tanımlayın (burada piksel).

     ızgara şablonu şablon sütunları: minmax (100px, 200px) 200px 200px; 

    Aşağıdaki gif demosunda, bu düzenin duyarlı değil, ancak ilk sütun biraz esneklik. İkinci ve üçüncü sütunlar sabit genişliklerini (200px) korurken, ilk sütun 100px ile 200px arasında değişmektedir., kullanılabilir alana göre.

    İkincisi, genişliğini tanımlayabiliriz birden fazla ızgara sütunu kullanma en az en çok(). Min ve max değerlerinin her ikisi de statiktir, bu nedenle varsayılan olarak ızgara duyarlı değil. Ancak, sütunların kendileri esnek, ama sadece 100px ile 200px arasında. Onlar aynı anda büyümek ve küçülmek görünüm boyutunu değiştirdikçe.

     ızgara şablonu şablon sütunları: minmax (100px, 200px) minmax (100px, 200px) minmax (100px, 200px); 

    Biz de yapabiliriz unutmayın kullan tekrar et() fonksiyon birlikte en az en çok(). Böylece, önceki kod pasajı da şöyle yazılabilir:

     ızgara şablonu şablon sütunları: tekrar (3, minmax (100px, 200px)); 

    Dinamik uzunluk değerleri

    Statik değerler dışında, en az en çok() işlev ayrıca kabul eder yüzde birimleri ve yeni kesir (fr) birimi argümanlar olarak. Bunları kullanarak, her ikisi de özel ızgaralar elde edebilirsiniz duyarlı ve boyutlarını değiştir mevcut alana göre.

    Aşağıdaki kod, ilk sütunun genişliğinin olduğu bir ızgarayla sonuçlanır. % 50 ile% 80 arasında değişmektedir ikinci ve üçüncü kalan alanı eşit olarak paylaş.

     ızgara şablonu şablon sütunları: minmax (% 50,% 80) 1fr 1fr; 

    İle dinamik değerler kullandığımızda en az en çok() fonksiyonu, ayarlamak için çok önemlidir mantıklı olan kural. Size bir örnek göstereyim. ızgara parçalanıyor:

     ızgara şablonu şablon sütunları: minmax (1fr, 2fr) 1fr 1fr; 

    Bu kural, tarayıcı olduğu gibi bir anlam ifade etmiyor. karar verememek hangi değere atanacak en az en çok() işlevi. Asgari değer bir 1fr 1fr 1fr sütun genişliği, maksimum 2fr 1fr 1fr. Ancak, her ikisi de çok küçük bir ekranda bile mümkündür. Orada tarayıcı ile ilgili hiçbir şey.

    İşte sonuç:

    Statik ve dinamik değerleri birleştirin

    Mümkün statik ve dinamik değerleri birleştir. Örneğin, yukarıdaki Codepen demosunda, minmax (100px, 200px) 1fr 1fr; ilk sütunun bulunduğu bir ızgarada sonuçlanan kural 100 piksel ve 200 piksel arasında değişir ve kalan alan diğer ikisi arasında eşit paylaşılan.

     ızgara şablonu şablon sütunları: minmax (100px, 200px) 1fr 1fr; 

    Vitrinin büyümesiyle ilk sütunun 100px'den 200px'e çıktığını gözlemlemek ilginçtir. Fr birimi tarafından yönetilen diğer ikisi büyümeye başlar sadece ilki maksimum genişliğe ulaştıktan sonra. Bu, mantıksaldır, çünkü kesir biriminin amacı, kullanılabilir (kalan) alanı bölmektir..

    Min içerik, max-içerik, ve Oto anahtar kelimeler

    Orada bir üçüncü tür değer biz atayabiliriz en az en çok() işlevi. Min içerik, max-içerik, ve Oto anahtar kelimeler, bir ızgara izinin boyutları ile içerdiği içerik.

    max-içerik

    max-içerik anahtar kelime tarayıcıyı kılavuz sütununun olması gerektiği gibi yönlendirir içerdiği en geniş eleman kadar geniş.

    Aşağıdaki demoda, bir 400 piksel genişliğinde görüntü ilk izlemenin içinde ve aşağıdaki CSS kuralını kullandı (makalenin sonunda değiştirilmiş kodun tamamını içeren bir Codepen demosu bulabilirsiniz):

     .konteyner ızgara-şablon-sütunlar: max-içerik 1fr 1fr; / ** * minmax () notasyonu ile aynıdır: * grid-template-column: minmax (max içerik, max içerik) 1fr 1fr; * / 

    Kullanmadım en az en çok() Henüz gösterilmemiş, ancak yukarıdaki kod yorumunda aynı kodun onunla nasıl görüneceğini görebilirsiniz (burada gereksiz olmasına rağmen).

    Görebileceğiniz gibi, ilk ızgara sütunu en geniş elemanı kadar geniş (burada görüntü). Bu şekilde, kullanıcılar her zaman görüntüyü görebilir tam boyutlu. Ancak, belirli bir görünüm alanı boyutunda, bu düzen duyarlı değil.

    Min içerik

    Min içerik anahtar kelime tarayıcıyı ızgara sütununun geniş olması gerektiği kadar yönlendirir. içerdiği en dar eleman, bir şekilde taşma yol açmaz.

    İlk sütunun değerini değiştirirsek, görüntülü önceki demonun nasıl göründüğünü görelim. Min içerik:

     .konteyner ızgara-şablon-sütunlar: min-içerik 1fr 1fr; / ** * minmax () notasyonu ile aynıdır: * ızgara şablonu şablon sütunları: minmax (min içeriği, min içeriği) 1fr 1fr; * / 

    İlk ızgara hücresinin tam boyutunu görebilmeniz için resmin altındaki yeşil arka planı bıraktım.

    Görebileceğiniz gibi, ilk sütun en küçük genişliği korur taşma olmadan elde edilebilir. Bu örnekte, bu, 4. ve 7. ızgara hücrelerinin minimum genişliği ile tanımlanacaktır. dolgu malzemesi ve yazı Boyutu özellikleri, ilk hücrede görüntü olarak sıfıra büzülmüş olabilir taşma olmadan.

    Izgara hücresi bir metin dizesi içeriyorsa, Min içerik olabilir en uzun kelimenin genişliğine eşit, taşma olmadan daha fazla küçültülemeyen en küçük eleman budur. İşte BitsOfCode tarafından yazılan harika bir makale. Min içerik ve max-içerik ızgara hücresi bir metin dizesi içerdiğinde davranır.

    kullanma Min içerik ve max-içerik birlikte

    Eğer biz kullanım Min içerik ve max-içerik birlikte içinde en az en çok() işlevi, şöyle bir ızgara sütununu alırız:

    1. duyarlı
    2. taşma yok
    3. en geniş elemanından daha genişlemiyor
     .konteyner ızgara-şablon-sütunlar: minmax (min içerik, maksimum içerik) 1fr 1fr;  

    Biz de kullanabilirsiniz Min içerik ve max-içerik anahtar kelimeler diğer uzunluk değerleri ile birlikte içinde en az en çok() işlev, kural mantıklı olana kadar. Örneğin, minmax (% 25, ​​maksimum içerik) veya minmax (min içerik, 300px) her ikisi de geçerli kurallar olurdu.

    Oto

    Sonunda, biz de kullanabilirsiniz Oto anahtar kelime bir argüman olarak en az en çok() fonksiyon.

    Ne zaman Oto olduğu maksimum olarak kullanılır, değeri aynı max-içerik.

    Olduğu zaman minimum olarak kullanılır, değeri dakika-genişliği / dakika yükseklikte kural, bu demektir ki Oto bazen aynıdır Min içerik, fakat her zaman değil.

    Önceki örneğimizde, Min içerik eşit Oto, İlk ızgara kolonunun minimum genişliği her zaman minimum yüksekliğinden daha küçük olduğu için. Yani, ait CSS kuralı:

     .konteyner ızgara-şablon-sütunlar: minmax (min içerik, maksimum içerik) 1fr 1fr;  

    şöyle de yazılmış olabilir:

     .konteyner ızgara-şablon-sütunlar: minmax (otomatik, otomatik) 1fr 1fr;  

    Oto anahtar kelime de olabilir diğer statik ve dinamik birimlerle birlikte kullanılır (piksel, fr birimi, yüzde, vb.) en az en çok() örneğin minmax (otomatik, 300 piksel) geçerli bir kural olurdu.

    Nasıl test edebilirsiniz Min içerik, max-içerik, ve Oto anahtar kelimeler ile çalışmak en az en çok() Aşağıdaki Codepen demosunda fonksiyon: