Skip to content

[NODEBB] CSS Style Sheets SelectBox

Locked Solved Customisation
  • Yeah i delete cache and Ctrl + F5

    The problem come when I don’t click on fa-fw but background.

    Like this :

    95b7fce2-8708-4e32-bdb9-6fbd107ddb5c-image.png

    On fa-fw = No problem

  • @downpw Ok, do the default theme issue is fixed, but you still see the white icon when clicking the background and not the icon itself ?

  • nope it’s the same even on fa-fw and default theme

    but as you are connected you have to see it.

  • @downpw Right. I think I finally have this working 🙂

    I’ve added this into your global CSS - don’t delete it

    .themeon {
        color: #000000 !important;
    }
    .themeoff {
        color: #ffffff !important;
    }
    

    Final modified JS

    // Bugfix theme switcher button when dropdown / Focus / Not focus
    	$(document).ready(function () {
    	// First, detect which theme is in use
        var whichTheme = localStorage.getItem("theme");
        // Is the target dropdown expanded ? Use aria-expanded for this as it populates into the DOM on change making it easier to work with. 
        // If it is expanded, then we set the icon to WHITE with CSS class "themeon"
          if ($('#theme_dropdown').attr('aria-expanded') === "true") {
             $("#switcher i").addClass("themeon");
          }
        // If it is collapsed, then we set the icon to BLACK with CSS class "themeoff"
          if ($('#theme_dropdown').attr('aria-expanded') === "false") {
             $("#switcher i").addClass("themeoff");
          }
          // If we are using the default theme, deploy CSS "themeoff" and set the icon to BLACK
              if (whichTheme === '') {
          // If no other matches, assume the default theme, deploy CSS "themeoff" and set the icon to BLACK
             $("#switcher i").removeClass("themeoff");
        }
    });
    

    According to my testing, this works 🙂

  • clear and simple explanations.
    Perfect 😉

    I don’t know if I should say this but… I love you ha ha 😆

  • @downpw Some last changes to address small bugs. The below CSS has been added

    /* DO NOT DELETE THESE LINES */
    [aria-expanded="true"] a #ticon {
        color: #000000;
    }
    
    .themeon {
        color: #ffffff !important;
    }
    .themeoff {
        color: #000000 !important;
    }
    
    
    

    And also to the mobile block

    /* DO NOT DELETE THESE LINES */
    [aria-expanded="true"] a #ticon {
        color: #ffffff;
    }
    .themeoff {
        color: #ffffff !important;
    }
    

    Finally, a new function

    // When hovering over the #switcher element, target the i class and add 'themeoff'
      $(document).on('mouseenter','#switcher', function() {
    		$('#switcher i').addClass("themeoff");
    });
    // When leaving the however state, target the i class and remove 'themeoff'
      $(document).on('mouseleave','#switcher', function() {
    		$('#switcher i').removeClass("themeoff");
    });
    

    This block should be deleted

    /*
    // Bugfix theme switcher button when dropdown / Focus / Not focus
    	$(document).ready(function () {
    	// First, detect which theme is in use
    	// Tout d'abord, on détecte quel thème est utilisé
        var whichTheme = localStorage.getItem("theme");
        // Is the target dropdown expanded ? Use aria-expanded for this as it populates into the DOM on change making it easier to work with. 
        // If it is expanded, then we set the icon to WHITE with CSS  class "themeon"
        // On utilise "aria-expanded" pour savoir si le menu déroulant est actif/dévelopé car la variable se remplit dans le DOM en cas de changement, ce qui facilite le travail avec.
        // Si le menu est actif/dévelopé, on définit l'icône en BLANC avec la classe CSS "themeon"
          if ($('#theme_dropdown').attr('aria-expanded') === "true") {
             $("#switcher i").addClass("themeon");
          }
        // If it is collapsed, then we set the icon to BLACK with CSS  class "themeoff"
        // S'il est réduit/non actif, nous définissons l'icône sur NOIR avec la classe CSS "themeoff"
          if ($('#theme_dropdown').attr('aria-expanded') === "false") {
              console.log("Theme selector is not active");
             $("#switcher i").addClass("themeoff");
          }
          // If we are using the default theme, deploy CSS "themeoff" and set the icon to BLACK
          // Si on utilise le thème par défaut, on utilise le CSS "themeoff" et on définit l'icône sur NOIR
              if (whichTheme === '') {
          // If no other matches, assume the default theme, deploy CSS  "themeoff" and set the icon to BLACK
          // Si rien ne correspond, on utilise le thème par défaut, on utilise le CSS "themeoff" et on définit l'icône sur NOIR
             $("#switcher i").removeClass("themeoff");
        }
    });
    */
    
  • DownPWundefined DownPW referenced this topic on
  • @phenomlab

    It’s possible to add a reload at the end of the script ?

    Because, I just saw this:

    if certain CSSS variables are declared in one theme and not in the other, when I Switch themes, the CSS was applied but not correctly. If i refresh it’s OK.

    I seem to have 2 solutions:

    • Declare all variables in each theme even if they are not used in others (with or without !important)

    • Reload the page after selecting a theme.

    Or maybe you have another solution.

  • @downpw in most cases, the best way to handle this is to strip one CSS file before you add the other. However, as your CSS file is actually an extension of the main theme (in the sense that stock theme provides default variables and your custom theme overrides these), this will not work as the required CSS for the site to run properly will be missing.

    Reloading the site will work, but it’s not really the way to go as all the resources will need to be loaded again, and this defeats the purpose of jQuery in the sense that it is Ajax backed meaning the DOM should already contain the targets to be changed.

    If reloading solves the issue, then ok. Admittedly, we have to do this with the default theme when selected to ensure we strip all previously loaded CSS from the custom themes.

  • @DownPW as discussed in PM

    Seems to have been solved with the new JS code that you added allowing the version CSS file change!!

    Cache problem therefore with the JS of the Switcher theme

    Based on this, I will close this thread and reference
    https://sudonix.com/topic/207/nodebb-help-for-my-custom-css/27

  • phenomlabundefined phenomlab locked this topic on
  • DownPWundefined DownPW referenced this topic on
  • elhana fineundefined elhana fine referenced this topic on
  • Teemberlandundefined Teemberland referenced this topic on

Did this solution help you?
Did you find the suggested solution useful? Why not buy me a coffee? It's a nice gesture, and a great way to show your appreciation 💗

  • Footer bar add center text

    Solved Customisation
    41
    8 Votes
    41 Posts
    3k Views

    @phenomlab said in Footer bar add center text:

    div#console-nav-tab

    Ah ok test with bottom: 0px !important; idem

  • Post Style View

    Solved Customisation
    67
    18 Votes
    67 Posts
    5k Views

    @cagatay

    Just add margin-left on the element like @phenomlab said to you :

    topic [component="post/parent"] { margin-left: 10px; }

    aa08c62b-4223-4cba-8c0f-c73d50474c0d-image.png

    Maybe @phenomlab have a better way

  • 1 Votes
    2 Posts
    610 Views

    @eveh Welcome board 🙂

    The code you are referring to is custom written as no such functionality exists under NodeBB. However, adding the functionality is relatively trivial. Below are the required steps

    Navigate to /admin/appearance/customise#custom-header Add the below code to your header, and save once completed <ol id="mainbanner" class="breadcrumb"><li id="addtext">Your Title Goes Here</li></ol> Navigate to /admin/appearance/customise#custom-js and add the below code, then save $(document).ready(function() { $(window).on('action:ajaxify.end', function(data) { // Initialise mainbanner ID, but hide it from view $('#mainbanner').hide(); var pathname = window.location.pathname; if (pathname === "/") { $("#addtext").text("Your Title"); $('#mainbanner').show(); } else {} // If we want to add a title to a sub page, uncomment the below and adjust accordingly //if (pathname === "/yourpath") { //$("#addtext").text("Your Title"); //$('#mainbanner').show(); //} }); }); Navigate to /admin/appearance/customise#custom-css and add the below CSS block .breadcrumb { right: 0; margin-right: auto; text-align: center; background: #0086c4; color: #ffffff; width: 100vw; position: relative; margin-left: -50vw; left: 50%; top: 50px; position: fixed; z-index: 1020; }

    Note, that you will need to adjust your CSS code to suit your own site / requirements.

  • 5 Votes
    29 Posts
    2k Views

    @phenomlab said in nodebb chat roll dice game:

    @DownPW I still think you could do something much quicker with jQuery.

    Why not but like I said, I have no skills to do that.

    If you are motivated, why not but I don’t want to bother you especially since it will only be for a certain period of time.

  • CSS codes for fa-info icon

    Solved Customisation
    9
    6 Votes
    9 Posts
    455 Views

    I have just figured it out…

    it can be targeted with text-decoration-color:

    I was mistakenly using color

  • 38 Votes
    193 Posts
    29k Views

    OMG make sense

    Thanks dude 🙂

  • [NODEBB] Welcome Message

    Solved Customisation
    18
    13 Votes
    18 Posts
    2k Views

    For anyone reviewing this post, there’s an updated version here that also includes an sunrise / sun / moon icon depending on the time of day

    https://sudonix.com/topic/233/nodebb-welcome-message-with-logo-footer-change/3?_=1645445273209

  • NodeBB Design help

    Solved Customisation
    8
    2 Votes
    8 Posts
    828 Views

    @riekmedia I’ve applied some new CSS to your site. Can you reload the page and try again ?

    For the record, this is what I added

    #footer { background: #2d343e; border-top: 4px solid #2d343e; font-size: 0.9em; margin-top: 70px; padding: 80px 0 0; position: relative; clear: both; bottom: 0; left: 0; right: 0; z-index: 1000; margin-left: -15px; margin-right: -338px; }

    The /categories page seems a bit messed up, so looking at that currently

    EDIT - issued some override CSS in the CATEGORIES widget

    <!--- CSS fix for overspill on /categories page - DO NOT DELETE --> <style> #footer { margin-right: -45px; } </style>

    That should resolve the /categories issue.