Material-UI
Last updated
Last updated
Material UI (MUI), Google'ın Material Design prensiplerine dayanan, popüler bir React bileşen kütüphanesidir. Geliştiricilere, modern ve kullanıcı dostu web arayüzleri oluşturmak için kapsamlı ve esnek araçlar sunar. Material UI, kullanıcı deneyimini iyileştirirken geliştirme sürecini hızlandırır ve kolaylaştırır.
Material Design, 2014 yılında Google tarafından tanıtılan bir tasarım dilidir. Dijital dünyada daha sezgisel ve tutarlı kullanıcı deneyimleri yaratmak amacıyla geliştirilmiştir. Material Design, gerçek dünyadaki fiziksel özellikleri ve hareketleri dijital ortamda yansıtarak kullanıcıların doğal etkileşimlerde bulunmalarını sağlar.
Materyal Metaforu: Dijital elemanların fiziksel dünyadaki nesnelere benzer şekilde davranmasıdır.
Cesur, Grafik, Amaçlı: Renkler, kenarlıklar ve tipografi ile güçlü ve anlamlı bir görsel dil oluşturmadır.
Hareket ve Anlam: Kullanıcıların eylemlerine yanıt veren doğal animasyonlar ve geçişlerdir.
Butonlar, Kartlar, Diyalog Kutuları: MUI, uygulamalarınızda hemen kullanabileceğiniz çok çeşitli bileşenler sunar. Her bileşen, Material Design spesifikasyonlarına uygun olarak tasarlanmıştır.
İkonlar ve İmajlar: Material UI, Google Material Icons ile entegrasyona sahiptir, bu da projelerinizde yüksek kaliteli ikonlar kullanmanıza olanak tanır.
Temalar: Material UI, temalar oluşturmanıza ve bileşenlerinizi bu temalara göre özelleştirmenize olanak tanır. Renk paletleri, tipografi ve diğer stil öğeleri üzerinde tam kontrol sağlar.
Stil Özelleştirme: Her bileşen, CSS'in JavaScript yaklaşımıyla değiştirilebilir. Bu, bileşenlerin stilini doğrudan JavaScript kodu içinde tanımlamanıza olanak tanır.
Grid Sistemi: MUI, duyarlı tasarımı kolaylaştıran esnek bir grid sistemine sahiptir. Farklı cihaz ve ekran boyutları için optimize edilmiştir.
Breakpoints: Breakpoint API'si ile ekran boyutlarına göre düzenlemeler yapabilir ve farklı cihazlarda tutarlı bir kullanıcı deneyimi sağlayabilirsiniz.
ARIA Etiketleri: Material UI, erişilebilirlik standartlarına uyum sağlamak için ARIA etiketlerini destekler. Bu, engelli kullanıcılar için daha erişilebilir uygulamalar oluşturmanıza yardımcı olur.
Klavye Navigasyonu: Tüm bileşenler klavye ile gezinmeyi destekler, bu da erişilebilirlik açısından önemli bir avantajdır.
Kod Bölme (Code Splitting): Material UI, uygulamanızın performansını artırmak için kod bölme tekniklerini destekler. Bu, yalnızca gerekli bileşenlerin yüklenmesini sağlar.
Dinamik Yükleme: Gerektiğinde bileşenlerin dinamik olarak yüklenmesini sağlar, bu da başlangıç yükleme sürelerini azaltır.
Hızlı Prototipleme: Hazır bileşenler ve temalar sayesinde fikirlerinizi hızlıca hayata geçirebilir, prototipler oluşturabilirsiniz.
Tutarlılık: Material Design prensiplerine dayandığı için, uygulamanızda tutarlı ve profesyonel bir görünüm sağlar. Kullanıcılar, tanıdık bir arayüzde daha rahat hissederler.
Topluluk ve Destek: Material UI, geniş ve aktif bir topluluğa sahiptir. Bu topluluk, sürekli olarak kütüphaneye katkıda bulunur, sorunları çözer ve yeni özellikler ekler.
Kapsamlı Dokümantasyon: Material UI, kapsamlı ve anlaşılır bir dokümantasyon sunar. Bu, yeni başlayanlar için öğrenmeyi kolaylaştırırken deneyimli geliştiriciler için de referans sağlar.
Material UI ile çalışmaya başlamak oldukça basittir. Aşağıda bu aşamaları adım adım incelebilirsiniz.
Aşağıdaki kodu terminalinizde çalıştırarak bir react projesi oluşturabilirsiniz.
Aşağıdaki kodu terminalinizde çalıştırarak Material UI'ı projenize ekleyebilirsiniz.
Yukarıdaki örnekte bir Material UI bileşenini projemizde nasıl kullanılabileceğini görebilmekteyiz. Bu örneği biraz incelersek öncelikle buton bileşenini kullanabilmemiz için
ile butonu import etmemiz gerekmektedir. İçerisinde Merhaba Dünya
yazan basit bir buton bileşenini ve o bileşenin tema özelleştirmesinin yapıldığını görebiliriz. Bu sayede projenize özgü istediğiniz renk kombinasyonunu ve stilleri oluşturabilirsiniz. Hadi şimdi de biraz daha ileri seviye örneklere göz atalım. ;)
Material UI'nin sunduğu gelişmiş özellikler ve araçlarla daha karmaşık ve profesyonel projeler, uygulamalar veya stiller geliştirebilirsiniz.
Mesela yukarıdaki örnekte dinamik bir tasarım görmekteyiz. Peki bu örnekte ne var??? Burada görmüş olduğumuz örnekte yine bir adet buton yer almakta fakat bu buton ilk örnekteki butondan farklı bu fark nedir dediğinizi duyar gibiyim. Burada useState
kancasını kullanarak butonun içerisindeki yazıyı dinamik olarak değiştirebiliyoruz.
useState kancası hakkında bilgi sahibi değilseniz. Emre ARIKAN hocamızın yazmış olduğu ReactJS Kancalar (Hooks) yazısını okumanızı şiddetle tavsiye ederim.
Örneğimize dönecek olursak kodumuz ilk çalıştığında darkMode
özelliği false
olarak geliyor ve butonun içerisinde Koyu Mod
yazıyor. Butona tıkandığında onClick
fonksiyonu ile darkMode
özelliği aktifleşiyor ve darkMode
aktif iken butonumuzun içerisindeki yazı Açık Mod
yazısına dönüyor. Butona her tıklamamızda koyu mod ile açık mod arasında geçiş oluyor.
Bu örneğimizde Grid
yapısını çok detayına girmeden inceleyeceğiz.
Grid container spacing={2}:
container: Grid
bileşeninin bir konteyner olduğunu belirtir. Bu, içerisindeki Grid
item'larını düzenlemek için kullanılır.
spacing={2}: Grid öğeleri arasında 2 birimlik boşluk oluşturur. Bu değer, Material-UI'nin tema ölçütlerine göre belirlenir.
Grid item xs={12} sm={6} md={4}:
item: Bu, grid sisteminde bir öğe olduğunu belirtir.
xs={12}: Bu öğenin, ekstra küçük ekranlarda (telefon gibi) 12 kolon (tam genişlik) kaplayacağını belirtir.
sm={6}: Bu öğenin, küçük ekranlarda (tablet gibi) 6 kolon (yarım genişlik) kaplayacağını belirtir.
md={4}: Bu öğenin, orta büyüklükte ekranlarda (dizüstü bilgisayar gibi) 4 kolon (üçte bir genişlik) kaplayacağını belirtir.
Bu mantık, öğelerin ekran boyutuna göre nasıl davranacağını belirler ve duyarlı bir düzen oluşturur. Ekran boyutu değiştikçe, bu öğelerin genişlikleri değişir. Ekstra küçük ekranlarda her bir öğe tam genişlik kaplarken, küçük ekranlarda yarım genişlik ve orta ekranlarda üçte bir genişlik kaplar. Bu yapı, farklı ekran boyutlarına uyum sağlayarak duyarlı bir kullanıcı arayüzü oluşturur.
Bu kod yukarıda demin bahsettiğim özel renk kombinasyonları veya stilleri oluşturabilirsiniz söylemime bir örnektir. Özel bir stil tasarlayabilmemiz için Material UI'dan
ile styled
eklememiz faydalı olacaktır.
styled(Button)
: Material-UI'nın Button
bileşenini alır ve ona özel stil uygular.
background
: 45 derece eğimli bir renk geçişi uygulanır, renkler #FE6B8B
ve #FF8E53
arasında geçiş yapar.
border
: 0 ile kenarlık var ise kaldırılır.
borderRadius
: Köşeleri yarıçapı 3 piksel olacak şekilde yuvarlatılmıştır.
boxShadow
: Düğmenin altında bir gölge efekti uygulanır, gölgenin rengi ve opaklığı belirtilmiştir.
color
: Yazı rengi beyaz seçilmiştir.
height
: Düğmenin yüksekliği 48 pikseldir.
padding
: Düğmenin yatay iç boşlukları 30 piksel olarak ayarlanmıştır.
ile
CustomButton
fonksiyonu, özelleştirilmiş MyButton
bileşenini döndürür.
MyButton
bileşeni içinde Özel Buton
yazısı bulunur.
Sonuç olarak bu örnekte Material-UI'nın standart düğme bileşenine özel bir stil vererek, amaç daha dikkat çekici ve kullanıcı dostu bir düğme oluşturmaktır.
Material UI, web geliştirme dünyasında önde gelen bir araçtır. Geniş bileşen kütüphanesi, esnek özelleştirme seçenekleri ve kullanıcı dostu arayüzleriyle projelerinizi hızla ve etkili bir şekilde geliştirebilirsiniz. Material UI'nin sunduğu modern tasarım trendleri ve erişilebilirlik özellikleri, uygulamalarınızın kullanıcı deneyimini önemli ölçüde artırır. Dolayısıyla, Material UI kullanarak geliştirdiğiniz uygulamalar, rakiplerinizden sıyrılmanıza ve kullanıcılarınızı etkilemenize yardımcı olabilir.