v2.5.2
Giriş yap

Dropdown menü otomatik yön verme

selim
748 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhaba,

Yaptığım bir dropdown ve buna tıkladığımda aşağı doğru açılıyor. Ancak ben sayfanın altındayken buna bastığımda yukarı yönlü açılmasını istiyorum(sayfanın altında kalan kısmın uzunluğu dropdownun uzunluğundan küçükse yukarı doğru açılsın)

Bunu nasıl yapabilirim ?

Bootstrap dropdownları bu şekilde mesela. Örnek olması için aşağıya ekliyorum.

Normal açılışı Dropdown normal

Aşağıya doğru sığmayınca otomatik yukarı doğru açılıyor Dropdown yukarı

Cevap yaz
Cevaplar (4)
ilyasbilgihan
1054 gün önce
<div class="wrapper"> <!-- wrapper sınıfına overflow-y: auto verilmeli -->
    <!-- other elements -->
    
    <div class="child"></div>
    
    <!-- other elements -->
</div>

Yukarıdaki kod bloğuna yakın bir sistemimiz olduğunu düşünelim. Her dropdown butonuna tıklama işleminde aşağıdaki kontrolü sağlayarak aşağı doğru mu yoksa yukarıya doğru mu açılacağını belirtebilirsin.

{
    // click işlemi içerisi

    let topDistance = child.offsetTop - wrapper.offsetTop; // child elementinin, wrapper elementi içerisindeki y koordinatı diyebiliriz.
    let scrollAmount = wrapper.scrollTop; // wrapper daki scroll miktarı
    let exactTopDistance = topDistance - scrollAmount; // scroll olması durumunda uzaklık değişmeli
    let wrapperHeight = wrapper.offsetHeight;
    let exactBottomDistance = wrapperHeight - child.offsetHeight - exactTopDistance; // child elementin altında kalan alan. (wrapper elementi bitimine uzaklığı diyebiliriz)
    
    if(exactTopDistance >= exactBottomDistance) {
        // yukarıda kalan alan daha büyük dolayısıyla yukarıya doğru açılmalı.
    } else {
        // aşağı doğru açılmalı.
    }

}

Anlatım biraz karışık gelmiş olabilir. Çalışan bir demoya şuradan ulaşabilirsin.

selim
1054 gün önce

Yardımın için çok teşekkür ederim.

ilyasbilgihan
1054 gün önce

Aşağıda yeterli alan var fakat yukarıdaki alan daha fazla. Eğer yeterli alan olmadığı durumlarda diğer yöne açılmasını istiyorsan kontrollerde değişiklik yapman lazım.

Diyelim ki sen dropdown menüsünün normal şartlarda aşağı açılmasını istiyorsun. Aşağıdaki alan dropdown'un yüksekliğinden daha küçükse yukarıya doğru açılsın şeklinde kontrol ekleyebilirsin.

Mevcut linkdeki kodu güncelledim. Eski halini de yorum satırı içerisine aldım, tekrar inceleyebilirsin.

selim
1054 gün önce

@ilyasbilgihan hocam cevabınız için çok teşekkür ederim ancak ufak sıkıntılar var. https://www.hizliresim.com/l1akmrm => burada aşağıda yeterince alan olmasına rağmen yukrıda açılıyo. Bende de sürekli yukarıda açılıyo.