FlexBox, CSS Bloat'ı azaltmak için harika bir araçtır ve kaynak siparişi ve hizalaması gibi şeylerle başa çıkmak için bir miktar şekere sahiptir. Ancak, sütun ve oluk boyutları oluşturan matematiği yapmak için herhangi bir yardım sunmuyor. Birçok uzman art arda durumunda: FlexBox güzeldir, ancak bir ızgara sistemi değil.
FlexBox kullanmalıyız, ancak bizi tasarımın 'Geocities Dönemi' dışında çeken ızgara sistemlerinin arkasındaki temel kavramları atmamalıyız:
Pek çok FlexBox şebekesi sistemlerinden birini kullanabiliriz, ancak tüm dürüstlükte, bunların arkasındaki stiller çoğunlukla float bazlı ızgaralarla aynıdır. Yazarlar sadece ekran ekleyerek: FlexBox özelliklerinin (örneğin, örneğin bir sınıf gibi bir sınıf) olan bazı yardımcı sınıflar ile birlikte konteynere esnekleyin. .Grid-dikey hizalama ortası şaşkındır Hizala-Öğeler: Merkez ).
Tek fark, şimdi sütunlar 'esnektir', bu da daha önce bahsettiğim şekeri aldığımız anlamına gelir. Ancak bu hala ızgaraların yüzleştiği ana sorunları hala çözmez: ızgara sistemleri hala bir ton CSS şişesi çıktı ve ızgaralar hala sıkıcı.
Izgara yazarları tipik olarak, bazı keyfi aygıt boyutuna göre düzenleyebilen, kaynak siparişi, hizalayabilecek ve yeniden boyutlandırabilen büyük CSS paketlerini dağıtır. Bazı hasarları azaltmak için Gzip'e güveniyorlar, ancak bu hepsini anlamıyor. Ya bu ekstra özelliklere ihtiyacınız yoksa?
Şu anda kullandığınız çerçeveyi varsayarsak, Izgara Mixins, en iyi çözüm, bunları öğrenmek ve kendi sütunlarınızı oluşturacak olabilir. Bu, küçük bir şişirim üretir, ancak ızgaralarınızı kesirlere sınırlar ve farklı çerçeveler arasında size çok fazla hareketlilik sunmaz.
İkinci konuyla ilgili. Tasarımcılar, tüm kararlarını aynı derecede büyüklükteki sütunların bir kombinasyonuna dayanarak zihinsel olarak kilitlendi. Sonuç olarak, internetin tamamı bir 'mobil üzerinde bir yığın halinde bulanıklaşmaya başlıyor; 1/12 Sütun kombinasyonları başka bir şeyde 'distopi.
FlexBox tanıtıldı büyümek , bu bizi biraz serbest bıraktı. Şimdi iyi görünen ve kalan alanı gerilmiş bir elemanla dolduran boyutları ayarlayabiliriz, ancak oluklar sayfada sürekli olarak sıraya girer mi? İçerik alanları herhangi bir oranda göz önünde bulundurulur mu, yoksa sadece kanatlara dönelim mi?
Her iki problemin de çözeltisi, PostCSS-ANT adlı bir fonksiyonda sarılır. Postcss eklentileri, WebPack, Gulp veya sadece komut satırı gibi bir dizi yapı aracı ile kullanılabilir. Karınca, düzinelerce karıştırmayı maskeli ve maskeli basit bir API ile düz CSS (veya herhangi bir ön işlemciye) içine sorunsuz bir şekilde karışır. hesaplamak formüller. Şebeke dostu boyutlarda bir pethora almak için iki karışımlı parametre gerektirir.
Bir örnek bu daha net hale getirebilir: genişlik: Boyutları (1/2) Al (1) İadeler Calc (% 99.99 * 1/2 - (30px - 30px * 1/2))) . Bunu bozalım:
Her sütun için genişliği, aralarında bir adet 30px oluklu iki sütunlu bir ızgarada genişlik yapıyoruz:
.Kafes {
Ekran: Flex;
Flex-Wrap: Sarma;
}
.yarım {
Genişlik: Boyutlar (1/2) Al (1); / * Halk'yı döndürür (% 99.99 * 1/2 - (30px - 30px * 1/2)) * /
Marj-sağ: 30px; / * Her sütunun sağ tarafına bir oluk koyar * /
}
.half: nth-child (2n + 2) {/ * 2. elemandan başlar ve 2S * /
Marj-sağ: 0; / * Son oluğu her satırdan kaldırır * /
}
Bu zaten tasarımcıların bu boyutları kullanmaları gerektiğini her yerde kullanmaları gerektiğini, ancak daha derine dalalım.
Boyutları (100px 1/2) Al (1) İadeler 100px . Yeterince basit, ama neden geri dönmek için karınca kullanmalıyız? 100px ? Bir saniye içinde buna ulaşacağız.
Boyutları (100px 1/2) Al (2) İadeler Calc ((% 99.99 - (100px + (30px + (30px + (30px + (30))) * 1/2 - (30px - 30px * 1/2)) . Kutsal saçma. karınca, sabit sayıların toplam boyutunu bulmakta ve daha sonra geri dönüyor 1/2 ne olursa olsun bırakılırsa - nin ızgara dostu bir şekilde.
Bunları kullanabiliriz hesaplamak bir ızgara oluşturmak için formüller 100px sütun ve iki 1/2 Gibi sütunlar (ben atlayacağım .Kafes ağaçları kurtarmak için stiller, ancak bunları kodunuza eklediğinizden emin olun):
.Fixed-beden {
Genişlik: Boyutlar (100px 1/2) Al (1); / * 100px döndürür (aptalca göründüğünü biliyorum ama biraz daha uzun süre benimle ayı) * /
Marj-sağ: 30px;
}
.yarım {
Genişlik: Boyutlar (100px 1/2) Al (2); / * Halk'yı döndürür (((% 99.99 - (100px + (100px + (30px +)) * 1/2 - (30px - 30px * 1/2)) * /
Marj-sağ: 30px;
}
.half: nth-child (3n + 3) {
Marj-sağ: 0;
}
Şimdi daha önce bazı kullanış edilemez boyutlar alabiliriz, ancak bu kadar çok esnek değil ve birçok boyutla uğraşırken çok fazla yazı gerektirebilir.
Ön işlemciler ve postcss, her zaman iyi geçinmez - özellikle özel sözdizimi dahil olduğunda. Neyse ki, karıncının API'si ön işlem dostudur. POSTCSS-SCS gibi bir POSTCSS-SCSS gibi bir POSTCSS-SCS'leri kullanabiliriz. En iyi iş akışını buldum:
Bu, kalbinizin arzularınızı tüm postcss eklentileriyle birlikte size en iyi preforeptsor sözdizimini sunar.
Şimdi havalı şeyler için. Ön işlemciler tipik olarak, bir yineleyici sağlarken belirli bir sayıyı döngü için bir yolu vardır:
@ $ 1'den 3'e kadar {
İçerik: $ i; // içeriği döndürür: 1; İçerik: 2; İçerik: 3;
}
Ön işlemler hakkında küçük bir bilgi ile, ANT'yi gerçekten ilginç yollarla kullanmaya başlayabilirsiniz ...
$ Boyutları: 100px 1/2 1/2;
$ oluk: 30px;
$ uzunluk: uzunluk ($ boyutları);
.column {
Marj-sağ: $ oluk;
@ $ 1 ile $ 1 arasındadır {
& amp;: nth-child (# {$ uzunluk} n + # {$ i}) {
Genişlik: Boyutları ($ Boyutları) Get ($ Gutter);
}
}
& amp;: nth-child (# {$ uzunluk} n + # {$ uzunluk}) {
Marj-sağ: 0;
}
}
Şimdi düzensiz boyutlu sütunlar ek bir işaretleme olmadan yeni satırlara sarılır. Devam et ve bu kodla birlikte tinker. Değişken boyutları, olukları ve yeni boyutlar eklemeyi deneyin (100px otomatik 100px gibi).
Bu karınca ile oldukça yaygın bir paterndir, bu yüzden vanilya CSS ile birlikte çalışan bir mülke sarıldım:
.grid {
Üretim ızgarası: Boyutlar (100px 1/2 1/2); / * Ek seçenekleri geçebilirsiniz, ancak () artık gerekli değildir. * /
}
NTH ızgaraları, geçilecek öğelerin boyutunu ve sayısını bildiğinizde harika, ancak bazen bir konteyner oluşturmak ve sadece oradaki rastgele boyutlu elemanları terk etmek istersiniz. Bu durumlarda, negatif marj Izgaralar en iyi bahsinizdir. Basitçe geçmek negatif marj karınca gibi
.Kafes {
Marj: 0 -15px;
}
.column {
Genişlik: Boyutlar (1/3) GET (1) ızgara (negatif marj);
Marj: 0 15px;
}
Bu örnekler, postcss-karınca yapabileceği tüm serin şeylerde sadece küçük bir bakışıydı. Birkaç isteğe bağlı parametreye ve bir sürü açıklayıcı hata işleme, ancak karıncanın gerçek gücü var.
Biraz veri döndüren 'Aptal' araçları, gücü geliştiricinin ellerine geri getirdikleri için her zaman en iyi araçlardır. Bu, postcss-karınca yapacak şekilde tasarlanmıştır. Eğer meraklıysanız, corysimmons.github.io/postcss-ant Yüz eriyen demolar ve tatlı dokümanlar için.
Bu makale başlangıçta net dergisinin 286 sayısında yayınlandı, Burada satın alın.
İlgili Makaleler:
(Görüntü Kredi: Jason Parnell-Brookes) ATLAMAK: Photoshop Express ..
Photoshop'un ayarlama katmanları olduğu sürece gece dönüşümleri etrafta dolaşıyorlardı, ancak etkinin ustalaşması ço..
Geleneksel bir dijital illüstrasyon iş akışına ilk girdiğimde, benim Boyama Teknikleri Yeni tuval..
Suyu içinde bir şeyle bir şeyle boyadığınızda, bozulmuş bir yansımayı boyama görevini alıyorsunuz. Bu, hayal etmek zor olabilir, bu yüzden başlamadan önce genellikle kendi refe..
Dijital olarak düzenleme ve gösteren, özellikle ticari illüstrasyon projeler için çok fazla anlam ifade ediyor. Geçen yıl..
Tipik olarak, birisi artırılmış gerçeklik veya sanal gerçekliği değerlendirdiğinde, video oyunlarını düşünüyor ola..
Bu eğitim için, kullanıyoruz Vue xstream Bulutlarla dolu bir gökyüzü oluşturmak için. Smoke Sims, örneği..
UX tasarım uzmanlarına olan talebin büyümeye devam ettiği için tasarımcılar, yüksek kaliteli prototipler oluşturacak kadar güçlü olan kullanımı kolay araçlar arıyorlar, ancak..