【问题标题】:How to position two <li>'s within a nested <ul>?如何在嵌套的 <ul> 中定位两个 <li>?
【发布时间】:2014-01-19 19:44:15
【问题描述】:

我想将&lt;li&gt; 显示为水平线上的正方形,并在其中嵌套的正方形位于包含正方形的左下角和右下角。

____________    ____________
|          |    |          |
|___    ___|    |___    ___|
|_x_|__|_y_|    |_x_|__|_y_|   etc

我尝试将跨度添加到&lt;li&gt;,但无法正确定位它们。

我在嵌套的&lt;ul&gt; 中使用嵌套的&lt;ul&gt; 和两个&lt;li&gt;,但在顶层方块之间存在不希望的空间。

如何控制顶级&lt;li&gt; 之间的间距?

jsFiddle

http://jsfiddle.net/rwone/4Hzp6/

HTML

<ul class="images_list">
<li class="style_one"><img src="http://dummyimage.com/50/ccc/fff&text=1.png">
<ul class="nested"><li class="delete_span"></li><li class="crop_span"></li></ul>    
</li>
<li class="style_one"><img src="http://dummyimage.com/50/ccc/fff&text=2.png">
<ul class="nested"><li class="delete_span"></li><li class="crop_span"></li></ul>
</li>
<li class="style_one">
<img src="http://dummyimage.com/50/ccc/fff&text=3.png">
<ul class="nested"><li class="delete_span"></li><li class="crop_span"></li></ul>
</li>
<li class="style_one">
<img src="http://dummyimage.com/50/ccc/fff&text=4.png">
<ul class="nested"><li class="delete_span"></li><li class="crop_span"></li></ul>
</li>
<li class="style_one">
<img src="http://dummyimage.com/50/ccc/fff&text=5.png">
<ul class="nested"><li class="delete_span"></li><li class="crop_span"></li></ul>
</li>
</ul>

CSS

ul.images_list {
list-style: none;
margin: 0px !important;
padding: 0px !important;
}

ul.nested {
margin: 0px !important;
padding: 0px !important;
display: inline;
position: relative;
left: -54px;
}

li.style_one {
position:relative;
display:inline-block;
/*width: 50px;
height:50px*/
}

.delete_span {
width: 15px;
height: 15px;
background: red;
display: inline-block;
}

.crop_span {
width: 15px;
height: 15px;
background: green;
display: inline-block;
position: relative;
left: 20px;
}

【问题讨论】:

  • 我通常做的第一件事是全局重置填充和边距: * { margin: 0px;填充:0px; } 这样我就不会遇到不需要的空间。

标签: css


【解决方案1】:

问题似乎来自user agent stylesheet(在 chrome 上)。 Chrome 正在添加一个 rules This SO question 正在谈论它。

建议添加ul { padding:0 },但这不适用于您的情况.. 但它可能会让你找到方向。

ul, menu, dir {
  display: block;
  list-style-type: disc;
  -webkit-margin-before: 1em;
  -webkit-margin-after: 1em;
  -webkit-margin-start: 0px;
  -webkit-margin-end: 0px;
  -webkit-padding-start: 40px;//I guess this one is the problem
}

我试图通过添加!important 来覆盖此规则,但它不起作用。

【讨论】:

    【解决方案2】:

    这实现了我想要的行为,我在&lt;li&gt;'s 中使用了div:

    http://jsfiddle.net/rwone/4Hzp6/6/

    HTML

    <ul class="images_list">
    <li class="style_one"><img src="http://dummyimage.com/50/ccc/fff&text=1.png">
    <div class="crop_it"></div><div class="delete_it"></div>
    </li>
    <li class="style_one"><img src="http://dummyimage.com/50/ccc/fff&text=2.png">
    <div class="crop_it"></div><div class="delete_it"></div>
    </li>
    <li class="style_one">
    <img src="http://dummyimage.com/50/ccc/fff&text=3.png">
    <div class="crop_it"></div><div class="delete_it"></div>
    </li>
    <li class="style_one">
    <img src="http://dummyimage.com/50/ccc/fff&text=4.png">
    <div class="crop_it"></div><div class="delete_it"></div>
    </li>
    <li class="style_one">
    <img src="http://dummyimage.com/50/ccc/fff&text=5.png">
    <div class="crop_it"></div><div class="delete_it"></div>
    </li>
    </ul>
    

    CSS

    ul.images_list {
    list-style: none;
    margin: 0px !important;
    padding: 0px !important;
    }
    
    li.style_one {
    display: inline-block;
    height: 50px;
    margin-left: 15px;
    position: relative;
    width: 50px;
    }
    
    li.style_one:first-child {
    margin-left: 0px;
    }
    
    .crop_it {
    background: none repeat scroll 0 0 #FF0000;
    bottom: 0;
    display: inline-block;
    height: 15px;
    left: 0;
    position: absolute;
    width: 15px;
    z-index: 9;
    }
    
    .delete_it {
    background: none repeat scroll 0 0 #008000;
    bottom: 0;
    display: inline-block;
    height: 15px;
    left: 35px;
    position: absolute;
    width: 15px;
    }
    

    【讨论】:

      【解决方案3】:
      Simple just change the class ul.nested position relative to position absolute and little bit changes in left and top or copy paste the code below:
      
      CSS CODE:
      
      ul.images_list {
          list-style: none;
          margin: 0px !important;
          padding: 0px !important;
      }
      
      ul.nested {
          margin: 0px !important;
          padding: 0px !important;
          display: inline;
          position: absolute;
          left: 0px;
          top: 34px;
      }
      
      li.style_one {
          position:relative;
          display:inline-block;
          /*width: 50px;
          height:50px*/
      }
      
      .delete_span {
          width: 15px;
          height: 15px;
          background: red;
          display: inline-block;
      }
      
      .crop_span {
          width: 15px;
          height: 15px;
          background: green;
          display: inline-block;
          position: relative;
          left: 20px;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-14
        • 1970-01-01
        • 2013-05-27
        • 2022-07-17
        • 2018-10-05
        • 2014-05-24
        • 1970-01-01
        • 1970-01-01
        • 2012-10-30
        相关资源
        最近更新 更多