How do you make a style that affects the font attributes of only the numbers in ordered lists (ol) without affecting the contents of the list items?

No kludges please, and the solution must validate as XHTML 1.0 strict.

Recommended Answers

All 8 Replies

It's not pretty nor creative but is Valid XHTML 1.0 Strict:

<ol>
<li style="font-size:24px">
<span style="font-size:12px">This text is 12px. The bullet number is 24px.</span>
</li>
<li>
<span style="font-size:12px">This text is 12px. The bullet number is 12px.</span>
</li>
</ol>

I had thought of that, but I was hoping to allow the rest of the text in the list to inherit the style outside the list.

There may be a solution, but I can almsot gaurentee that it will only work on a few browsers!

Okay... you say that you want it to take on the same style as outside the list.
Please tell me you have styling for Paragraphs...????

If so, simply use a Paragraph inside the List (should still be Valid, Semantic etc.), and then, where you haveyou paragraph style, simply follow it with
, ol p

:)

It's not a kludge to have an outer style affect the list ( including the bullets/numbers ) and have an inner style affect the content of items themselves. Use 'relative' styles if possible , e.g use font-size: 80%; on the outside, font-size: 125%; on the inside. If you have no way to speak 'relatively' e.g. if you're setting font-face for the list and want to restore it within items; plan this from the beginning and make style selectors that summarize and apply properties to the 'outer' body text, and text inside list items. Then use deep, more specific selectors to affect certain lists and their outer areas differently, etc, etc. You may find that it becomes quite less of a problem than you imagine it may be.

Thanks.

The problem was that I had:

- a master list of several hundred elements
- an h2 title at the top of each list item
- several different kinds of html elements in the different list items (after the h2 titles)
- adding a class to each element other than the li and h2 tags would have been time-prohibitive.

The normal-sized li numbers looked funny beside the large h2 text in the headers. I wanted the li numbers to take the font and size from the h2 tag.

I was converting an old "tag soup" HTML file where someone actually got it to work on most browsers in quirks mode. But the trouble is that it had tangled tags:

<ol>
   <h2><li>heading 1</h2>
     <p>body of list item</p>
   <h2><li>heading 2</h2>
     <p>body of list item</p>
</ol>

Every attempt to validate this and make it render like the old page failed.

I solved it by using these selectors:

body>ol>li {styles}
body>ol>li>* {styles}
body>ol>li>h2 {styles}

Okay... you say that you want it to take on the same style as outside the list.
Please tell me you have styling for Paragraphs...????

No, because they were taking different styles from parent tags at various places in the document. If they weren't, it would have been easier.

Here is how I would do it.

.indent1 {
        margin-left:1px;
        background-color:#555;
        color:#fff;
        }
.code {
    background-color:#555;
    border:thin solid #000;
    position:relative;
    left:10px;
    width:450px;    
}

ol {
    margin-top:0px;
    margin-bottom:0px;
    background-color:#FFF;
    color:#000;
    width:3px;
}
li {
    margin-left:10px;
    width:405px;
    }



<div class="code">
<ol>
<li><span class="indent1">My code</span></li>
<li><span class="indent1">Next line</span></li>
</ol>
</div>

You will of course need to adjust your widths and color to make your code dispaly the way you want.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.