CSS Transition Kullanım Hatası

efehanarslan

Centipat
Katılım
10 Ekim 2021
Mesajlar
23
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Herkese merhaba, kendi web sitem için bir tasarım yapıyordum fakat çözüme bir türlü kavuşturamadığım sorunum var.

HTML:
 <nav>
 <ul class="nav__links">
 <li><a href="#">Lorem Ipsum <i class='bx bx-chevron-down'></i></a>
 <div class="dp-content">
 <a href="#">Lorem Ipsum</a>
 <a href="#">Lorem Ipsum</a>
 <a href="#">Lorem Ipsum</a>
 <a href="#">Lorem Ipsum</a>
 </div>
 </li>
 <li><a href="#">Lorem Ipsum <i class='bx bx-chevron-down'></i></a></li>
 <li><a href="#">Lorem Ipsum</a></li>
 <li><a href="#">Lorem Ipsum</a></li>
 </ul>
 </nav>

Bu şekilde bir: Hover ile çalışan açılır bir menü yaptım ve CSS düzenlemesini aşağıda ki gibi ayarladım.

CSS:
ul li .dp-content {
 display: none;
 position: absolute;
 background-color: #0D0D14;
 margin: 20px 0px 0px 25px;
 padding: 15px 45px 15px 25px;
 border-radius: 10px;
}
.dp-content a {
 padding: 10px 0px;
}
ul li:hover .dp-content{
 display: flex;
 flex-direction: column;
}

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
https://giphy.com/GTCJhPUR7S5rS8Y5MB

Bir türlü kod içerisinde transition elemanının nasıl kullanılacağını çözemedim. Sadece kapanmadan 1 saniye kadar daha durmasını ve menü içerisine geldiğimde kapanmamasını istiyorum.
 
Animasyon kısımları JS'ye giriyordu sanki. Web programlamaya epey uzak kaldım. Bir JS kodu var mı diye bakabilir misiniz?
 
ul li .dp-content--animated {
display: block
}

şunu css dosyasına ekleyip dener misiniz? Şuan düşünme yetim olmadan basit bir önerme yaptım. Eğer olmazsa şu kaynağı bir inceleyin:

 
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Videoya bak istersen işine yarayabilir.
 
Bir türlü kod içerisinde transition elemanının nasıl kullanılacağını çözemedim. Sadece kapanmadan 1 saniye kadar daha durmasını ve menü içerisine geldiğimde kapanmamasını istiyorum.
Javascript kullanıp geçin bence. Bahsettiğiniz kapanma animasyonu JQuery ile şöyle yapılabilir:

JavaScript:
$(".dp-content").fadeOut(1000, function() {
    $(".dp-content").hide();
});

Javascript kullanmak istemiyorsanız @keyframe'leri incelemenizi öneriyorum. Zira şuan ben bile şuan anlatmaya üşendim. Eğer siz de üşeniyor ve hala Javascript kullanmamak istiyorsanız .dp-content'e tepeden negatif margin verin, menü item'a hover ettiğimiz an mouse imleci dropdown menüsünün sınırları içerisinde kalacağından aşağı kaydırırken kapanmaz.
 

Evet, biraz üşengeçlikten javascripte yanaşmadım fakat çözemiyorsak mecbur orayı kullanacağız.
 
Sorun üstüne gelince bile dropdown'un kapanıyor oluşuysa JavaScript olmadan da çözülebilir bu, muhtemelen yapıda bir hata vardır çünkü sorunsuz bir dropdown tasarımında bu tarz bir hata olmaz.

Menüdeki li nasıl bir yapıda?
 
Hata dropdown menüsüne gelinmeden kapanması. Arkadaş o yüzden transition koymak istemiş, mantıklı aslında ama display:none durumunu display:flex gibi yapmak istediğimizde transition bir işe yaramaz. CSS ile de çözülür ama ben üşenirim açıkçası. Gerçi illa ki tutorial'ı vardır ama...
 
İlk olarak dropdown tasarımındaki margin'i kaldırın, eleman zaten absolute olarak konumlandırılmış ondan dolayı top,left,bottom,right gibi değerleri kullanarak pozisyonlandırın. Sizin bu sorunu yaşamanızın sebebi dropdown elemanının hover verilen elemandan çok uzak durması, yakınlaştırırsanız sorun çözülür zaten.

Margin bu aradaki mesafenin en büyük sebebi, marginleri kaldırıp left: 0; top: 20px (ihtiyacına göre değiştir) gibi değerler verirseniz transition'a falan gerek kalmayacak.

Dropdown'ın açılıp kapanmasının da transition ile olmasını isterseniz bunun için visibility ve opacity kullanın, display; transition'dan etkilenmez.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…