Makale Başlığı
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
Duyarlı tasarımın bir sonraki evrimi olan CSS Kapsayıcı Sorgularını keşfedin. Bileşenleri yalnızca görünüm alanı boyutuna göre değil, kapsayıcı boyutuna göre nasıl uyarlanabilir hale getireceğinizi öğrenin.
Duyarlı tasarım, on yılı aşkın süredir web geliştirmenin temel taşı olmuştur. Geleneksel olarak, düzenlerimizi görüntü alanı boyutuna göre uyarlamak için medya sorgularına güvendik. Ancak, bu yaklaşım, özellikle karmaşık, bileşen tabanlı tasarımlarla uğraşırken bazen kısıtlayıcı gelebilir. Karşınızda CSS Kapsayıcı Sorguları – bileşenlerin yalnızca görüntü alanı boyutuna değil, içeren öğelerinin boyutuna göre uyum sağlamasına olanak tanıyan güçlü yeni bir özellik.
Kapsayıcı sorguları, öğe tabanlı duyarlı tasarımı mümkün kıldıkları için ezber bozan bir özelliktir. "Ekran boyutu ne kadar?" diye sormak yerine, "Bu bileşenin ne kadar alanı mevcut?" diye sorabilirsiniz. Bu, gerçekten yeniden kullanılabilir ve uyarlanabilir bileşenler oluşturmak için bir dünya olasılık sunar.
Çeşitli bağlamlarda görünebilecek bir kart bileşeni düşünün: dar bir kenar çubuğu, geniş bir kahraman bölümü veya çok sütunlu bir ızgara. Medya sorgularıyla, bu senaryoların her biri için görünüm alanı genişliğine göre belirli kurallar yazmanız gerekir. Kapsayıcı sorgularıyla, kart, genel ekran boyutundan bağımsız olarak, ana kapsayıcısının boyutlarına göre düzenini ve stilini akıllıca ayarlayabilir.
Kapsayıcı sorguları, geleneksel medya sorgularına göre çeşitli önemli avantajlar sunar:
Kapsayıcı sorgularını kullanmanın pratik yönlerine dalalım. İlk adım, bir kapsayıcı tanımlamaktır. Bunu, üst öğede container-type özelliğini kullanarak yapabilirsiniz:
container-type özelliği çeşitli değerler kabul eder:
size: Kapsayıcı sorguları, kapsayıcının hem satır içi hem de blok boyutlarına yanıt verir.inline-size: Kapsayıcı sorguları yalnızca kapsayıcının satır içi (yatay yazma modlarında genişlik) boyutuna yanıt verir. Bu, en yaygın ve genellikle en kullanışlı seçenektir.block-size: Kapsayıcı sorguları yalnızca kapsayıcının blok (yatay yazma modlarında yükseklik) boyutuna yanıt verir.normal: Öğe bir sorgu kapsayıcısı değildir. Bu varsayılan değerdir.style: Kapsayıcı sorguları, stil sorgularına ve kapsayıcı adı sorgularına (ileride ele alınacak) yanıt verir, böylece kapsayıcı üzerinde ayarlanan özel özellikleri sorgulamanıza olanak tanır.İşte satır içi boyutuna yanıt veren bir kapsayıcı tanımlama örneği:
.card-container {
container-type: inline-size;
}
Tek bir bildirimde hem container-type hem de container-name (bunu daha sonra tartışacağız) belirtmek için kısa yol container özelliğini de kullanabilirsiniz:
.card-container {
container: card / inline-size;
}
Bu durumda, 'card' kapsayıcı adıdır.
Bir kapsayıcı tanımladıktan sonra, sorgularınızı yazmak için @container kuralını kullanabilirsiniz. Sözdizimi medya sorgularına benzer, ancak görünüm alanı boyutlarını hedeflemek yerine, kapsayıcının boyutlarını hedeflersiniz:
@container card (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
Bu örnekte, "card" kapsayıcısını hedefliyor ve kapsayıcının genişliği en az 400px olduğunda .card, .card__image ve .card__content öğelerine stiller uyguluyoruz. `(min-width: 400px)` ifadesinden önceki `card` ifadesine dikkat edin. Bu, kapsayıcınızı `container-name` veya kısa yol `container` özelliğini kullanarak adlandırdığınızda çok önemlidir.
Kapsayıcınızı adlandırmadıysanız, kapsayıcı adını atlayabilirsiniz:
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
Medya sorgularında bulunan min-width, max-width, min-height, max-height ve yön gibi aynı medya özellikleri aralığını kullanabilirsiniz.
Kapsayıcılarınızı adlandırmak, özellikle iç içe kapsayıcılar veya karmaşık düzenlerle uğraşırken faydalı olabilir. container-name özelliğini kullanarak bir kapsayıcıya ad atayabilirsiniz:
.card-container {
container-name: card;
container-type: inline-size;
}
Ardından, kapsayıcı sorgularınızda, kapsayıcıyı adıyla hedefleyebilirsiniz:
@container card (min-width: 400px) {
/* 'card' kapsayıcısı için stiller */
}
Kapsayıcı Stil Sorguları, kapsayıcınızın boyutundan ziyade stiline tepki vermenizi sağlar. Bu, özel özelliklerle birleştirildiğinde özellikle güçlüdür. Öncelikle, kapsayıcınızı container-type: style ile tanımlamalısınız:
.component-container {
container-type: style;
}
Ardından, @container style(--theme: dark) kullanarak özel özellik --theme değerini sorgulayabilirsiniz:
.component-container {
--theme: light;
}
@container style(--theme: dark) {
.component {
background-color: black;
color: white;
}
}
Bu, bileşenlerinizin görünüm alanı boyutuna göre değil, CSS aracılığıyla ayarlanan bir yapılandırmaya göre uyum sağlamasına olanak tanır. Bu, tema oluşturma ve dinamik stil için harika olanaklar sunar.
Kapsayıcı sorgularının gerçek dünya senaryolarında nasıl kullanılabileceğine dair somut örneklere bakalım:
Bir ürün hakkında bilgi gösteren bir kart bileşeni düşünün. Dar bir kapsayıcıda, görseli ve içeriği dikey olarak istiflemek isteyebiliriz. Daha geniş bir kapsayıcıda ise bunları yan yana gösterebiliriz.
HTML:
CSS:
.card-container {
container-type: inline-size;
}
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
padding: 16px;
}
.card__image {
width: 100%;
margin-bottom: 16px;
}
.card__content {
width: 100%;
}
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
margin-bottom: 0;
}
.card__content {
width: 50%;
}
}
Bu örnekte, kart başlangıçta görseli ve içeriği dikey olarak istiflenmiş şekilde gösterecektir. Kapsayıcının genişliği 400px'e ulaştığında, kart yatay düzene geçecektir.
Mevcut alana göre uyum sağlaması gereken bir gezinme menüsü düşünün. Dar bir kapsayıcıda (örn. bir mobil kenar çubuğu), menü öğelerini dikey bir listede göstermek isteyebiliriz. Daha geniş bir kapsayıcıda (örn. bir masaüstü başlığı), bunları yatay olarak gösterebiliriz.
HTML:
CSS:
.nav-container {
container-type: inline-size;
}
.nav {
list-style: none;
padding: 0;
margin: 0;
}
.nav__item {
margin-bottom: 8px;
}
.nav__item a {
display: block;
padding: 8px 16px;
text-decoration: none;
color: #333;
}
@container (min-width: 600px) {
.nav {
display: flex;
}
.nav__item {
margin-right: 16px;
margin-bottom: 0;
}
.nav__item a {
display: inline-block;
}
}
Bu örnekte, gezinme menüsü başlangıçta öğeleri dikey bir listede gösterecektir. Kapsayıcının genişliği 600px'e ulaştığında, menü yatay düzene geçecektir.
Yerleştirildiği yere göre uyum sağlaması gereken bir makale düzeni düşünün. Küçük bir önizleme bölümündeyse, görsel metnin üzerinde olmalıdır. Ana makaleyse, görsel yanda olabilir.
HTML
Makale Başlığı
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
CSS
.article-container {
container-type: inline-size;
}
.article {
display: flex;
flex-direction: column;
}
.article-image {
width: 100%;
margin-bottom: 10px;
}
.article-content {
width: 100%;
}
@container (min-width: 768px) {
.article {
flex-direction: row;
}
.article-image {
width: 40%;
margin-right: 20px;
margin-bottom: 0;
}
.article-content {
width: 60%;
}
}
Kapsayıcı sorguları için tarayıcı desteği, Chrome, Firefox, Safari ve Edge dahil olmak üzere modern tarayıcılarda artık mükemmeldir. Özellikler ve uygulama ayrıntıları değişebileceğinden, en son tarayıcı desteği bilgileri için Can I Use kontrol etmek önemlidir.
Kapsayıcı sorguları, medya sorgularına güçlü bir alternatif sunsa da, her yaklaşımın ne zaman en uygun olduğunu anlamak önemlidir.
Birçok durumda, hem medya sorgularını hem de kapsayıcı sorgularını bir arada kullanmanız olasıdır. Uygulamanızın genel düzenini oluşturmak için medya sorgularını kullanın ve ardından bu düzen içindeki bireysel bileşenlerin görünümünü ve davranışını ince ayar yapmak için kapsayıcı sorgularını kullanın.
CSS Kapsayıcı Sorguları, duyarlı tasarımın evriminde önemli bir adımı temsil etmektedir. Öğe tabanlı duyarlılığı etkinleştirerek, geliştiricilere daha esnek, yeniden kullanılabilir ve sürdürülebilir bileşenler oluşturma gücü verirler. Tarayıcı desteği iyileşmeye devam ettikçe, kapsayıcı sorguları her web geliştiricisinin araç setinde vazgeçilmez bir araç haline gelmeye adaydır.
Küresel bir kitle için kapsayıcı sorguları uygularken, aşağıdakileri göz önünde bulundurun:
left ve right gibi fiziksel özellikler yerine inline-start ve inline-end gibi mantıksal özellikleri kullanın.em, rem) kullanın.CSS Kapsayıcı Sorguları, gerçekten duyarlı ve uyarlanabilir web uygulamaları oluşturmak için güçlü bir araçtır. Öğe tabanlı duyarlı tasarımı benimseyerek, farklı bağlamlara sorunsuz bir şekilde uyum sağlayan bileşenler oluşturabilir, kodunuzu basitleştirebilir ve genel kullanıcı deneyimini iyileştirebilirsiniz. Tarayıcı desteği artmaya devam ettikçe, kapsayıcı sorguları modern web geliştirmenin temel bir parçası haline gelmeye adaydır. Bu teknolojiyi benimseyin, yeteneklerini deneyimleyin ve duyarlı tasarımlarınızda yeni bir esneklik seviyesinin kilidini açın. Bu yaklaşım, daha iyi bileşen yeniden kullanılabilirliği, sürdürülebilirlik ve daha sezgisel bir tasarım süreci sağlayarak, dünya genelindeki ön yüz geliştiricileri için paha biçilmez bir varlık haline getirir. Kapsayıcı sorgularına geçiş, tasarıma daha bileşen merkezli bir yaklaşımı teşvik ederek, dünya genelindeki kullanıcılar için daha sağlam ve uyarlanabilir web deneyimleri sağlar.