• 13-02-2020, 21:48:40
    #1
    <div class="a">
    <p>HOVER</p>
    </div>
    
    <div class="b">
    <p>SHOW</p>
    </div>
    CSS ile, a divi'nin içerisindeki P taghover olunca, b class'lı divin yada b class'lı divin içindeki p'nin değerleriyle oynayabilmek istiyorum.
    Css ile yapmak mümkün müdür? mümkünse nasıldır? Çok teşekkür ederim.
  • 13-02-2020, 21:53:12
    #2
    css ile bir yolu yok gibi gözüküyor css de kullanabileceğiniz seçici kodlar https://www.w3schools.com/cssref/css_selectors.asp
  • 13-02-2020, 21:59:58
    #3
    F. STACK WEB + MOBILE DEV
    Seçemezsiniz.
    • Genel kapsayıcı bi div oluşturun, p'yi b'nin içine değil, b'yi p'nin yanına alın.
    • Genel div'e position: relative verin
    • p ve b 'yi position: absolute ile genel div'e hapsedin
    • p:hover ~ div.b şeklinde b'yi seçipi istediğiniz işlemi yaptırın
  • 13-02-2020, 22:12:08
    #4
    Tonks adlı üyeden alıntı: mesajı görüntüle
    Seçemezsiniz.
    • Genel kapsayıcı bi div oluşturun, p'yi b'nin içine değil, b'yi p'nin yanına alın.
    • Genel div'e position: relative verin
    • p ve b 'yi position: absolute ile genel div'e hapsedin
    • p:hover ~ div.b şeklinde b'yi seçipi istediğiniz işlemi yaptırın
    Glob adlı üyeden alıntı: mesajı görüntüle
    css ile bir yolu yok gibi gözüküyor css de kullanabileceğiniz seçici kodlar https://www.w3schools.com/cssref/css_selectors.asp
    Teşekkür ederim
  • 14-02-2020, 16:03:35
    #5
    Bir üst elemanı seçebileceğiniz bir seçici henüz yok, alternatif yerleşimler ile aynı seviyedeki elemanı yakalayabilirsiniz yukarıda arkadaşlar bahsetmiş zaten. Ya da basit bir js kodu kullanarak yapabilirsiniz bunu.
    Aşağıdaki kodu jquery kütüphanesi ile çalıştırırsanız a class değerine sahip div elemanının içinde p tagına hover yapıldığında, herhangi bir yerdeki b classına sahip div elemanına current classı eklenecektir. Current'e de css içinde vereceğiniz özellikler tanımlanacaktır. Hover işlemi bittiğinde özellik kalkar.
    $(function(){
        var a = 0;
        $('.a p').hover(function(){
            $('.b').toggleClass("current");
        });
    });
  • 14-02-2020, 18:55:33
    #6
    Hunper adlı üyeden alıntı: mesajı görüntüle
    Bir üst elemanı seçebileceğiniz bir seçici henüz yok, alternatif yerleşimler ile aynı seviyedeki elemanı yakalayabilirsiniz yukarıda arkadaşlar bahsetmiş zaten. Ya da basit bir js kodu kullanarak yapabilirsiniz bunu.
    Aşağıdaki kodu jquery kütüphanesi ile çalıştırırsanız a class değerine sahip div elemanının içinde p tagına hover yapıldığında, herhangi bir yerdeki b classına sahip div elemanına current classı eklenecektir. Current'e de css içinde vereceğiniz özellikler tanımlanacaktır. Hover işlemi bittiğinde özellik kalkar.
    $(function(){
        var a = 0;
        $('.a p').hover(function(){
            $('.b').toggleClass("current");
        });
    });
    Hocam teşekkür ederim, javascript ile evet yapabiliyorum fakat bunun ideali bu mudur? imzanızdan anladığım kadarıyla sizde sektördesiniz, bende kendi çapımda frontend tasarımlar dökmeye çalışıyorum fakat yeri geliyor bazı işlerde birbirinden bağımsız yerlerin birbirinin css'ini değiştirmesi gerekiyor fakat o değiştirecek yer de hardcode değil.
    Misal bir menü elemanının üzerine gelince spesifik bir div'in rengi değişecek diyelim.
    Bunu js'de yapmak için bu iki elemanı birbirine tanımlayacağız, tamam buraya kadar, ama ya ertesi gün bu adamlar buna backend yazınca, menü elemanları değişince, o zaman bu adamlara siz html'i değiştirirken js'ye açtığınız divlerin id'sini de mi yazın diyeceğiz? menü elemanının sayısı değişir birçok unsur var yani hardcode yapmamam gerekir, bu durumda ne önerirsiniz?
  • 14-02-2020, 20:13:27
    #7
    caylakgirisimci adlı üyeden alıntı: mesajı görüntüle
    Hocam teşekkür ederim, javascript ile evet yapabiliyorum fakat bunun ideali bu mudur? imzanızdan anladığım kadarıyla sizde sektördesiniz, bende kendi çapımda frontend tasarımlar dökmeye çalışıyorum fakat yeri geliyor bazı işlerde birbirinden bağımsız yerlerin birbirinin css'ini değiştirmesi gerekiyor fakat o değiştirecek yer de hardcode değil.
    Misal bir menü elemanının üzerine gelince spesifik bir div'in rengi değişecek diyelim.
    Bunu js'de yapmak için bu iki elemanı birbirine tanımlayacağız, tamam buraya kadar, ama ya ertesi gün bu adamlar buna backend yazınca, menü elemanları değişince, o zaman bu adamlara siz html'i değiştirirken js'ye açtığınız divlerin id'sini de mi yazın diyeceğiz? menü elemanının sayısı değişir birçok unsur var yani hardcode yapmamam gerekir, bu durumda ne önerirsiniz?
    CSS tarafında sizin ilk mesajınızda bahsettiğiniz şekilde bir seçici ne yazık ki yok. Ancak dediğim gibi yan elemanı seçerek bunu sıralı kullanım için uygun hale getirebiliriz. Ancak yukarıdaki html kod yapısının değişmesi gerekiyor.
    Örneğin aynı görüntüyü verecek şekilde genel bir a elemanı düşünüp içine p ve b elemanı aynı seviye olarak eklenerek p ye hover yapıldığında + seçicisi ile yanındaki b elemanı yakalanbilir.

    Jquery'de tek satır kod yazıp bunu html içinde çoğaltarak kullanabileceğimiz birçok yöntem de mevcut. Örnek verecek olursak ".next" ve ".find" seçicilerini kullanarak yukarıdaki html yapısında hover yakalanarak p elemanına özellik atanabilir. Bu yapıyı kopyala yapıştır ile çoğalttığımızda her html yapısı için çalışıyor durumda kalacaktır. Yukarıdaki html yapısında istediğiniz hover yakalaması sadece css ile "eğer bilgim eksik değilse" mümkün değil. Ama dediğim gibi css'de her zaman alternatif yollar mevcuttur. Görsel bir çıktı olsaydı o görseli farklı bir html css yapısı ile oluşturup hover yakalamayı da sağlayacak bir css kodu mutlaka yazılabilirdi.

    Ek olarak yukarıdaki html yapısında amacımız p etiketine hover olunca değil de "a" class değerine sahip div elemanına hover olunca olsaydı css ile çözmek mümkündü. O da şöyle ki .a:hover + .b {color:red} a elemanına hover yapıldığında sonraki b elemanını yakala ve kodları uygula demiş olduk. Ancak a elemanının içindeki herhangi bir şeye hover yapıldığında b yi yakalayıp uyguluyor olacaktık.
  • 14-02-2020, 20:34:04
    #8
    Hunper adlı üyeden alıntı: mesajı görüntüle
    CSS tarafında sizin ilk mesajınızda bahsettiğiniz şekilde bir seçici ne yazık ki yok. Ancak dediğim gibi yan elemanı seçerek bunu sıralı kullanım için uygun hale getirebiliriz. Ancak yukarıdaki html kod yapısının değişmesi gerekiyor.
    Örneğin aynı görüntüyü verecek şekilde genel bir a elemanı düşünüp içine p ve b elemanı aynı seviye olarak eklenerek p ye hover yapıldığında + seçicisi ile yanındaki b elemanı yakalanbilir.

    Jquery'de tek satır kod yazıp bunu html içinde çoğaltarak kullanabileceğimiz birçok yöntem de mevcut. Örnek verecek olursak ".next" ve ".find" seçicilerini kullanarak yukarıdaki html yapısında hover yakalanarak p elemanına özellik atanabilir. Bu yapıyı kopyala yapıştır ile çoğalttığımızda her html yapısı için çalışıyor durumda kalacaktır. Yukarıdaki html yapısında istediğiniz hover yakalaması sadece css ile "eğer bilgim eksik değilse" mümkün değil. Ama dediğim gibi css'de her zaman alternatif yollar mevcuttur. Görsel bir çıktı olsaydı o görseli farklı bir html css yapısı ile oluşturup hover yakalamayı da sağlayacak bir css kodu mutlaka yazılabilirdi.

    Ek olarak yukarıdaki html yapısında amacımız p etiketine hover olunca değil de "a" class değerine sahip div elemanına hover olunca olsaydı css ile çözmek mümkündü. O da şöyle ki .a:hover + .b {color:red} a elemanına hover yapıldığında sonraki b elemanını yakala ve kodları uygula demiş olduk. Ancak a elemanının içindeki herhangi bir şeye hover yapıldığında b yi yakalayıp uyguluyor olacaktık.
    Hocam şöyle konudaki örnek aslında css'deki seçiciyi öğrenmek içindi, o örnek çok önemli değil.
    Örneğin navbar yapıyoruz,
    ANASAYFA, İLETİŞİM, HAKKIMIZDA olsun mesela.
    bunlar yukarda rastgele bir yerdeler. Artabilirler, eksilebilirler.
    Aşağıda da bunlar için özel ayrılmış alanlar var, örneğin content sectionları olsun. Ama tam bağımsız birbirinden uzak divler, bu menü üstte header'in içinde birsürü şeyin içinde klasik birere A etiketi olsun.
    Şimdi ordan çıktık, başka kodlar yazdık vs.vs.
    Bu seferde yeni bir section açtık, bunun içinde de anasayfa için, iletişim için ve hakkımızda için ayrı ayrı 3 tane div açtık, hepsi display none.
    İstiyoruz ki, anasayfa hover olunca, bu anasayfaya ait aşağılardaki anasayfa için açtığımız div görünür olsun.
    Bunu hepsini jquery'le falan bağlayarak yapabiliriz dediğiniz gibi.
    Ama diyelim ki adamlar bunu tema yaptı bişey yaptı, kod giydirdiler, menüyü panelden ekle çıkar yapıyorlar misal. aynı şekilde o menü elemanına bağlı divi de panelden ekliyorlar olsun.
    Haliyle bizim jquery'deki hardcode olan #anasayfa #iletisim tarzı alanlar uçacak.
    Biz yazılımcıya, sen bunu kodlarken, jquery kodlarına da müdahale et, orasını da değiştir diyemeyiz sanırım, o yüzden sektörde böyle mi merak ettim. Yoksa jquery'le falan halledilir ama usülü bumudur bilmek istedim
  • 14-02-2020, 21:02:51
    #9
    caylakgirisimci adlı üyeden alıntı: mesajı görüntüle
    Hocam şöyle konudaki örnek aslında css'deki seçiciyi öğrenmek içindi, o örnek çok önemli değil.
    Örneğin navbar yapıyoruz,
    ANASAYFA, İLETİŞİM, HAKKIMIZDA olsun mesela.
    bunlar yukarda rastgele bir yerdeler. Artabilirler, eksilebilirler.
    Aşağıda da bunlar için özel ayrılmış alanlar var, örneğin content sectionları olsun. Ama tam bağımsız birbirinden uzak divler, bu menü üstte header'in içinde birsürü şeyin içinde klasik birere A etiketi olsun.
    Şimdi ordan çıktık, başka kodlar yazdık vs.vs.
    Bu seferde yeni bir section açtık, bunun içinde de anasayfa için, iletişim için ve hakkımızda için ayrı ayrı 3 tane div açtık, hepsi display none.
    İstiyoruz ki, anasayfa hover olunca, bu anasayfaya ait aşağılardaki anasayfa için açtığımız div görünür olsun.
    Bunu hepsini jquery'le falan bağlayarak yapabiliriz dediğiniz gibi.
    Ama diyelim ki adamlar bunu tema yaptı bişey yaptı, kod giydirdiler, menüyü panelden ekle çıkar yapıyorlar misal. aynı şekilde o menü elemanına bağlı divi de panelden ekliyorlar olsun.
    Haliyle bizim jquery'deki hardcode olan #anasayfa #iletisim tarzı alanlar uçacak.
    Biz yazılımcıya, sen bunu kodlarken, jquery kodlarına da müdahale et, orasını da değiştir diyemeyiz sanırım, o yüzden sektörde böyle mi merak ettim. Yoksa jquery'le falan halledilir ama usülü bumudur bilmek istedim
    Burada örneklediğiniz işlemi evet css ile yapmak mümkün değil. Ancak jquery ile ekle/çıkar mantığına uygun şekilde yapmak mümkün. Yani jquery için kodları yazarsınız, sonrasında menüde ve alt bölümde artma/azalma olsa bile çalışıyor durumda olur. Yani her menü elemanı ve aşağıdaki ilgili açılacak için ayrı id girmeye gerek kalmayacak bir yapı oluşturulabilir. Örneğin codepen üzerinde oluşturulmuş bir tab sistemini inceleyebilirsiniz.

    Jquery tarafında kod yazılmış, html tarafında etiketleri özelleştirecek bir şey olmadan ekleyip çıkartma yapılabiliyor. Bu da php veya yazılım dili hangisi ise o tarafa uygun bir yapım oluyor. Bu şekilde sistemleri css ile zorlamak yerine (bu konu özelinde söylüyorum zaten css ile yapmak mümkün değil) jquery gibi kütüphaneler ile yapmak daha idealdir.
    https://codepen.io/tayfunerbilen/pen/hKAfb