How to create a 1.1, 1.2 1.3 … HTML list?

前端 未结 6 1582
不思量自难忘°
不思量自难忘° 2021-02-19 23:52

I want to create HTML nested lists that has the following format:

1  
   1.1  
   1.2  
   1.3  
   1.4   
2
   2.1

I tried a solution that I f

相关标签:
6条回答
  • 2021-02-20 00:03

    This example uses IE6-specific CSS attribute behavior to add a static marker before each li. There must be some MS specific magic that can replace a static dash with a counter.

    If you want it to be a CSS solution, use this as a starting point and then google "MSDN".

    ul.example { margin: 0.5em 0; padding: 0 0 0 2em; }
    ul.example li
    {
        margin: 0.5em 0; padding: 0 0 0 20px;
        list-style-type: none;
        behavior: expression( !this.before
            ? this.before = this.innerHTML = '— ' + this.innerHTML : '' );
        text-indent: -1.24em;
    }
    ul.example li:before { content: '\2014\a0'; }
    
    0 讨论(0)
  • 2021-02-20 00:04

    The before element doesn't work in IE6, but it's the correct way of doing it. I'd recommend using IE7.js, a javascript library that makes IE6 behave like IE7 where javascript and CSS are concerned. Another way could be using a javascript hack that runs only if the browser is IE6 and traverses de DOM modifying the list items...

    In For A Beautiful Web you can find more information regarding IE6-compatible websites.

    0 讨论(0)
  • 2021-02-20 00:11

    This should work. It is a bad way to do this but if you MUST support IE6 not much choice.

          <ol>
            <li><span>1</span> Item
              <ol>
                <li><span>1.1</span> Item</li>
                <li><span>1.2</span> Item</li>
                <li><span>1.3</span> Item</li>
                <li><span>1.4</span> Item</li>
              </ol>
            </li>            
            <li><span>2</span> Item
              <ol>
                <li><span>2.1</span> Item</li>
              </ol>            
            </li>
          </ol>
    

    with css

    ol {list-style:none;}
    

    After your comment I've redone it a bit.

      <ol>
        <li><span>1</span> Item
          <ol>
            <li><span>1.1</span> <p>ItemItemItem ItemItemItemItemItemItemItemItem ItemItemItemItemItemItemItemItem ItemItemItemItemItemItemItemItem</p></li>
            <li><span>1.2</span> <p>ItemItemItem ItemItemItemItemItemItemItemItem ItemItemItemItemItemItemItemItem ItemItemItemItemItemItemItemItem</p></li>
            <li><span>1.3</span> <p>ItemItemItem ItemItemItemItemItemItemItemItem ItemItemItemItemItemItemItemItem ItemItemItemItemItemItemItemItem</p></li>
            <li><span>1.4</span> <p>Item</p></li>
          </ol>
        </li>            
        <li><span>2</span> Item
          <ol>
            <li><span>2.1</span> Item</li>
          </ol>            
        </li>
      </ol>
    

    And the css would be

    ol {list-style:none;}
    ol li span
    {
      display: block;
      float: left;
      width: 30px;
    }
    ol li
    {
     clear:both;
     width: 400px;
    
    }
    ol li p
    {
      float: left;
      width: 370px;
      margin: 0;
    
    }
    

    You may have to adjust the widths.

    0 讨论(0)
  • 2021-02-20 00:18

    Works perfectly for me, in FF 3.6.6, so:

    1. Which browser is it not working in?
    2. What does your markup look like (i.e. are you nesting the lists correctly)?
    0 讨论(0)
  • 2021-02-20 00:21

    You can use counters to do so:

    Example

    ol { counter-reset: item }
    li{ display: block }
    li:before { content: counters(item, ".") " "; counter-increment: item }
    <ol>
      <li>li element
        <ol>
          <li>sub li element</li>
          <li>sub li element</li>
          <li>sub li element</li>
        </ol>
      </li>
      <li>li element</li>
      <li>li element
        <ol>
          <li>sub li element</li>
          <li>sub li element</li>
          <li>sub li element</li>
        </ol>
      </li>
    </ol>

    0 讨论(0)
  • 2021-02-20 00:24


    this answer is for the first question. I suggest use this method if you are not going below IE8 (IE7 => ?). for below IE7 you can use same logic with jquery.

    Original Post from
    http://www.w3schools.com/cssref/pr_gen_counter-reset.asp

    CSS

    ul.numeric-decimals { counter-reset:section; list-style-type:none; }
    ul.numeric-decimals li { list-style-type:none; }
    ul.numeric-decimals li ul { counter-reset:subsection; }
    ul.numeric-decimals li:before{
        counter-increment:section;
        content:counter(section) ". ";/*content:"Section " counter(section) ". ";*/
    }
    ul.numeric-decimals li ul li:before {
        counter-increment:subsection;
        content:counter(section) "." counter(subsection) " ";
    }
    

    HTML

    <ul class="numeric-decimals">
    <li>Cats</li>
    <li>Dogs
        <ul>
            <li>Birds</li>
            <li>Rats</li>
        </ul>
    </li>
    <li>Rabbits</li>
    <li>Ants
        <ul>
            <li>Lions</li>
            <li>Rats</li>
        </ul>
    </li>
    <li>Ducks</li>
    

    0 讨论(0)
提交回复
热议问题