Skip to content

fading in /tags page

Solved Customisation
32 3 13.5k 1
  • wrote on last edited by
    #1

    hi @phenomlab ,

    I loved how all tags except the selected one fade in /tags page…

    https://sudonix.com/tags

    Screen Shot 2022-06-18 at 9.42.10 PM.png

    can you please share the secret? 😄

  • wrote on last edited by
    #3

    @crazycells @DownPW here you go…

    /* SIBLING FADE: fade out siblings around a hovered item */
    
    .tag-list { visibility: hidden; }
    /* Prevents :hover from triggering in the gaps between items */
    
    .tag-list > * { visibility: visible; }
    /* Brings the child items back in, even though the parent is `hidden` */
    
    .tag-list > * { transition: opacity 150ms linear 100ms, transform 150ms ease-in-out 100ms; }
    /* Makes the fades smooth with a slight delay to prevent jumps as the mouse moves between items */
    
    .tag-list:hover > * { opacity: 0.4; transform: scale(0.9); }
    /* Fade out all items when the parent is hovered */
    
    .tag-list > *:hover { opacity: 1; transform: scale(1); transition-delay: 0ms, 0ms; }
    /* Fade in the currently hovered item */
    

    This isn’t my creation actually - I stumbled across the below Code Pen and fell in love with it

    https://codepen.io/bytzmura/embed/XWjMPdx?default-tab=css%2Cresult&theme-id=dark

  • wrote on last edited by
    #2

    ohh yeah good question lol 😉

  • wrote on last edited by
    #3

    @crazycells @DownPW here you go…

    /* SIBLING FADE: fade out siblings around a hovered item */
    
    .tag-list { visibility: hidden; }
    /* Prevents :hover from triggering in the gaps between items */
    
    .tag-list > * { visibility: visible; }
    /* Brings the child items back in, even though the parent is `hidden` */
    
    .tag-list > * { transition: opacity 150ms linear 100ms, transform 150ms ease-in-out 100ms; }
    /* Makes the fades smooth with a slight delay to prevent jumps as the mouse moves between items */
    
    .tag-list:hover > * { opacity: 0.4; transform: scale(0.9); }
    /* Fade out all items when the parent is hovered */
    
    .tag-list > *:hover { opacity: 1; transform: scale(1); transition-delay: 0ms, 0ms; }
    /* Fade in the currently hovered item */
    

    This isn’t my creation actually - I stumbled across the below Code Pen and fell in love with it

    https://codepen.io/bytzmura/embed/XWjMPdx?default-tab=css%2Cresult&theme-id=dark

  • phenomlab phenomlab has marked this topic as solved on
  • wrote on last edited by
    #4

    Thanks codepen is a very useful site !

    the spinning logo is codepen two ?

  • Thanks codepen is a very useful site !

    the spinning logo is codepen two ?

    wrote on last edited by
    #5

    @DownPW said in fading in /tags page:

    the spinning logo is codepen two ?

    No, that’s my own CSS.

  • wrote on last edited by
    #6

    oo yeah can you provide it because I use this but doesn’t working:

    .header .forum-logo, img.forum-logo.head {
        max-height: 50px;
        width: auto;
        height: 30px;
        margin-top: 9px;
        max-width: 150px;
        min-width: 32px;
        display: inline-block;
        animation-name: rotate180, rotate0;
        animation-duration: 1000ms;
        animation-delay: 0s, 1000ms;
        animation-iteration-count: 1;
        animation-timing-function: linear;
        transition: transform 1000ms ease-in-out;
    }
    
  • oo yeah can you provide it because I use this but doesn’t working:

    .header .forum-logo, img.forum-logo.head {
        max-height: 50px;
        width: auto;
        height: 30px;
        margin-top: 9px;
        max-width: 150px;
        min-width: 32px;
        display: inline-block;
        animation-name: rotate180, rotate0;
        animation-duration: 1000ms;
        animation-delay: 0s, 1000ms;
        animation-iteration-count: 1;
        animation-timing-function: linear;
        transition: transform 1000ms ease-in-out;
    }
    
    wrote on last edited by
    #7

    @DownPW You’re probably missing this

        @keyframes rotate180 {
            from {
              transform: rotate(0deg);
            }
           
            to {
              transform: rotate(180deg);
            }
          }
           
          @keyframes rotate0 {
            from {
              transform: rotate(180deg);
            }
           
            to {
              transform: rotate(0deg);
            }
          }
    

    Without the keyframes it will not work 🙂

  • wrote on last edited by DownPW
    #8

    @DownPW said in fading in /tags page:

    .header .forum-logo, img.forum-logo.head {
    max-height: 50px;
    width: auto;
    height: 30px;
    margin-top: 9px;
    max-width: 150px;
    min-width: 32px;
    display: inline-block;
    animation-name: rotate180, rotate0;
    animation-duration: 1000ms;
    animation-delay: 0s, 1000ms;
    animation-iteration-count: 1;
    animation-timing-function: linear;
    transition: transform 1000ms ease-in-out;
    }

    like this ? Because I have the effect but just at the refresh page and not on Mouse over

    .header .forum-logo, img.forum-logo.head:hover {
        max-height: 50px;
        width: auto;
        height: 30px;
        margin-top: 9px;
        max-width: 150px;
        min-width: 32px;
        display: inline-block;
        animation-name: rotate180, rotate0;
        animation-duration: 1000ms;
        animation-delay: 0s, 1000ms;
        animation-iteration-count: 1;
        animation-timing-function: linear;
        transition: transform 1000ms ease-in-out;
        
        @keyframes rotate180 {
            from {
              transform: rotate(0deg);
            }
           
            to {
              transform: rotate(180deg);
            }
          }
           
          @keyframes rotate0 {
            from {
              transform: rotate(180deg);
            }
           
            to {
              transform: rotate(0deg);
            }
          }
          
    }
    

    EDIT:

    I have it !!!

    @keyframes rotate180 {
            from {
              transform: rotate(0deg);
            }
           
            to {
              transform: rotate(180deg);
            }
          }
           
          @keyframes rotate0 {
            from {
              transform: rotate(180deg);
            }
           
            to {
              transform: rotate(0deg);
            }
          }
          
    .header .forum-logo:hover {
        display: inline-block;
        animation-name: rotate180, rotate0;
        animation-duration: 1000ms;
        animation-delay: 0s, 1000ms;
        animation-iteration-count: 1;
        animation-timing-function: linear;
        transition: transform 1000ms ease-in-out;
        
       
          
    }
    
  • @DownPW said in fading in /tags page:

    .header .forum-logo, img.forum-logo.head {
    max-height: 50px;
    width: auto;
    height: 30px;
    margin-top: 9px;
    max-width: 150px;
    min-width: 32px;
    display: inline-block;
    animation-name: rotate180, rotate0;
    animation-duration: 1000ms;
    animation-delay: 0s, 1000ms;
    animation-iteration-count: 1;
    animation-timing-function: linear;
    transition: transform 1000ms ease-in-out;
    }

    like this ? Because I have the effect but just at the refresh page and not on Mouse over

    .header .forum-logo, img.forum-logo.head:hover {
        max-height: 50px;
        width: auto;
        height: 30px;
        margin-top: 9px;
        max-width: 150px;
        min-width: 32px;
        display: inline-block;
        animation-name: rotate180, rotate0;
        animation-duration: 1000ms;
        animation-delay: 0s, 1000ms;
        animation-iteration-count: 1;
        animation-timing-function: linear;
        transition: transform 1000ms ease-in-out;
        
        @keyframes rotate180 {
            from {
              transform: rotate(0deg);
            }
           
            to {
              transform: rotate(180deg);
            }
          }
           
          @keyframes rotate0 {
            from {
              transform: rotate(180deg);
            }
           
            to {
              transform: rotate(0deg);
            }
          }
          
    }
    

    EDIT:

    I have it !!!

    @keyframes rotate180 {
            from {
              transform: rotate(0deg);
            }
           
            to {
              transform: rotate(180deg);
            }
          }
           
          @keyframes rotate0 {
            from {
              transform: rotate(180deg);
            }
           
            to {
              transform: rotate(0deg);
            }
          }
          
    .header .forum-logo:hover {
        display: inline-block;
        animation-name: rotate180, rotate0;
        animation-duration: 1000ms;
        animation-delay: 0s, 1000ms;
        animation-iteration-count: 1;
        animation-timing-function: linear;
        transition: transform 1000ms ease-in-out;
        
       
          
    }
    
    wrote on last edited by
    #9

    @DownPW Yes, that was going to be my solution.

  • @crazycells @DownPW here you go…

    /* SIBLING FADE: fade out siblings around a hovered item */
    
    .tag-list { visibility: hidden; }
    /* Prevents :hover from triggering in the gaps between items */
    
    .tag-list > * { visibility: visible; }
    /* Brings the child items back in, even though the parent is `hidden` */
    
    .tag-list > * { transition: opacity 150ms linear 100ms, transform 150ms ease-in-out 100ms; }
    /* Makes the fades smooth with a slight delay to prevent jumps as the mouse moves between items */
    
    .tag-list:hover > * { opacity: 0.4; transform: scale(0.9); }
    /* Fade out all items when the parent is hovered */
    
    .tag-list > *:hover { opacity: 1; transform: scale(1); transition-delay: 0ms, 0ms; }
    /* Fade in the currently hovered item */
    

    This isn’t my creation actually - I stumbled across the below Code Pen and fell in love with it

    https://codepen.io/bytzmura/embed/XWjMPdx?default-tab=css%2Cresult&theme-id=dark

    wrote on last edited by
    #10

    @phenomlab thanks for sharing, that looks very cool 👍

  • @DownPW said in fading in /tags page:

    .header .forum-logo, img.forum-logo.head {
    max-height: 50px;
    width: auto;
    height: 30px;
    margin-top: 9px;
    max-width: 150px;
    min-width: 32px;
    display: inline-block;
    animation-name: rotate180, rotate0;
    animation-duration: 1000ms;
    animation-delay: 0s, 1000ms;
    animation-iteration-count: 1;
    animation-timing-function: linear;
    transition: transform 1000ms ease-in-out;
    }

    like this ? Because I have the effect but just at the refresh page and not on Mouse over

    .header .forum-logo, img.forum-logo.head:hover {
        max-height: 50px;
        width: auto;
        height: 30px;
        margin-top: 9px;
        max-width: 150px;
        min-width: 32px;
        display: inline-block;
        animation-name: rotate180, rotate0;
        animation-duration: 1000ms;
        animation-delay: 0s, 1000ms;
        animation-iteration-count: 1;
        animation-timing-function: linear;
        transition: transform 1000ms ease-in-out;
        
        @keyframes rotate180 {
            from {
              transform: rotate(0deg);
            }
           
            to {
              transform: rotate(180deg);
            }
          }
           
          @keyframes rotate0 {
            from {
              transform: rotate(180deg);
            }
           
            to {
              transform: rotate(0deg);
            }
          }
          
    }
    

    EDIT:

    I have it !!!

    @keyframes rotate180 {
            from {
              transform: rotate(0deg);
            }
           
            to {
              transform: rotate(180deg);
            }
          }
           
          @keyframes rotate0 {
            from {
              transform: rotate(180deg);
            }
           
            to {
              transform: rotate(0deg);
            }
          }
          
    .header .forum-logo:hover {
        display: inline-block;
        animation-name: rotate180, rotate0;
        animation-duration: 1000ms;
        animation-delay: 0s, 1000ms;
        animation-iteration-count: 1;
        animation-timing-function: linear;
        transition: transform 1000ms ease-in-out;
        
       
          
    }
    
    wrote on last edited by
    #11

    @DownPW thanks for the codes, how should we edit it if we want a full turn? and keep turning as long as the mouse is hovered on?

  • @DownPW thanks for the codes, how should we edit it if we want a full turn? and keep turning as long as the mouse is hovered on?

    wrote on last edited by
    #12

    @crazycells change 180 to 360 on the keyframes and set to time to infinite on the animation, so an example would be

    animation-iteration-count: infinite;
    

    Don’t do this on mobile devices though as performance will be greatly impacted.

  • @crazycells change 180 to 360 on the keyframes and set to time to infinite on the animation, so an example would be

    animation-iteration-count: infinite;
    

    Don’t do this on mobile devices though as performance will be greatly impacted.

    wrote on last edited by
    #13

    @phenomlab thanks 👍

  • wrote on last edited by
    #14

    hmmm

    Strange with the code I put above, as soon as I remove the mouse pointer from the logo, it returns to it’s original place and it cuts the animation.

    How can we let the animation end even if we remove the mouse pointer from the logo ?

  • wrote on last edited by
    #15

    @phenomlab

    Example here of the problem

    https://i.imgur.com/jI2vlrF.mp4

  • hmmm

    Strange with the code I put above, as soon as I remove the mouse pointer from the logo, it returns to it’s original place and it cuts the animation.

    How can we let the animation end even if we remove the mouse pointer from the logo ?

    wrote on last edited by
    #16

    @DownPW said in fading in /tags page:

    as soon as I remove the mouse pointer from the logo, it returns to it’s original place and it cuts the animation.

    Yes, that’s expected because you have the css set for hover state meaning once you remove that state, the animation will stop 😁

    You need to refactor the css to achieve the effect the looking for. Personally, I wouldn’t go for a constantly spinning logo. If you’re as old as I am, you’ll recall this being a thing in Internet Explorer 4 with the spinning globe on the right that was a constant presence and quite a distraction.

    I also wouldn’t do this on any mobile devices as it can severely degrade the browser performance.

  • @DownPW said in fading in /tags page:

    as soon as I remove the mouse pointer from the logo, it returns to it’s original place and it cuts the animation.

    Yes, that’s expected because you have the css set for hover state meaning once you remove that state, the animation will stop 😁

    You need to refactor the css to achieve the effect the looking for. Personally, I wouldn’t go for a constantly spinning logo. If you’re as old as I am, you’ll recall this being a thing in Internet Explorer 4 with the spinning globe on the right that was a constant presence and quite a distraction.

    I also wouldn’t do this on any mobile devices as it can severely degrade the browser performance.

    wrote on last edited by
    #17

    @phenomlab

    no no my god, not constantly animation !!

    If I hover over the logo, the animation triggers as currently, continues and ends even if I remove the mouse from the logo.

    That’s what’s happening here on Sudonix.

  • @phenomlab

    no no my god, not constantly animation !!

    If I hover over the logo, the animation triggers as currently, continues and ends even if I remove the mouse from the logo.

    That’s what’s happening here on Sudonix.

    wrote on last edited by phenomlab
    #18

    @DownPW I see what you mean. The reason for this is that you are calling both rotate180 and rotate0 which are two separate effects.

       animation-name: rotate180, rotate0;
    

    You could remove rotate0 from this section and that will stop the animation as soon as the mouseLeave event is triggered in the DOM (in other words, as soon as you remove the hover)

       animation-name: rotate180;
    
  • wrote on last edited by DownPW
    #19

    hmm not work

    can you provide your CSS code and keyframe for I see it ?
    On sudonix, the animation stop and restart when we leave the mouse over.

  • hmm not work

    can you provide your CSS code and keyframe for I see it ?
    On sudonix, the animation stop and restart when we leave the mouse over.

    wrote on last edited by phenomlab
    #20

    @DownPW it’s here
    https://sudonix.com/post/3590

    The exact CSS I have here is

    @keyframes rotate180 {
            from {
              transform: rotate(0deg);
            }
           
            to {
              transform: rotate(180deg);
            }
          }
           
          @keyframes rotate0 {
            from {
              transform: rotate(180deg);
            }
           
            to {
              transform: rotate(0deg);
            }
          }
        .forum-logo:hover {
            transform: rotate(180deg);
        }
        .hover {
            transform: rotate(180deg);
        }
  • phenomlab phenomlab forked this topic on

Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee ☕
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • Custom Page - nodebb

    Solved Customisation custom-pages nodebb
    13
    2
    5 Votes
    13 Posts
    3k Views
    DownPW
    I’m happy to see this
  • Page control arrows for PWA

    Solved Customisation nodebb
    27
    25 Votes
    27 Posts
    15k Views
    phenomlab
    @crazycells it is, yes - I think I’ll leave it as there is no specific PWA CSS classes I know of. Well, you could use something like the below, but this means multiple CSS files for different operating systems. /** * Determine the mobile operating system. * This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'. * * @returns {String} */ function getMobileOperatingSystem() { var userAgent = navigator.userAgent || navigator.vendor || window.opera; // Windows Phone must come first because its UA also contains "Android" if (/windows phone/i.test(userAgent)) { return "Windows Phone"; } if (/android/i.test(userAgent)) { return "Android"; } if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) { return "iOS"; } return "unknown"; // return “Android” - one should either handle the unknown or fallback to a specific platform, let’s say Android } Once you’re in that rabbit hole, it’s impossible to get out of it.
  • Nodebb icon on google page

    Solved Customisation nodebb
    9
    1
    4 Votes
    9 Posts
    4k Views
    phenomlab
    @Panda It’s been raised multiple times, but only for the open source version, and not hosted.
  • Nodebb design

    Solved General nodebb
    2
    1 Votes
    2 Posts
    1k Views
    phenomlab
    @Panda said in Nodebb design: One negative is not being so good for SEO as more Server side rendered forums, if web crawlers dont run the JS to read the forum. From recollection, Google and Bing have the capability to read and process JS, although it’s not in the same manner as a physical person will consume content on a page. It will be seen as plain text, but will be indexed. However, it’s important to note that Yandex and Baidu will not render JS, although seeing as Google has a 90% share of the content available on the web in terms of indexing, this isn’t something you’ll likely lose sleep over. @Panda said in Nodebb design: The “write api” is preferred for server-to-server interactions. This is mostly based around overall security - you won’t typically want a client machine changing database elements or altering data. This is why you have “client-side” which could be DOM manipulation etc, and “server-side” which performs more complex operations as it can communicate directly with the database whereas the client cannot (and if it can, then you have a serious security flaw). Reading from the API is perfectly acceptable on the client-side, but not being able to write. A paradigm here would be something like SNMP. This protocol exists as a UDP (UDP is very efficient, as it is “fire and forget” and does not wait for a response like TCP does) based service which reads performance data from a remote source, thus enabling an application to parse that data for use in a monitoring application. In all cases, SNMP access should be “RO” (Read Only) and not RW (Read Write). It is completely feasible to assume complete control over a firewall for example by having RW access to SNMP and then exposing it to the entire internet with a weak passphrase. You wouldn’t do it (at least, I hope you wouldn’t) and the same ethic applies to server-side rendering and the execution of commands.
  • Nodebb 3.2.0

    Bugs nodebb nodebb 3.2.0
    20
    1
    2 Votes
    20 Posts
    7k Views
    phenomlab
    @crazycells yes, I’m aware of that. Need to fix EDIT- fixed. Caused by the same CSS that is used to absolutely position the “verified” group badge in the posts view. Amended this CSS so that is specifically targets the post stream as below li[component="post"] a[href*="/groups/verified"] { position: absolute !important; left: 8px; z-index: 2; margin-top: 1px; border-radius: 999px !important; line-height: 14px; display: block; height: 22px; margin-left: 0px !important; }
  • Smart Widgets

    Solved Configure nodebb
    9
    3 Votes
    9 Posts
    3k Views
    phenomlab
    @Panda said in Smart Widgets: So why is that, or conversely why would the function to expose username ever be required, as it seems app.user is already an available global object? It is, yes, but not if you are using it outside of a widget. The function I wrote is also historical and comes from the 2.x train
  • Forum Icons NodeBB

    Solved Customisation icons forum nodebb
    13
    0 Votes
    13 Posts
    5k Views
    phenomlab
    @cagatay That matches what I see [image: 4f0f858d-9812-42b1-9f61-ffb13d31dccd-image.png]
  • NodeBB vs Discourse

    Chitchat nodebb discourse board
    25
    6 Votes
    25 Posts
    14k Views
    RiekMedia
    @phenomlab said in NodeBB vs Discourse: Hetzner eh ? I use them also. In fact, Sudonix is hosted in Nuremberg yes i’m also at hetzner, i have been a customer there for years with a reseller account for domains. My VPS that I host there are also in Nuremberg