21.04.2022
Eminim benim gibi CSS yazan birçok kişi, utility class kullanımıyla ilk olarak framework’ler sayesinde tanışmıştır. Bu sayede hem sayfa tasarımını sürekli CSS dökümanına dönmek zorunda kalmadan oluşturmak, hem de artan sayfa sayılarında padding, margin, color gibi değerleri korumak kolaylaşıyor. Sayfanızdaki SEO uyumluluğunu arttırmanın bir yolu da CSS’i verimli şekilde kullanmaktan geçiyor. Burada da utility class devreye giriyor.
Utility class kullanımının inline style’a göre en önemli avantajı, sayfa yüklemesini daha çok HTML odaklı hale getirerek browser’ın üzerindeki yükü azaltması.
Kendi oluşturacağımız utility class’lar sayesinde CSS’de herhangi bir framework kullanmadan sayfa yapısını ve tasarımını hazırlamak mümkün. Bu şekilde herhangi bir CDN’den data çekmek zorunda kalmadığımız için, sayfa daha çok local üzerinden çalışıyor. Bu da arama motorlarında sayfanın SEO uyumluluğunu arttırıyor. Eğer sayfa yüklenirken, her bir dosyayı ve özelliği web üzerindeki kaynaklardan veya CDN’lerden çekmekle uğraşsaydı, arama motorları bunu eksi bir unsur olarak değerlendirecekti. Bundan ötürü sayfamız aramalarda yukarı çıkamayacaktı.
Uzun yıllardır CSS’de bulunan var özelliği ile body’ye atayacağımız root özellikleri sayfanın her yerinde kullanabiliyoruz. Aynı şekilde root özelliklerden, kendi utility class’larımızı oluştururken de faydalanabiliriz.
Aşağıda benim yaptığım örnekteki gibi, bunun için ilk adım olarak kendi root’u kullanarak özelliklerimizi ve var’larımızı oluşturuyoruz.
:root {
--green: #61BE6B;
--text-main: #456278;
--bg-grey: #abbdd9;
--bg-orange: #f0c22b;
--color-main: #6b0e22;
--color-secondary: #693a04;
--div-height: 400px;
--inner-height: 200px;
}
.green-bg {
background-color: var(--green);
}
.grey-bg {
background-color: var(--bg-grey);
}
.color-main {
color: var(--color-main);
}
.color-secondary {
color: var(--color-secondary);
}
Daha sonra HTML’de layout’u oluşturuyoruz:
<div>
<div>
<p>
Lorem ipsum dolor sit amet.
</p>
<p>
Sed ut perspiciatis unde omnis iste.
</p>
</div>
</div>
Layout’a hazırladığımız utility class’ları ekliyoruz ve böylece div’lere şekil veriyoruz.
<div class="green-bg div-height">
<div class="grey-bg inner-height">
<p>
Lorem ipsum dolor sit amet.
</p>
<p>
Sed ut perspiciatis unde omnis iste.
</p>
</div>
</div>
Her iki div’e kendi genişliklerini vererek flex özelliği ile hizalamasını yapıyoruz. Bunun için CSS’e aşağıdaki eklemeleri yapıyoruz.
.w-100 {
width: 100%;
}
.w-50 {
width: 50%;
}
.d-flex {
display: flex;
}
.align-center {
align-items: center;
}
.justify-center {
justify-content: center;
}
Layout’un yeni hali:
<div class="w-100 green-bg div-height d-flex align-center justify-center">
<div class="w-50 grey-bg inner-height">
<p>
Lorem ipsum dolor sit amet.
</p>
<p>
Sed ut perspiciatis unde omnis iste.
</p>
</div>
</div>
Div’in içindeki her bir p’ye, ayrı utility class’lar atayarak farklı özellikler verebiliriz.
.text-center {
text-align: center;
}
.fontsize-1 {
font-size: 36px;
}
.fontsize-2 {
font-size: 18px;
}
Layout’un yeni hali:
<div class="w-100 green-bg div-height d-flex align-center justify-center bg-color-mobile">
<div class="w-50 grey-bg inner-height">
<p class="text-center fontsize-1">
Lorem ipsum dolor sit amet.
</p>
<p class="fontsize-2">
Sed ut perspiciatis unde omnis iste.
</p>
</div>
</div>
Bu basit örnekte de görüldüğü gibi, CSS’de hazırladığımız utility class’ları sayfanın birden fazla yerinde rahatlıkla kullanabiliriz.
Utility class’ları hazırlarken media query’ye ayrı tanımlamalar yaparsak, layout’u responsive’e uygun şekle getirmek mümkün. Bu şekilde her seferinde CSS’e başvurmak zorunda kalmadan sayfaya mobilde ve desktopta kendi özelliklerini verebiliriz. Ufak bir sayfa için çok önemli görünmeyen bu detay ile aslında çok sayıda sayfa barındıran projeleri pratik bir şekilde hazırlayabiliriz.
Örneğin, 768px altında değişecek bg rengi oluşturmak için önce media’da tanımlamayı yapıyoruz:
@media (max-width: 768px) {
.bg-color-mobile {
background-color: var(--bg-orange);
}
}
Bunun için ilk olarak root’da media query’ye değişecek özellikleri tanımlıyoruz:
--bg-orange: #f0c22b;
@media (max-width: 768px) {
.bg-color-mobile {
background-color: var(--bg-orange);
}
}
Bu şekilde sayfanın değişen genişliğine göre değişen bir bg oluşturduk.
Son örnek olarak da, yan yana iki div oluşturalım ve bunun responsive görünümde alt alta gelmesini sağlayalım. Bunun için ilk önce iki div oluşturup flex olarak row özelliği vereceğiz.
İlk önce CSS’de ve HTML üzerinde layout’u oluştururken yaptığımız eklemeler şöyle:
--bg-blue: #144973;
--bg-yellow: #f0c22b;
.blue-bg {
background-color: var(--bg-blue);
}
.yellow-bg {
background-color: var(--bg-yellow);
}
.d-flex {
display: flex;
}
.flex-row {
flex-direction: row;
}
<div class="w-100 div-height d-flex flex-row flex-column">
<div class="w-50 div-height blue-bg">
</div>
<div class="w-50 div-height yellow-bg">
</div>
</div>
Mobil görünüm için eklediğimiz özellik:
@media (max-width: 768px) {
.flex-column {
flex-direction: column;
}
}
Hatta daha da anlaşılabilir olması için, Bootstrap’de olduğu gibi breakpoint’lere göre utility class’lara isimlendirmeler yaparak kodun anlaşılabilir olmasını sağlayabiliriz. Bu şekilde w-lg-50 w-100 gibi tanımlamalar yaparak sayfanın hangi boyutta ne özellik alacağını belirleyebiliriz.
@media (min-width: 992px) {
.w-lg-50 {
width: 50%;
}
}
<div class="w-100 div-height d-flex flex-row flex-column">
<div class="w-lg-50 w-100 div-height blue-bg">
</div>
<div class="w-lg-50 w-100 div-height yellow-bg">
</div>
</div>
Bu şekilde bir framework kullanır gibi sayfayı oluşturduk. Tasarımda birçok yerde kullanılacak şeyi tek bir class olarak hazırlamak yetiyor. Dolayısıyla tasarıma başlamadan evvel root ve variable özelliklerini özenerek ve sayfanın tüm detaylarını akılda tutarak hazırlamakta fayda var.
Tabii, DOM’da gözükmeyen hover, after gibi pseudo class’ları oluşturmak için yine CSS kullanmamız gerekecek. Ama en azından yukarıda yazdığımız kodlar sayesinde döküman daha sade gözükecek ve pseudo class gibi şeyleri kullanmaya başlayana kadar her şeyi CSS kullanmadan halletmiş olacağız.
Codepen linki için tıklayın.
Perfist Blog
Benzer Yazılar
Universal Analytics’ten Google Analytics 4’e geçişle beraber bazı çözülmesi gereken sorunlarınız olabilir. Bu sorunlardan biri de ‘unassigned’ trafik. Raporlarda “unassigned” / (not set) olarak görünen boyutlar, analiz ve optimize etme olanağınızı olumsuz etkileyen bir faktör olarak karşımıza çıkıyor. GA4 raporlarınızdaki “unassigned” trafiğin nedenlerini ve nasıl azaltalabileceği gibi konulara değineceğiz. Bu sayede web sitenizin ziyaretçi trafik […]
Devamını Oku
Beginner Level Web/App AnalitiğiGoogle Cloud’un BigQuery veri ambarı Facebook Reklamlarından otomatik veri aktarımını desteklediğini bu yılın başında açıklamıştı. Önizleme aşamasında olan bu özellik, veri yükleme işlerinin planlanmasına olanak tanıyarak analiz ve içgörüler geliştirmek için alternatif bir yol sunuyor. Bu entegrasyon sayesinde üçüncü taraf araçlara veya manuel kod çalışmasına olan ihtiyacınız ortadan kalkıyor. Bu entegrasyon özel raporların desteklenmediği sabit […]
Devamını Oku
Mid Level Web/App AnalitiğiGoogle Analytics 4’ün app ve web verilerini birleştiriyor olmasıyla uygulama analizleri daha kolay takip edilebilir hâle geldi. Firebase Analytics, iOS veya Android uygulamanızın takibini GA4 ile kolaylıkla yapabilmenize olanak tanıyor. Mobil uygulama takibi için birçok farklı tool olmasıyla beraber aynı mülk içinde hem web hem de app verilerini görebiliyor olmak daha doğru analizler ve stratejiler […]
Devamını Oku
Mid Level Web/App Analitiğiİşletmeler, analitik ve pazarlama çerezlerinden mümkün olduğunca fazla veri kullanmak ister. Ancak bu verileri toplayabilmesi ve kullanabilmesi için KVKK/GDPR gibi kanunlara uyum sağlaması gerekir. Google, Consent Mode’nu kullanıma açarak çerezlerin onay düzeyine göre kullanılabilmesine yardımcı olur. Yani Consent Mode ile kullanıcıların gizlilik tercihleri dikkate alınarak ilgili platformlara aktarılması sağlanır. Çerez türlerini kısaca açıklamak gerekirse: Zorunlu […]
Devamını Oku
Mid Level Web/App Analitiği