【问题标题】:Elements within a container that have the relative positon won't align horizontally with display: inline容器中具有相对位置的元素不会与 display: inline 水平对齐
【发布时间】:2019-04-08 02:28:20
【问题描述】:

我试图让这些元素在行中对齐到容器的末尾,而不是溢出它。但是即使我将 display:inline 应用于每个单独的元素,它们也不会对齐。向左飘浮;似乎在顶行留下了很大的空白,我不确定是什么导致这一切发生。

.itemShopDaily {
  margin-bottom: 0.2em;
  display: -ms-grid;
  display: grid;
  grid-gap: 0.2em;
  -ms-grid-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
  grid-template-columns: repeat(6,0.1fr);
}
.itemShopWeekly {

}
.itemContainer {
    width: 116px;
    height: 116px;
    position: relative;
    padding: 0;
    border-image-slice: 20;
    border-width: 4px;
    border-style: solid;
    margin-right: 10px;
    margin-bottom: 0px;
    display: inline-block;
}
.itemDetails {
    position: absolute;
    bottom: 0;
    left: 0;
    font-size: 1rem;
    width: 100%;
}
.itemName {
    background: rgba(0,7,36,0.5);
    padding: 3px 0;
    text-align: center;
    color: white;
    font-size: 1em;
}
.itemPrice {
    font-weight: bold;
    background-color: #000724;
    width: 100%;
    padding: 2px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8em;
    color: white;
}
.itemPrice img {
    width: 1.5em;
    padding-right: 0.3rem;
    display: block;
}
<div class='itemShopDaily'>
        <div class="itemContainer testItem">
          <img src="URL" class="itemImage">
          <div class="itemDetails">
              <div class="itemName">SAMPLE</div>
              <div class="itemPrice">
                  <img src="URL" />
                  <span>Sample</span>
              </div>
        </div>
        <div class="itemContainer testItem">
          <img src="URL" class="itemImage">
          <div class="itemDetails">
              <div class="itemName">SAMPLE</div>
              <div class="itemPrice">
                  <img src="URL" />
                  <span>Sample</span>
              </div>
        </div>
        <div class="itemContainer testItem">
          <img src="URL" class="itemImage">
            <div class="itemDetails">
              <div class="itemName">SAMPLE</div>
              <div class="itemPrice">
                  <img src="URL" />
                  <span>Sample</span>
             </div>
        </div>
</div>

是什么导致了这种情况,为什么它们不能水平对齐,为什么 display-inline 不起作用? 此处还提供了一个工作示例:http://fortniteprosnipes.x10.bz

【问题讨论】:

    标签: html css


    【解决方案1】:

    正确格式化您的代码并且它可以工作,因为您会发现您忘记了许多关闭 &lt;/div&gt; 标记!

    .itemShopDaily {
        margin-bottom: 0.2em;
        display: -ms-grid;
        display: grid;
        grid-gap: 0.2em;
        -ms-grid-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
        grid-template-columns: repeat(6,0.1fr);
    }
    .itemShopWeekly {
    
    }
    .itemContainer {
        width: 116px;
        height: 116px;
        position: relative;
        padding: 0;
        border-image-slice: 20;
        border-width: 4px;
        border-style: solid;
        margin-right: 10px;
        margin-bottom: 0px;
        display: inline-block;
    }
    .itemDetails {
        position: absolute;
        bottom: 0;
        left: 0;
        font-size: 1rem;
        width: 100%;
    }
    .itemName {
        background: rgba(0,7,36,0.5);
        padding: 3px 0;
        text-align: center;
        color: white;
        font-size: 1em;
    }
    .itemPrice {
        font-weight: bold;
        background-color: #000724;
        width: 100%;
        padding: 2px 0;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 0.8em;
        color: white;
    }
    .itemPrice img {
        width: 1.5em;
        padding-right: 0.3rem;
        display: block;
    }
    <div class='itemShopDaily'>
        <div class="itemContainer testItem">
            <div class="itemDetails">
                <div class="itemName">SAMPLE</div>
                <div class="itemPrice">
                    <span>Sample</span>
                </div>
            </div>
        </div>
        <div>
            <div class="itemContainer testItem">
                <div class="itemDetails">
                    <div class="itemName">SAMPLE</div>
                    <div class="itemPrice">
                        <span>Sample</span>
                    </div>
                </div>
            </div>
        </div>
        <div>
            <div class="itemContainer testItem">
                <div class="itemDetails">
                    <div class="itemName">SAMPLE
                    </div>
                    <div class="itemPrice">
                        <span>Sample</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    还有一个更简单的版本:

    .itemShopDaily {
        margin-bottom: 0.2em;
    }
    .itemContainer {
        width: 116px;
        height: 116px;
        position: relative;
        border: 4px solid;
        margin-right: 10px;
        float: left;
    }
    .itemDetails {
        position: absolute;
        bottom: 0;
        font-size: 1rem;
        width: 100%;
        color: white;
    }
    .itemName {
        background: rgba(0,7,36,0.5);
        padding: 3px 0;
        text-align: center;
        font-size: 1em;
    }
    .itemPrice {
        font-weight: bold;
        background-color: #000724;
        padding: 2px 0;
        text-align: center;
        font-size: 0.8em;
    }
    .itemPrice img {
        width: 1.5em;
        padding-right: 0.3rem;
        display: block;
    }
    <div class='itemShopDaily'>
        <div class="itemContainer testItem">
            <div class="itemDetails">
                <div class="itemName">SAMPLE</div>
                <div class="itemPrice">
                    <span>Sample</span>
                </div>
            </div>
        </div>
        <div>
            <div class="itemContainer testItem">
                <div class="itemDetails">
                    <div class="itemName">SAMPLE</div>
                    <div class="itemPrice">
                        <span>Sample</span>
                    </div>
                </div>
            </div>
        </div>
        <div>
            <div class="itemContainer testItem">
                <div class="itemDetails">
                    <div class="itemName">SAMPLE
                    </div>
                    <div class="itemPrice">
                        <span>Sample</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    【讨论】:

    • 是否有另一种方法可以在不使用 display: grid 的情况下执行此操作,就像我在示例中使用的那样?
    • 我已经编辑了我的帖子。您可以使用float: left 以水平顺序对齐项目。
    • float: left 导致元素移位
    • 你应该删除&lt;br&gt;s。
    • 感谢您的帮助,如果我需要任何其他帮助,我可以与您联系吗?
    猜你喜欢
    • 2015-12-11
    • 1970-01-01
    • 2021-11-16
    • 2014-09-04
    • 2016-09-15
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多