Saturday, December 29, 2018

html - CSS Sibling Selector w/ Hover




So here's what I'm trying to do:



I have two icons side by side, and underneath I have two spans that are hidden. When I mouse-over an icon I want the corresponding span to appear.



------------ HTML Part -----------------




  • one

  • two










  • --------------CSS Part --------------



    span.popups span.one,span.popups span.two{opacity:0;


    span.icons:first-child:hover + span.popups span.one{opacity:1}
    span.icons:last-child:hover + span.popups span.two{opacity:1}


    Now obviously this doesn't quite work, how would I go about this using only CSS?



    http://jsfiddle.net/RLhKK/


    Answer



    Let me explain your selector first which is




    span.icons:first-child:hover + span.popups span.one{opacity:1}


    Well, you are trying to select the first-child nested under span.icons and on hover of that you select span.one which is nested inside span.popups but you are going wrong here, you are selecting adjacent span element having .popups which is not adjacent to the span which is nested inside .icons, but in general, your selector is wrong, CSS cannot select the parent, inshort, CSS cannot go back once it enters an element, it cannot move up the hierarchy.



    So you cannot do that way, either you need to alter your DOM, and bring all the span elements at the same level, or your hidden span should be at the child level.



    And another way to achieve this is by using position, which I won't suggest here.




    Also, your markup is invalid, you need to have ul element around li.






    Lets alter the DOM and see how we can select





    • one
      Show Me

    • two
      Show me as well





    .icons li > span {
    opacity: 0;
    }

    .icons li:hover > span {
    opacity: 1;
    }



    Demo






    How would I've achieved this?



    Demo 2





    Hover Me
    First

    Hover Me
    Second



    .icons > div[id] {
    opacity: 0;
    height: 100px;

    width: 100px;
    background: red;
    }

    .icons > span {
    display: block;
    }

    .icons > span:hover + div {
    opacity: 1;

    }





    You can use display or visibilty property as well, if you do not want to use opacity as they are well suited when you want to transit an element using transition.



    Demo 3 (Using transition if you are going for opacity method)


    No comments:

    Post a Comment

    plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

    In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...