Grid yerleşimi ile ilgili CSS özellikleri
Bu makale, grid yerleşimi ile ilgili CSS özelliklerini açıklar.
Grid ve satır içi (inline grid) nasıl tanımlanır öğrenebilirsiniz.
YouTube Video
Önizleme için HTML
css-grid.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-grid.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Layout</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Layout Related Properties</h2>
20 </header>
21 <article>
22 <h3>grid</h3>
23 <section style="width: 100%; height: 350px;">
24 <header><h4>display: grid; grid-template-columns: 100px 200px auto; grid-template-rows: 100px auto 50px;</h4></header>
25 <section class="sample-view">
26 <div class="grid-box">
27 <div class="grid-item">Item 1</div>
28 <div class="grid-item">Item 2</div>
29 <div class="grid-item">Item 3</div>
30 <div class="grid-item">Item 4</div>
31 <div class="grid-item">Item 5</div>
32 <div class="grid-item">Item 6</div>
33 </div>
34 </section>
35 </section>
36 <section style="width: 100%; height: 550px;">
37 <header><h4>display: grid; grid-template-columns: 120px 1fr 80px; grid-template-rows: 100px 1fr 100px;</h4></header>
38 <section class="sample-view">
39 <div class="grid-container" style="color: #666;">
40 <header class="grid-header">Header</header>
41 <aside class="grid-sidebar">Sidebar</aside>
42 <article class="grid-content">
43 <p>Content</p>
44 </article>
45 <aside class="grid-ads">Ads</aside>
46 <footer class="grid-footer">Footer</footer>
47 </div>
48 </section>
49 </section>
50 </article>
51 <article>
52 <h3>gap</h3>
53 <section style="height: 300px;">
54 <header><h4>display: grid; gap: 30px 10px;</h4></header>
55 <section class="sample-view">
56 <div class="gap-grid-container">
57 <div>Item 1</div>
58 <div>Item 2</div>
59 <div>Item 3</div>
60 <div>Item 4</div>
61 <div>Item 5</div>
62 <div>Item 6</div>
63 </div>
64 </section>
65 </section>
66 <section>
67 <header><h4>display: flex; gap: 50px;</h4></header>
68 <section class="sample-view">
69 <div class="gap-flex-container">
70 <div>Item 1</div>
71 <div>Item 2</div>
72 <div>Item 3</div>
73 </div>
74 </section>
75 </section>
76 </article>
77 <article>
78 <h3>grid-template-areas</h3>
79 <section style="height: 350px;">
80 <header><h4>grid-template-areas: "header header" "sidebar content" "footer footer";</h4></header>
81 <section class="sample-view">
82 <div class="grid-template-areas-container">
83 <div class="grid-template-areas-header">Header</div>
84 <div class="grid-template-areas-sidebar">Sidebar</div>
85 <div class="grid-template-areas-content">Content</div>
86 <div class="grid-template-areas-footer">Footer</div>
87 </div>
88 </section>
89 </section>
90 </article>
91 <article>
92 <h3>inline-grid</h3>
93 <section>
94 <header><h4>display: inline-grid</h4></header>
95 <section class="sample-view">
96 Here is an inline grid:
97 <span class="inline-grid-container">
98 <div class="inline-grid-item">1</div>
99 <div class="inline-grid-item">2</div>
100 <div class="inline-grid-item">3</div>
101 <div class="inline-grid-item">4</div>
102 </span>
103 This is contained within a paragraph.
104 </section>
105 </section>
106 </article>
107 </main>
108</body>
109</html>
Grid Yerleşimi
grid
1.grid-box {
2 display: grid;
3 grid-template-columns: 100px 200px auto;
4 grid-template-rows: 100px auto 50px;
5 gap: 10px;
6 background-color: lightblue;
7 border: none;
8 height: 200px;
9}
10
11.grid-item {
12 background-color: lightskyblue;
13 width: 100%;
14 padding: 0;
15 text-align: center;
16 border: 2px solid black;
17}
Grid, öğelerin iki boyutlu satır ve sütunlarda hizalanmasını sağlayan bir yerleşim sistemidir. Grid kullanarak, geleneksel float
veya position
yöntemleriyle zor olan karmaşık yerleşimleri kolayca ve esnek bir şekilde oluşturabilirsiniz. Flexbox, bir boyutlu yerleşimlerde üstünken, grid iki boyutlu yerleşimler için uygundur.
grid-box
sınıfı,display
özelliğindegrid
belirterek bir grid yerleşimi uygular. Bu elemente grid konteyneri (grid-container) denir.grid-template-columns
özelliği, grid sütunlarının genişliğini belirtir. Bu örnekte, birinci sütun 100px, ikinci sütun 200px ve üçüncü sütun kalan alanı (auto
) kaplar.grid-template-rows
özelliği, grid satırlarının yüksekliğini belirtir. Birinci satır 100px, ikinci satır otomatik (auto
), ve üçüncü satır 50px yüksekliğinde.gap
özelliği, grid öğeleri arasındaki boşluğu ayarlar. Sütunlar ve satırlar arasında 10px boşluk eklemek.
Temel Terimler
- Grid konteyneri,
display
özelliğigrid
olarak ayarlanmış bir elementtir ve çocukları grid öğeleri haline gelir. - Grid öğeleri, bir grid konteynerinin altında doğrudan yer alan çocuk öğelerdir.
Ana grid özellikleri
grid-template-columns
& grid-template-rows
1.container {
2 grid-template-columns: 1fr 2fr 1fr;
3}
grid-template-columns
vegrid-template-rows
özellikleri, her sütun ve satırın boyutlarını tanımlar.px
ve%
gibi birimlerin yanı sıra, kalan alanın oranını belirtmek içinfr
(kesir) kullanılabilir.- Bu örnekte, üç sütun vardır ve ikinci sütun diğerlerinden iki kat genişliğindedir.
grid-column
& grid-row
1.container {
2 display: grid;
3 grid-template-columns: repeat(4, 1fr); /* 4 columns */
4 grid-template-rows: repeat(3, 100px); /* 3 rows */
5}
6
7.item {
8 grid-column: 2 / 4;
9 grid-row: 1 / 3;
10}
grid-column
vegrid-row
, ızgara öğesinin hangi sütuna veya satıra yerleştirileceğini belirtir.- Bu örnekte, öğe 2. sütundan 4. sütuna ve 1. satırdan 3. satıra kadar uzanır.
grid-auto-rows
& grid-auto-columns
1.container {
2 display: grid;
3 grid-template-rows: 100px 200px; /* Explicitly define 2 rows */
4 grid-template-columns: 1fr 2fr; /* Explicitly define 2 columns */
5 grid-auto-rows: 150px; /* Automatically added rows will be 150px */
6 grid-auto-columns: 100px; /* Automatically added columns will be 100px */
7}
8
9.item {
10 grid-column: 3; /* Positioned in the 3rd column (auto-generated) */
11 grid-row: 3; /* Positioned in the 3rd row (auto-generated) */
12}
grid-auto-rows
vegrid-auto-columns
, ızgara düzeni hatları veya sütunları açıkça tanımlanmadığında otomatik olarak oluşturulan satır ve sütunların boyutunu kontrol eden özelliklerdir.- Bu örnekte, 2 satır ve 2 sütun açıkça tanımlanmıştır, ancak daha fazla öğe eklenirse
grid-auto-rows
vegrid-auto-columns
'a göre yeni satır veya sütunlar otomatik olarak oluşturulacaktır.
- Bu örnekte, 2 satır ve 2 sütun açıkça tanımlanmıştır, ancak daha fazla öğe eklenirse
justify-items
& align-items
1.container {
2 justify-items: center; /* Center items horizontally */
3 align-items: center; /* Center items vertically */
4}
- Izgara öğelerini yatay (
justify-items
) ve dikey (align-items
) olarak hizalayın.
grid-area
1/* grid-area syntax
2grid-area: <row-start> / <column-start> / <row-end> / <column-end>;
3*/
4.item {
5 grid-area: 1 / 2 / 3 / 4;
6}
grid-area
, bir ızgara öğesinin ızgara konteynerinde hangi alana yerleştirilmesi gerektiğini belirler.- Bu örnekte, 1. satırdan 3. satıra ve 2. sütundan 4. sütuna kadar olan alanın kaplanması anlamına gelir.
gap
1.container {
2 gap: 10px 20px; /* 10px space between rows, 20px space between columns */
3}
gap
, sütunlar ve satırlar arasına boşluk ekler. Sütunlar ve satırlar arasındaki boşluğu tek tekcolumn-gap
verow-gap
kullanarak belirtebilirsiniz.
grid-auto-flow
1.container {
2 grid-auto-flow: column; /* Add items in the column direction */
3}
grid-auto-flow
, öğelerin satır veya sütun temelinde hangi yönde yerleştirileceğini ayarlayan bir özelliktir.
Karmaşık düzen örneği
1.grid-container {
2 display: grid;
3 grid-template-columns: 120px 1fr 80px;
4 grid-template-rows: 50px 1fr 50px;
5 gap: 10px;
6 background-color: transparent;
7 border: none;
8 height: 400px;
9}
10
11.grid-header {
12 grid-column: 1 / 4;
13 background-color: lightblue;
14}
15
16.grid-sidebar {
17 grid-column: 1 / 2;
18 grid-row: 2 / 3;
19 height: 100%;
20 background-color: lightslategray;
21 color: white;
22}
23
24.grid-content {
25 grid-column: 2 / 3;
26 grid-row: 2 / 3;
27 background-color: lightskyblue;
28}
29
30.grid-content p {
31 margin: 0;
32 padding: 0;
33 height: 260px;
34}
35
36.grid-ads {
37 grid-column: 3 / 4;
38 grid-row: 2 / 3;
39 height: 100%;
40 background-color: lightsteelblue;
41}
42
43.grid-footer {
44 grid-column: 1 / 4;
45 background-color: lightgray;
46}
Bu şekilde, grid, basit bir kodla tüm bir web sayfası düzeni oluşturmanıza olanak sağlar.
- Bu örnekte, üç sütun (yan kolonu, ana içerik ve reklam) ve üç satır (başlık, içerik ve alt bilgi) bulunmaktadır.
- Başlık ve altbilgi, sayfanın tam genişliğini kaplar; içerik merkezde, yan panel ve reklam her iki tarafta bulunur.
Izgaraların Avantajları
Izgara kullanmanın avantajları şunlardır:.
- Kolay iki boyutlu düzen: Satır ve sütunlarda düzeni yönetmek, daha az kodla karmaşık düzenlerin bile oluşturulmasına olanak tanır.
- Duyarlı tasarımla uyumlu: Izgara sistemi, farklı ekran boyutlarına uyum sağlayan duyarlı tasarımların kolayca oluşturulmasını sağlar.
gap
özelliği
1.gap-grid-container {
2 display: grid;
3 grid-template-columns: repeat(3, 1fr);
4 gap: 30px 10px;
5 background-color: transparent;
6 border: none;
7 height: 200px;
8}
9
10.gap-grid-container div {
11 width: 100px;
12 background-color: lightskyblue;
13}
14
15.gap-flex-container {
16 display: flex;
17 gap: 50px;
18}
19
20.gap-flex-container div {
21 width: 80px;
22 background-color: lightgreen;
23}
gap
özelliği, ızgara düzenlerinde ve esnek kutu düzenlerinde, öğeler arasındaki boşluğu (aralığı) ayarlamak için kullanılır. Bu özelliği kullanarak, alt öğeler arasında kolayca boşluk oluşturabilirsiniz.
gap-grid-container
sınıfında, her bir eleman arasında dikey olarak30px
ve yatay olarak10px
boşluk ayarlanmıştır.grid-template-columns
ile 3 sütunlu bir grid oluşturulduğundan, her bir eleman arasında dikey ve yatay boşluklar uygulanır.gap-flex-container
sınıfında, flexbox içindeki üç öğe arasında50px
boşluk uygulanır.
Temel Sözdizimi
1.container {
2 display: grid; /* or flex */
3 gap: <row-gap> <column-gap>;
4}
row-gap
, satırlar arasındaki boşluğu belirler. Bu, grid veya flex düzenlerindeki dikey aralıklardır.column-gap
, sütunlar arasındaki boşluğu belirler. Bu, yatay aralıktır.
Eğer iki değer belirtilmezse, bir değer hem row-gap
hem de column-gap
için uygulanır.
gap
özelliğinin avantajları
gap
özelliğinin faydaları şunlardır:.
- Basit boşluk ayarı: Alt öğeler arasındaki boşlukları ayarlamak için kod daha basit hale gelir, öğeler arasında ekstra kenar boşluğu veya dolgu ayarlama ihtiyacını ortadan kaldırır.
- Esnek uyum: Duyarlı tasarımı kolayca destekler ve esnek tasarım ayarlamalarına izin verir.
grid-template-areas
özelliği
1.grid-template-areas-container {
2 display: grid;
3 grid-template-columns: 1fr 2fr; /* 2 columns */
4 grid-template-rows: auto auto; /* 2 rows */
5 grid-template-areas:
6 "header header"
7 "sidebar content"
8 "footer footer"; /* In the 3rd row, the footer spans across */
9 gap: 10px;
10 height: 250px;
11}
12
13.grid-template-areas-container div {
14 width: 100%;
15 height: 100%;
16}
17
18.grid-template-areas-header {
19 grid-area: header; /* Placed in the "header" area */
20 background-color: lightblue;
21}
22
23.grid-template-areas-sidebar {
24 grid-area: sidebar; /* Placed in the "sidebar" area */
25 background-color: lightslategray;
26}
27
28.grid-template-areas-content {
29 grid-area: content; /* Placed in the "content" area */
30 background-color: lightskyblue;
31}
32
33.grid-template-areas-footer {
34 grid-area: footer; /* Placed in the "footer" area */
35 background-color: lightsteelblue;
36}
grid-template-areas
özelliği, bir grid konteyneri içindeki alanlara isim tanımlamanın ve bu isimleri kullanarak grid elemanlarını kolayca konumlandırmanın bir yolunu sağlar. Bu özelliği kullanarak görsel olarak sezgisel düzen tanımlamaları yapabilirsiniz.
grid-template-areas
özelliği ile tanımlanan adlandırılmış alanlara yerleştirilen elemanlar, grid-area
özelliği ile aynı adı almalıdır. Elemanlar birden fazla hücreye yayılsa bile, otomatik olarak doğru şekilde konumlandırılırlar.
Bu örnekte, grid şu şekilde oluşturulmuştur:.
- İlk satırda, "header" iki sütuna yerleştirilmiştir.
- İkinci satırda, "sidebar" sola ve "content" sağa yerleştirilmiştir.
- Üçüncü satırda, "footer" iki sütuna yerleştirilmiştir.
Temel Kullanım
1grid-template-areas:
2 "area1 area2 area3"
3 "area1 area4 area5";
grid-template-areas
özelliğinde, her satır için alanın adı belirtilir. Elemanları atanan isimlerle bölgelere yerleştirerek kolayca düzenler oluşturabilirsiniz.
- Bu örnekte, 2 satır ve 3 sütundan oluşan bir grid oluşturulmuş ve her hücre area1
, area2
, vb. olarak adlandırılmıştır.
Boş hücreleri tanımlamak için
.` kullanma
1grid-template-areas:
2 "header header header"
3 "sidebar . content"
4 "footer footer footer";
Yerleşiminizde boş hücrelere sahip olmak istiyorsanız, boş hücreleri bir .
(nokta) kullanarak temsil edebilirsiniz.
- Bu örnekte olduğu gibi, sidebar
ve content
arasında bir .
belirterek ikinci sütun boş hale gelir.
grid-template-areas
özelliğinin avantajları
grid-template-areas
özelliğinin avantajları aşağıdaki noktaları içerir.
- Görsel düzen: Yerleşimi görsel olarak ifade etmenizi sağlar ve tasarımı anlamayı kolaylaştırır.
- Kolay öğe hareketi: HTML'yi değiştirmeden, CSS'deki alan tanımlarını değiştirerek öğe düzenini kolayca ayarlayabilirsiniz.
Notlar
grid-template-areas
özelliğini kullanırken aşağıdaki noktalara dikkat etmek önemlidir.
- Her satırdaki isim sayısı tanımlanan sütun sayısıyla eşleşmelidir.
- Aynı ismi birden fazla hücreye atamak bu hücreleri birleştirir, ancak farklı satırlara veya sütunlara atanırken alan kare olmalıdır.
inline-grid
1.inline-grid-container {
2 display: inline-grid;
3 grid-template-columns: 1fr 1fr;
4 gap: 5px;
5 background-color: lightblue;
6}
7.inline-grid-item {
8 background-color: lightskyblue;
9 width: 50px;
10 padding: 0;
11 margin: 0;
12}
inline-grid
, CSS'deki display
özelliği için bir değerdir. Bu özelliği uygulamak, öğenin satır içi düzeyindeki bir konteyner gibi davranmasını sağlar ve dahili olarak bir ızgara formatlama bağlamı oluşturur. display: grid
'den farklı olarak, belge akışında satır içi bir öğe gibi davranır.
inline-grid
kullanım durumları
inline-grid
, grid
kadar yaygın değildir, ancak belirli senaryolarda etkili bir şekilde kullanılabilir.
-
Satır içi bağlamda grid: Metin içeriğinin veya diğer satır içi öğelerin yanında bir ızgara yerleştirmek istediğinizde faydalıdır. Örneğin, düğmeler, rozetler, etiketler vb. için bir ızgara yapısına ihtiyaç duyulduğunda, ancak metin akışını bozmadan satır içi olarak görüntülemek istediğinizde faydalıdır.
-
Satır içi öğelerde düzen kontrolü: Bağlantılar, düğmeler veya span gibi satır içi öğelerde karmaşık düzenler gerektiğinde bile,
inline-grid
, blok görüntüsünden kaçınırken ızgara düzeniyle iç yapıyı yönetebilir.
1<button class="inline-grid">
2 <span>Icon</span>
3 <span>Text</span>
4</button>
Bu durumda, düğme ikonları ve metni bir ızgara içinde görüntülerken, belge akışında satır içi kalır.
- Duyarlı satır içi bileşenler:
inline-grid
, satır içi içeriğin bir parçası olan ve ızgara düzeni gerektiren küçük bileşenler için kullanılabilir. Örneğin, bir ızgara ile düzeni ayarlamak istediğiniz ancak satır içi tutmak istediğiniz satır içi formlar, rozetler, ürün etiketleri vb. için uygundur.
inline-grid
hizalama ve boyutlandırma
1.inline-grid {
2 display: inline-grid;
3 vertical-align: middle;
4}
- Diğer satır içi öğeler gibi,
inline-grid
, çevresindeki içeriğe göre dikey hizalamaya uyar. Izgaranın hizalamasınıvertical-align
özelliğini kullanarak kontrol edebilirsiniz.
1.inline-grid {
2 display: inline-grid;
3 width: 200px;
4 height: 100px;
5}
inline-grid
öğesi, yalnızca grid içeriği tarafından gereken genişliği kaplar. Gerekirse, genişlik, yükseklik ve minimum/maksimum boyutları açıkça belirtebilirsiniz.
1.inline-grid {
2 display: inline-grid;
3 grid-template-columns: auto 1fr;
4}
Grid düzeni, inline-grid
konteynerinin boyutunu da belirleyebilir ve bu eğilim, fr
, auto
ve yüzdeler gibi esnek birimler kullanıldığında daha güçlüdür.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.