Search code examples
htmlcssvariablessassscss-lint

SCSS Referencing a Particular Instance of an Element


Very new to Scss/Sass Elsewhere in my mod.scss file, have coded the style of Ul > li that I reuse quite frequently. However, in another mod.scss file, I need a change this code for a single particular instance.

Is it possible to essentially create an if-like statement that says: "If a UL/LI tag appears UNDER the .content-section class, take on behaviors X,Y and z"?

.content-section
{
    margin: 40px 0px;

    & .siteTitleText 
    {
        margin-bottom: 50px;
    }

    & .headers
    {
        margin-bottom: 30px;
    }

    img
    {
        margin: 30px 0px;
    }

    *ul*

}

HTML:

<div class="content-section vendors">
    <p class="headers">Modules, partials, and vendor</p>
    <p class="bodyText">As you can see this divides my project into three basic types of files. Modules, partials, and vendored stylesheets.</p>
    <ul>
        <li class="bodyText">The modules directory is reserved for Sass code that doesn't cause Sass to actually output CSS. Things like mixin declarations, functions, and variables.</li>

        <li class="bodyText">The partials directory is where the meat of my CSS is constructed. A lot of folks like to break their stylesheets into header, content, sidebar, and footer components (and a few others). As I'm more of a SMACSS guy myself, I like to break things down into much finer categories (typography, buttons, textboxes, selectboxes, etc…).</li>

        <li class="bodyText"></li>
    </ul> 
</div>

Solution

  • Use the + in your code to select the next match below your closing tag. Simply nest the tags if you wish to select the child tag inside your .content-section.

    Reference: w3 documentation

    .content-section {
        margin: 40px 0px;
    
        & .siteTitleText {
            margin-bottom: 50px;
        }
    
        & .headers {
            margin-bottom: 30px;
        }
    
        img {
            margin: 30px 0px;
        }
    
        ul, li { // If .content-section has a child named ul or li, do this:
            margin: 100px;
        }
    }