HTML List isn't vertically aligned when using floating images

前端 未结 3 1362
遇见更好的自我
遇见更好的自我 2020-12-04 03:47

I have a list with titles, text and images, and sometimes, when there is not enough text, my lists start breaking, ie. the list starts nesting itself.

相关标签:
3条回答
  • 2020-12-04 04:14

    The part you are missing is to clear the floats. Use this:

    li:after {
        content: '';
        display: block;
        clear: both;
    }
    

    and now you will have removed the "nesting".

    Note that while using floating containers, you should always clear them before the next container that follows thereby creating a fresh block formatting context as it is called. Otherwise you will see unpredictable behavior.

    Revised demo below:

    img {
        float: left;
        margin-right: 0.1em;
    }
    li:after {
        content: '';
        display: block;
        clear: both;
    }
    <ul>
    <li>
    <h3>photo</h3>
    <img src="http://commons.cathopedia.org/w/images/commons/thumb/f/fe/Carnevale_di_Venezia.JPG/250px-Carnevale_di_Venezia.JPG" /> some text next to the photo
    </li>
    <li>
    <h3>photo</h3>
    <img src="http://commons.cathopedia.org/w/images/commons/thumb/f/fe/Carnevale_di_Venezia.JPG/250px-Carnevale_di_Venezia.JPG" /> some text next to the photo
    </li>
    <li>
    <h3>photo</h3>
    <img src="http://commons.cathopedia.org/w/images/commons/thumb/f/fe/Carnevale_di_Venezia.JPG/250px-Carnevale_di_Venezia.JPG"  /> some text next to the photo
    </li>
    </ul>

    0 讨论(0)
  • 2020-12-04 04:19
     /* This will make every element inside Li align in a line */
    
     li * {
        display: inline-block;
     }
    /* have specifically gave h3 element block property so that it can be in a separate line and serve as a heading */
      li h3 {
        display: block;
      }
    

    working fiddle - http://jsfiddle.net/2z6Zn/247/

    0 讨论(0)
  • 2020-12-04 04:35

    Remove the CSS you have applied in jSfiddle i.e

    img {
        float: left;
        margin-right: 0.1em;
    }
    

    Instead just add following CSS

    ul{
    display:block;
    clear:both;
    }
    
    0 讨论(0)
提交回复
热议问题