• About Us
  • Privacy Policy
  • Disclaimer
  • Contact Us
AimactGrow
  • Home
  • Technology
  • AI
  • SEO
  • Coding
  • Gaming
  • Cybersecurity
  • Digital marketing
No Result
View All Result
  • Home
  • Technology
  • AI
  • SEO
  • Coding
  • Gaming
  • Cybersecurity
  • Digital marketing
No Result
View All Result
AimactGrow
No Result
View All Result

A Reader’s Query on Nested Lists

Admin by Admin
May 20, 2025
Home Coding
Share on FacebookShare on Twitter


A few days again, among the many tens of crypto-scams that flood our contact inbox, we discovered an attention-grabbing query on nested lists from one among our readers.

I’ve an issue (associated to list-numbering) that appears commonplace, however I can’t appear to resolve it or discover any answer for. If any of your geniuses can reply this, I’m certain there are going to be lots of people .

Styling lists? Sufficient to catch my consideration. In any case, I simply accomplished a whole information about CSS counters. The message continues:

Right here’s the issue. It’s a routine numbering sequence, of various ranges, present in (for instance) [government], laws, and in my case, condominium bylaws. I’ve 5 ranges represented by the primary quantity at every degree of 1., (1), (a) (lower-alpha), (i) (lower-roman), (A) (upper-alpha). After all, I’ve 5 ranges right here, however for those who might show an answer for 3 ranges.

Honest sufficient! So, what we wish to obtain is a nested listing, the place every sublist marker/counter is of a unique type. The instance linked within the message is the next:

8 The strata company should restore and preserve all the following:
    (a) widespread belongings of the strata company;
    (b) widespread property that has not been designated as restricted widespread property;
    (c) restricted widespread property, however the obligation to restore and preserve it's restricted to
        (i) restore and upkeep that within the extraordinary course of occasions happens much less usually than every year, and
        (ii) the next, irrespective of how usually the restore or upkeep ordinarily happens:
            (A) the construction of a constructing;
            (B) the outside of a constructing;
            (C) chimneys, stairs, balconies and different issues hooked up to the outside of a constructing;
            (D) doorways, home windows and skylights on the outside of a constructing or that entrance on the widespread property;

Whereas easy at first look, it nonetheless has some nuance, so let’s attempt to provide you with probably the most maintainable answer right here.

The ugly manner

My first method to this drawback was no method in any respect; I simply opened CodePen, wrote up the HTML, and tried to get my CSS to work in the direction of the ultimate outcome. After translating the Markdown into ol and li components, and with no particular styling on every listing, the bottom listing would appear like the next:

As soon as there, my first intuition was to pick out every ol component after which change its list-style-type to the specified one. To focus on every degree, I chosen every ol relying on its variety of ol ancestors, then let the specificity deal with the remaining:

ol {
  list-style-type: decimal; /* Pointless; only for demo */
}

ol ol {
  list-style-type: lower-alpha;
}

ol ol ol {
  list-style-type: lower-roman;
}

ol ol ol ol {
  list-style-type: upper-alpha;
}

And as you’ll be able to see, this works… However we will agree it’s an unsightly option to go about it.

Nesting to the rescue

Fortunately, CSS nesting has been baseline for a few years now, so we might save ourselves lots of ol selectors by simply nesting every component inside the following one.

ol {
  list-style-type: decimal;
  
  ol {
    list-style-type: lower-alpha;
     
    ol {
      list-style-type: lower-roman;
          
       ol {
        list-style-type: upper-alpha;
      }
    }
  }
}

Whereas an excessive amount of nesting is often frowned upon, I believe that, for this case specifically, it makes the CSS clearer on what it intends to do — particularly for the reason that CSS construction matches the HTML itself, and it additionally retains all of the listing kinds in a single place. All to the identical outcome:

It’s authorized

I don’t know something about authorized paperwork, nor do I intend to study them. Nevertheless, I do know the legislation, and by extension, attorneys are finicky about how they’re formatted due to authorized technicalities and whatnot. The purpose is that for a authorized doc, these parentheses surrounding every listing marker — like (A) or (ii) — are greater than mere ornament and should be included in our lists, which our present answer doesn’t.

A few years again, we might have wanted to set a counter for every listing after which embrace the parentheses alongside the counter() output; repetitive and ugly. These days, we will use the @counter-style at rule, which as its identify implies, permits us to create customized counter kinds that can be utilized (amongst different locations) within the list-style-type property.

In case you’re unfamiliar with the @counter-style syntax, what we have to know is that it may be used to increase predefined counter kinds (like decimal or upper-alpha), and connect to them a unique suffix or prefix. For instance, the next counter fashion extends the widespread decimal fashion and provides a sprint (-) as a prefix and a colon (:) as a suffix.

@counter-style my-counter-style {
  system: extends decimal;
  prefix: "- ";
  suffix: ": ";
}

ol {
  list-style-type: my-counter-style;
}

In our case, we’ll want 4 counter kinds:

  • A decimal marker, with out the ending dot. The preliminary submission doesn’t make it clear if it’s with or with out the dot, however let’s assume it’s with out.
  • A decrease alpha marker, enclosed in parentheses.
  • A decrease Roman marker, additionally enclosed in parentheses.
  • An higher alpha marker, enclosed in parentheses as nicely.

All these would translate to the next @counter-style guidelines:

@counter-style trimmed-decimal {
  system: extends decimal;
  suffix: " ";
}

@counter-style enclosed-lower-alpha {
  system: extends lower-alpha;
  prefix: "(";
  suffix: ") ";
}

@counter-style enclosed-lower-roman {
  system: extends lower-roman;
  prefix: "(";
  suffix: ") ";
}

@counter-style enclosed-upper-alpha {
  system: extends upper-alpha;
  prefix: "(";
  suffix: ") ";
}

After which, we simply gotta change every with its equal in our preliminary ol declarations:

ol {
  list-style-type: trimmed-decimal;

  ol {
    list-style-type: enclosed-lower-alpha;

    ol {
      list-style-type: enclosed-lower-roman;

      ol {
        list-style-type: enclosed-upper-alpha;
      }
    }
  }
}

It ought to work with out CSS!

Keep in mind, although, it’s a authorized doc, so what occurs if the web is weak sufficient in order that solely the HTML hundreds appropriately, or if somebody checks the web page from an outdated browser that doesn’t assist nesting or @counter-style?

Pondering solely in regards to the listing, in most web sites, it could be a gentle annoyance the place the markers return to decimal, and you need to go by padding to know the place every sublist begins. Nevertheless, in a authorized doc, it may be a giant deal. How massive? I’m no lawyer, so it beats me, however we nonetheless can be certain the listing retains its authentic numbering even with out CSS.

For the duty, we will use the HTML sort attribute. It’s much like CSS list-style-type however with its personal restricted makes use of. First, its use with ul components is deprecated, whereas it may be utilized in ol components to maintain the lists appropriately numbered even with out CSS, like in authorized or technical paperwork similar to ours. It has the next values:

  • "1" for decimal numbers (default)
  • "a" for lowercase alphabetic
  • "A" for uppercase alphabetic
  • "i" for lowercase Roman numbers
  • "I" for uppercase Roman numbers

Inside our HTML listing, we might assign the right numbering for every ol degree:

Relying on how lengthy the doc is, it might be extra the trouble than the profit, however it’s nonetheless good to know. Though this type of doc doesn’t change always, so it wouldn’t damage so as to add this further security internet.

Welp, that was kinda an excessive amount of for a listing! However that’s one thing intrinsic to authorized paperwork. Nonetheless, I believe it’s the best option to obtain the preliminary reader’s objective. Let me know within the feedback for those who suppose that is overengineered or if there may be a better manner.

Extra on lists!

Tags: listsNestedQuestionReaders
Admin

Admin

Next Post
Not possible Villains From the Franchise So Far (Prime 10)

Not possible Villains From the Franchise So Far (Prime 10)

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recommended.

Blue Prince’s Sport Breaking PS5 Save Bug Lastly Will get Mounted

Blue Prince’s Sport Breaking PS5 Save Bug Lastly Will get Mounted

May 22, 2025
Change is within the wind for SecOps: Are you prepared?

Change is within the wind for SecOps: Are you prepared?

April 28, 2025

Trending.

Industrial-strength April Patch Tuesday covers 135 CVEs – Sophos Information

Industrial-strength April Patch Tuesday covers 135 CVEs – Sophos Information

April 10, 2025
Expedition 33 Guides, Codex, and Construct Planner

Expedition 33 Guides, Codex, and Construct Planner

April 26, 2025
How you can open the Antechamber and all lever places in Blue Prince

How you can open the Antechamber and all lever places in Blue Prince

April 14, 2025
Important SAP Exploit, AI-Powered Phishing, Main Breaches, New CVEs & Extra

Important SAP Exploit, AI-Powered Phishing, Main Breaches, New CVEs & Extra

April 28, 2025
Wormable AirPlay Flaws Allow Zero-Click on RCE on Apple Units by way of Public Wi-Fi

Wormable AirPlay Flaws Allow Zero-Click on RCE on Apple Units by way of Public Wi-Fi

May 5, 2025

AimactGrow

Welcome to AimactGrow, your ultimate source for all things technology! Our mission is to provide insightful, up-to-date content on the latest advancements in technology, coding, gaming, digital marketing, SEO, cybersecurity, and artificial intelligence (AI).

Categories

  • AI
  • Coding
  • Cybersecurity
  • Digital marketing
  • Gaming
  • SEO
  • Technology

Recent News

Yoast AI Optimize now out there for Basic Editor • Yoast

Replace on Yoast AI Optimize for Traditional Editor  • Yoast

June 18, 2025
You’ll at all times keep in mind this because the day you lastly caught FamousSparrow

You’ll at all times keep in mind this because the day you lastly caught FamousSparrow

June 18, 2025
  • About Us
  • Privacy Policy
  • Disclaimer
  • Contact Us

© 2025 https://blog.aimactgrow.com/ - All Rights Reserved

No Result
View All Result
  • Home
  • Technology
  • AI
  • SEO
  • Coding
  • Gaming
  • Cybersecurity
  • Digital marketing

© 2025 https://blog.aimactgrow.com/ - All Rights Reserved