I'm trying to number paragraphs <p> of an HTML document by CSS.

The rendered output should look something like this:

[1]  Lorem ipsum dolor sit amet, consectetur adipiscing elit.
     Proin sit amet mi diam, a tincidunt augue. Donec sodales
     nisi sed leo dignissim sit amet viverra odio ornare.
     Morbi bibendum purus ac odio egestas lobortis.

[2]  Aenean eleifend auctor porta. Sed tempus felis et lectus
     cursus in varius nisl interdum. Nullam eget metus metus,
     a aliquam turpis. Nam porttitor nunc non nisi viverra
     euismod. Cras commodo auctor viverra.

[3]  Donec id augue faucibus orci tempus tempor quis nec dui.
     Vivamus et fringilla nibh. Proin ut velit quam, eu tincidunt
     velit. Sed sollicitudin egestas nunc, eu fermentum elit
     viverra sed. Phasellus et elit hendrerit dolor commodo
     suscipit a in quam.

I have accomplished this by the following CSS:

body {
  width: 600px;
  padding: 10px ;
  margin: 30px ;
  counter-reset: numbering ; }
.numbered p:before {
  position: absolute ;
  margin-left: -30px ;
  width: 20px ;
  content: "[" counter(numbering) "]" ;
  counter-increment: numbering ; }

In the HTML I then do:

<div class="numbered">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin
    sit amet mi diam, a tincidunt augue. Donec sodales nisi sed
    leo dignissim sit amet viverra odio ornare. Morbi bibendum
    purus ac odio egestas lobortis.</p>
<p>Aenean eleifend auctor porta. Sed tempus felis et lectus
    cursus in varius nisl interdum. Nullam eget metus metus, a
    aliquam turpis. Nam porttitor nunc non nisi viverra euismod.
    Cras commodo auctor viverra.</p>
<p>Donec id augue faucibus orci tempus tempor quis nec dui.
    Vivamus et fringilla nibh. Proin ut velit quam, eu tincidunt
    velit. Sed sollicitudin egestas nunc, eu fermentum elit
    viverra sed. Phasellus et elit hendrerit dolor commodo
    suscipit a in quam.</p>
</div>

This is works just fine. But when I want the first line of succeeding
paragraphs to be indented by (say) 4%, I can't get the positioning of
the numbering right. The rendered output should then look something
like this:

[1]  Lorem ipsum dolor sit amet, consectetur adipiscing elit.
     Proin sit amet mi diam, a tincidunt augue. Donec sodales
     nisi sed leo dignissim sit amet viverra odio ornare.
     Morbi bibendum purus ac odio egestas lobortis.
[2]    Aenean eleifend auctor porta. Sed tempus felis et lectus
     cursus in varius nisl interdum. Nullam eget metus metus,
     a aliquam turpis. Nam porttitor nunc non nisi viverra
     euismod. Cras commodo auctor viverra.
[3]    Donec id augue faucibus orci tempus tempor quis nec dui.
     Vivamus et fringilla nibh. Proin ut velit quam, eu tincidunt
     velit. Sed sollicitudin egestas nunc, eu fermentum elit
     viverra sed. Phasellus et elit hendrerit dolor commodo
     suscipit a in quam.

I have no idea how to calculate the values of margin-left and width
for the element .numbered p+p:before.

My (non-working) CSS looks like this:

body {
  width: 600px;
  padding: 10px ;
  margin: 30px ;
  counter-reset: numbering ; }
.numbered p:before {
  position: absolute ;
  margin-left: -30px ;
  width: 20px ;
  content: "[" counter(numbering) "]" ;
  counter-increment: numbering ; }
p + p {
  text-indent: 4% ; }
.numbered p+p:before {
  position: absolute ;
  margin-left: -50px ;
  width: 20px ;
  content: "[" counter(numbering) "]" ;
  counter-increment: numbering ; }

Does anyone know whether (and how) it is possible to achieve what I
want?

Thanks,
Till

--~--~---------~--~----~------------~-------~--~----~
--
You received this because you are subscribed to the "Design the Web with CSS" 
at Google groups.
To post: [email protected]
To unsubscribe: [email protected]
-~----------~----~----~----~------~----~------~--~---

Reply via email to