Merhabalar.

Bu yazımda Items için flex-shrink özelliklerine bakacağız.

Projemiz bir önceki yazımızdan devam ettiği için öncelikle o yazımı okumanızı tavsiye ederim.

Bir önceki yazılarımda anlatılan flex özellikleri, kapsayıcıya aitti. Birde içindeki öğeler için esnek yapıda neler yapabiliyoruz, onlara bakalım.

Burada bahsedeceğimiz özelliklerin nasıl gözüktüğünü daha iyi anlayabilmek için öncelikle kodlarımızda şu güncellemeleri yapalım.

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="flexbox.css">
</head>
<body>
    
    <h1>Container 1</h1>

    <div class="container1">

        <div class="box box1" >Box 1</div>
        <div class="box box2" >Box 2</div>
        <div class="box box3" >Box 3</div>
        <div class="box box4" >Box 4</div>
        <div class="box box5" >Box 5</div>

    </div>

    <div class="divider"></div>

    <h1>Container 2</h1>

    <div class="container2">

        <div class="box box1" >Box 1</div>
        <div class="box box2" >Box 2</div>
        <div class="box box3" >Box 3</div>
        <div class="box box4" >Box 4</div>
        <div class="box box5" >Box 5</div>
       
        
    </div>

    <script src="flexbox.js"></script>

</body>
</html>

flexbox.css

body{
    margin: 0;
    padding: 0;
    font-family: sans-serif;
    padding: 30px;
}   

.box{
    width: 400px;
    height: 100px;
    background-color: #ccc;
    font-size: 20px;
    text-align: center;
    line-height: 100px;
    border-radius: 20px;
    margin-bottom: 5px;
}

.divider{
    height: 40px;
}

.container1{
    width: 1000px;
    padding: 10px;
    height: 700px;
    background-color: #21b5da;
    display: flex;
    flex-flow: row nowrap;
    
}

.container2{
    background-color: #9bdff1;
    padding: 10px;
    height: 950px;
    display: flex;
    flex-flow: column wrap;
    
}

.box1{

    
}

.box2{
    
}

.box3{
    
}

.box4{
    
}

.box5{
    
}

Şu anki güncellemelerimiz sonrası uygulama aşağıdaki gibi gözüküyor.

flex-shrink Özelliği

flex-shrink özelliği, bir flex container’ın boyutunun container’ın boyutundan küçük olduğu durumlarda flex öğelerinin nasıl küçüleceğini belirler. flex-shrink özelliğinin değeri, öğenin “küçülme faktörü”nü belirler. Yani, bir flex öğesinin flex-shrink değeri ne kadar yüksekse, o öğe diğer öğelere göre o kadar çok küçülür.

Ancak, flex-shrink özelliği sadece flex container’ın boyutu, içindeki flex öğelerinin toplam boyutundan küçük olduğunda etkili olur. Eğer flex container’ın boyutu, içindeki flex öğelerinin toplam boyutundan büyükse veya eşitse, flex-shrink özelliği hiçbir etki yapmaz.

Eğer flex-shrink özelliğinin bir etkisi olmasını istiyorsanız, flex container’ın boyutunu, içindeki flex öğelerinin toplam boyutundan küçük bir boyuta ayarlamayı deneyin. Bu durumda, flex-shrink özelliği, flex öğelerinin nasıl küçüleceğini belirler.

.item {
  flex-shrink: 2; /* Öğenin küçülme faktörü */
}

Bu örnekte, flex-shrink özelliği, 2 değeri ile ayarlanmıştır. Bu, öğenin diğer flex öğeleriyle orantılı olarak daha fazla küçülmesini sağlar. flex-shrink değeri, öğenin ne kadar küçüleceğini belirleyen bir faktördür.

flex-shrink özelliğinin alabileceği değerler şunlardır:

0: Öğe küçülmeyecek.

1: Diğer flex öğeleriyle orantılı olarak küçülecek.

2: Diğer flex öğelerinden iki kat daha fazla küçülecek.

n: Belirli bir sayıda küçülme faktörü belirtir.

Bu özellik, genellikle container içindeki öğelerin küçüleceği durumları kontrol etmek için kullanılır. Eğer bir öğenin diğerlerinden daha fazla küçülmesini istiyorsanız, flex-shrink özelliğini kullanarak bu davranışı ayarlayabilirsiniz.

.box1{

    flex-shrink: 2;
    
}

.box2{
    flex-shrink: 4;
}

.box3{
    flex-shrink: 4;
}

.box4{
    flex-shrink: 5;
}

.box5{
    flex-shrink: 6;
}

Görüşmek üzere.


Murat Bilginer
21 Şubat 1992'de doğdum. Endüstri Mühendisi olarak lisansımı 2016 yılında tamamladım. Industryolog Akademi - NGenius oluşumlarının kurucusuyum. Şu anda kendi şirketim Brainy Tech ile Web ve Mobil Geliştirme, AWS, Google Cloud Platform Sistemleri için DevOps, Big Data Analiz ve Görselleştirme hizmetleri sunmakta ve Online Eğitimler vermekteyiz.