Skip to content

[NODEBB] Help for my custom CSS

Solved Customisation
237 5 107.4k 3
  • Hello mark,

    I would like to change the appearance of deleted messages in topics but I can’t find the target or the component.

    image.png

    For example, opacity or left timeline color of the deleted post

    And I would like the same things for deleted topics

    Hard to find these component or class !

    Thanks 🙂

    @DownPW The topic CSS for this should be as below (note, I added the background and color)

    ul.categories-list li.deleted, ul.topics-list li.deleted {
        opacity: .6;
        background: red;
        color: yellow;
    }
    

    aba26d71-17be-41bf-88ab-e5bd7b63071d-image.png

    Threads for deleted posts in topics are covered by the .deleted class (note, I added the background and color)

    .deleted {
        background: black;
        color: orange;
    }
    

    914852d6-1a94-4e63-8bc2-f86e3e5a6ee4-image.png

  • Thanks you Mark !

    I know why I have don’t find this directive lol : I got my brushes tangled up in the dev console 🙂

    So for deleted post , I prefer use li.pt-4.deleted instead of .deleted because .deleted is in conflict with ul.categories-list li.deleted, ul.topics-list li.deleted 🙂

  • Thanks you Mark !

    I know why I have don’t find this directive lol : I got my brushes tangled up in the dev console 🙂

    So for deleted post , I prefer use li.pt-4.deleted instead of .deleted because .deleted is in conflict with ul.categories-list li.deleted, ul.topics-list li.deleted 🙂

    @DownPW yes, fair point. The .deleted class is implicit so you need to make it unique using other classes before it to create a chain which you’ve done.

  • Hello,

    because I use nsembed plugin now, I see the frame are a bit little compared to this forum which uses the same plugin.
    How did you handle that Mark?

    image.png

  • Hello,

    because I use nsembed plugin now, I see the frame are a bit little compared to this forum which uses the same plugin.
    How did you handle that Mark?

    image.png

    @DownPW sorry, I’m not entirely sure what you mean?

  • Sorry the player is small compared to here. I would like to enlarge them ^^ 😉

    – Mine :

    image.png

    – Here on sudonix :

    72b1af86-cb23-4bb3-8d08-0ceb4bb27435-image.png

  • Sorry the player is small compared to here. I would like to enlarge them ^^ 😉

    – Mine :

    image.png

    – Here on sudonix :

    72b1af86-cb23-4bb3-8d08-0ceb4bb27435-image.png

    @DownPW Try this

    .embed-container iframe {
        width: 600px;
        height: 300px;
    }
    

    Obviously, adjust width and height as required

  • Hmm I have this problem with hover background color on close button on modal chat on my dev instance.
    The background color is black :

    f1c61a50-3b64-4470-89fc-182c8027a530-image.png

    And it seems my code doesn’t work :

    7cff1a19-8d5b-4889-a798-1e13898f1963-image.png

    8d427049-7987-4a2c-a0d9-4c26b475cafb-image.png

    I confess that I do not fully understand why I have black and that my code is not interpreted correctly.

    Thanks in advance for your help my friends 😉

  • Hmm I have this problem with hover background color on close button on modal chat on my dev instance.
    The background color is black :

    f1c61a50-3b64-4470-89fc-182c8027a530-image.png

    And it seems my code doesn’t work :

    7cff1a19-8d5b-4889-a798-1e13898f1963-image.png

    8d427049-7987-4a2c-a0d9-4c26b475cafb-image.png

    I confess that I do not fully understand why I have black and that my code is not interpreted correctly.

    Thanks in advance for your help my friends 😉

    @DownPW It’s caused by this css

    .btn-close {
        filter: var(--bs-node-btn-close-color) !important;
    }
    

    If you remove that filter, the issue will be resolved.

  • Thanks. It’s an error.
    Why I have used filter lol

  • Thanks. It’s an error.
    Why I have used filter lol

    @DownPW I figured 😁

  • @phenomlab

    So actually after research I was using as this was used in old core code.

    By removing the “Filter” directive it works for the black background on the hover of the close button: cool !!

    But for the color of the cross icon itself (In fact it is not an icon but an image) it is black for light themes, no problem but it remains black for dark themes so it becomes invisible !!!

    So here is my solution :

    .btn-close {
      background: var(--bs-node-btn-close-bg) !important;
    }
    
    • for light theme:
    --bs-node-btn-close-bg: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
    
    • for dark themes :
    --bs-node-btn-close-bg: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
    

    I see you have the same problem here on sudonix, test that 😉

  • @phenomlab

    So actually after research I was using as this was used in old core code.

    By removing the “Filter” directive it works for the black background on the hover of the close button: cool !!

    But for the color of the cross icon itself (In fact it is not an icon but an image) it is black for light themes, no problem but it remains black for dark themes so it becomes invisible !!!

    So here is my solution :

    .btn-close {
      background: var(--bs-node-btn-close-bg) !important;
    }
    
    • for light theme:
    --bs-node-btn-close-bg: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
    
    • for dark themes :
    --bs-node-btn-close-bg: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
    

    I see you have the same problem here on sudonix, test that 😉

    @DownPW thanks. I’ll check this.

  • no problem. Always @phenomlab

    I want to test your author badge (fa) :

    image.png

    Can you provide CSS for this please ?

    Thank you

    edit:

    tetsing this but i don’t think i’m on the good road

    .topic-owner-post [itemprop=author]:before{
        font-family: "Font Awesome 6 pro";
        font-style: normal;
        content: "\e1e4";
        left: 100px !important;
        text-align: left !important;
        position: absolute;
    }
    
  • no problem. Always @phenomlab

    I want to test your author badge (fa) :

    image.png

    Can you provide CSS for this please ?

    Thank you

    edit:

    tetsing this but i don’t think i’m on the good road

    .topic-owner-post [itemprop=author]:before{
        font-family: "Font Awesome 6 pro";
        font-style: normal;
        content: "\e1e4";
        left: 100px !important;
        text-align: left !important;
        position: absolute;
    }
    

    @DownPW heh, that also needs some js to make that work.

    Edit - add this js block

    function addAuthorBadge() {
      $(".topic-owner-post").each(function() {
        var $authorElement = $(this).find(".text-nowrap:first");
        
        // Check if the author badge already exists
        if (!$authorElement.find(".author").length) {
          // Prepend the author element
          $authorElement.append("<span class='author' data-toggle='tooltip' data-placement='left' title='Topic Author'><span class='author-icon'><i class='fa-regular fa-message-quote'></i></span>");
          // Add tooltip on hover
          $authorElement.find(".author").tooltip({
            content: "Topic Author",
            track: true // This enables the tooltip to track the mouse movement
          });
        }
      });
    }
    
    
    $(document).ready(function() {
      $(window).on('action:posts.loaded', function(data) {
          addAuthorBadge();
        });
    });
    
    
    $(document).ready(function() {
      $(window).on('action:ajaxify.end', function(data) {
          addAuthorBadge();
        });
    });
    
  • OMG make sense

    Thanks dude 🙂

  • Hello,

    I just changed my smartphone (OnePlus 12R) and I see this which I cannot resolve.

    the central body is offset and is not centered on the smartphone. (production server)

    Any idea to solve this??

  • Hello,

    I just changed my smartphone (OnePlus 12R) and I see this which I cannot resolve.

    the central body is offset and is not centered on the smartphone. (production server)

    Any idea to solve this??

    @DownPW yes, I too see this on your production site. Typically, this is because of one element that is oversized and causing the entire body to shift.

    Unfortunately, it’s a slow process in terms of finding the culprit, but I’ll have a more detailed look later.

  • @DownPW yes, I too see this on your production site. Typically, this is because of one element that is oversized and causing the entire body to shift.

    Unfortunately, it’s a slow process in terms of finding the culprit, but I’ll have a more detailed look later.

    @phenomlab said in [NODEBB] Help for my custom CSS:

    @DownPW yes, I too see this on your production site. Typically, this is because of one element that is oversized and causing the entire body to shift.

    Unfortunately, it’s a slow process in terms of finding the culprit, but I’ll have a more detailed look later.

    OK Thank you. Logo I guess


    I also noticed that the "answer "button on my DEV platform following the new update is quite large but I can’t find the right CSS target to correct it.

    Can you help me with that too?

  • @phenomlab said in [NODEBB] Help for my custom CSS:

    @DownPW yes, I too see this on your production site. Typically, this is because of one element that is oversized and causing the entire body to shift.

    Unfortunately, it’s a slow process in terms of finding the culprit, but I’ll have a more detailed look later.

    OK Thank you. Logo I guess


    I also noticed that the "answer "button on my DEV platform following the new update is quite large but I can’t find the right CSS target to correct it.

    Can you help me with that too?

    @DownPW said in [NODEBB] Help for my custom CSS:

    OK Thank you. Logo I guess

    Sort of.

    You can stop most of the overflow with the below CSS

    body {
        overflow-x: hidden;
        max-width: 100%;
    }
    

    Add the above to the existing body class you have.

    For the remainder, it’s much easier to see where elements burst outside of their boundaries by using the global CSS below, which will draw a border around every single element - effectively, making it much easier to see

    * {
    outline: 1px solid red;
    }
    

    This then yields the below

    8a917031-91c0-4852-bd92-35cb2aa3fbd7-image.png

    As you can clearly see, the additional navigation buttons you have are flowing outside of their allowed space, which causes the body to expand to accommodate the new size. This produces the undesired effect of scrolling on the entire body.

    Then, look at the class of

    [data-widget-area=brand-header] {
        justify-content: end;
        display: flex;
    }
    

    If you remove display: flex; from this class, the icons are then stacked vertically, and the problem resolves itself. However, this looks ugly. A better way of getting closer to the result you want is to resize the logo

    [component="brand/logo"] {
        max-height: 100px;
        width: auto;
        height: 75px;
        margin-top: -1px;
        height: 45px; 
    }
    

    Here, we’ve dropped the image size from 75px to 45px, which in turn pulls the expanded DIV back into line

    1a9413d9-4403-4da5-b12c-df6919f96157-image.png

    The problem we then have is the site title, but can easily fix that with the below CSS

    @media (max-width: 768px) {
        a.text-truncate.align-self-stretch.align-items-center.d-flex h1 {
            height: 55px;
        }
    }
    

    This then yields

    240a4f8b-f193-4508-973a-62e64dae573e-image.png

    Everything now aligns correctly, and more importantly, the scrolling body is no more.


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
  • 3 Votes
    6 Posts
    2k Views
    @kadir-ay-0 marking as resolved based on https://community.nodebb.org/topic/17109/manual-build-a-night-mode-for-harmony/5 Please do not raise requests in two places - here and the NodeBB forums. All this does is create unnecessary load for both parties.
  • Nodebb 3.2.0

    Bugs nodebb nodebb 3.2.0
    20
    1
    2 Votes
    20 Posts
    5k Views
    @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; }
  • hover link effect

    Solved Customisation css link hover
    18
    1
    6 Votes
    18 Posts
    4k Views
    @DownPW Looking at the underlying code, class start is being added on hover by jQuery in this function document.querySelectorAll(".button-gradient, .button-transparent").forEach((button) => { const style = getComputedStyle(button); const lines = document.createElement("div"); lines.classList.add("lines"); const groupTop = document.createElement("div"); const groupBottom = document.createElement("div"); const svg = createSVG( button.offsetWidth, button.offsetHeight, parseInt(style.borderRadius, 10) ); groupTop.appendChild(svg); groupTop.appendChild(svg.cloneNode(true)); groupTop.appendChild(svg.cloneNode(true)); groupTop.appendChild(svg.cloneNode(true)); groupBottom.appendChild(svg.cloneNode(true)); groupBottom.appendChild(svg.cloneNode(true)); groupBottom.appendChild(svg.cloneNode(true)); groupBottom.appendChild(svg.cloneNode(true)); lines.appendChild(groupTop); lines.appendChild(groupBottom); button.appendChild(lines); button.addEventListener("pointerenter", () => { button.classList.add("start"); }); svg.addEventListener("animationend", () => { button.classList.remove("start"); }); }); }) The CSS for start is below .button-gradient.start .lines svg, .button-transparent.start .lines svg { animation: stroke 0.3s linear; } And this is the corresponding keyframe @keyframes stroke { 30%, 55% { opacity: 1; } 100% { stroke-dashoffset: 5; opacity: 0; } } It’s using both CSS and SVG, so might not be a simple affair to replicate without the SVG files.
  • [NodeBB] Custom fields plugin

    Unsolved Customisation nodebb plugins javascript custom
    5
    0 Votes
    5 Posts
    2k Views
    @pwsincd hi. Just following up on this thread (I know it’s old) but was curious to understand if it’s still an issue or not ?
  • Avatar on Topic Header

    Solved Customisation css avatar header
    9
    1
    0 Votes
    9 Posts
    2k Views
    @jac said in Avatar on Topic Header: @downpw said in Avatar on Topic Header: Great Plugin I make it a bit cleaner via this CSS code: /*------------------------------------------------------------------*/ /*---------------- nodebb-plugin-browsing-users -----------------*/ /*------------------------------------------------------------------*/ /*Space between the avatar and the RSS icon */ .topic [component="topic/browsing-users"] { margin-bottom: -5px; padding-left: 10px; } /*Space between avatars*/ .pull-left { float: left!important; padding-right: 5px; } Do you have a screenshot of how this looks with the CSS change? Just added this change, thanks @DownPW
  • NodeBB Design help

    Solved Customisation
    8
    3
    2 Votes
    8 Posts
    2k 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.
  • CSS Help on my Flarum

    Solved Customisation
    5
    2
    2 Votes
    5 Posts
    2k Views
    @mike-jones Yes, you’ll typically see this type of behaviour if there is another style that has higher priority in the sense that yours will be overridden. Using !important will override the higher preference, but should be used sparingly rather than everywhere.
  • NodeBB customisation

    Locked Customisation
    332
    27 Votes
    332 Posts
    170k Views
    @jac Given your departure away from your previous project, I’m going to close this thread…