【问题标题】:Div element not aligning right after adding background-image添加背景图像后,div元素未立即对齐
【发布时间】:2021-08-03 21:39:11
【问题描述】:

background-image 添加到我的div 元素后,它没有在网格中正确对齐。

我最初尝试在<div> 中实际放置一个<img> 标记,但后来我将其更改为background-image。现在它就像一个块显示元素,因为它占据了整行并将应该在同一行上显示的其他三个推到它下面的一个,但它没有显示底部的边距,所以我真的不知道发生了什么。

HTML

<!-- Container for body content -->
    <div id="bodyContent">
        <!-- If we can find a way to make this enable us to simply put a game in a list and it automatically 
        place it accodingly, change this to that system. Maybe make just one column and have it wrap content? -->
        <div id="adBarLeft" class="adBar"> AD BAR </div>
        <div id="gameColumn"> 
            <div class="gamePreview" id="game1"> </div>
            <div class="gamePreview"> 2 </div>
            <div class="gamePreview"> 3 </div>
            <div class="gamePreview"> 4 </div>
            <div class="gamePreview"> 5 </div>
      <div class="gamePreview"> 6 </div>
      <div class="gamePreview"> 7 </div>
      <div class="gamePreview"> 6 </div>
      <div class="gamePreview"> 9 </div>
      <div class="gamePreview"> 10 </div>
        </div>
        <div id="adBarRight" class="adBar"> AD BAR </div>
    </div>

CSS

.gamePreview {
    display: inline-block;
    width: 20%;
    height: 0;
    padding-bottom:20%;
    border:3px solid orange;
    margin:1.5%; /* Figure out why this value let 4 on compared to 2.5% which didnt, but should've */
}

#game1 { /* figure out why its setting it off from the others */
  background-image: url("https://is1-ssl.mzstatic.com/image/thumb/Purple71/v4/47/cf/cf/47cfcf79-9e1d-b21f-8e10-2658b7650c15/mzl.oiljceng.png/246x0w.jpg");
  background-size: contain;
}

我希望图像加载到 &lt;div&gt; 内并在同一行有四个,然后环绕到下一行,基本上是用 4 个 &lt;div&gt; 的行

【问题讨论】:

    标签: html css image grid-layout


    【解决方案1】:

    vertical-align: top; 添加到您的.gamePreview 类以将内联块与顶部对齐。

    .gamePreview {
      display: inline-block;
      width: 20%;
      height: 0;
      padding-bottom: 20%;
      border: 3px solid orange;
      margin: 1.5%;
      vertical-align: top; /* Add this */
      /* Figure out why this value let 4 on compared to 2.5% which didnt, but should've */
    }
    
    #game1 {
      /* figure out why its setting it off from the others */
      background-image: url("https://is1-ssl.mzstatic.com/image/thumb/Purple71/v4/47/cf/cf/47cfcf79-9e1d-b21f-8e10-2658b7650c15/mzl.oiljceng.png/246x0w.jpg");
      background-size: contain;
    }
    <!-- Container for body content -->
    <div id="bodyContent">
      <!-- If we can find a way to make this enable us to simply put a game in a list and it automatically 
            place it accodingly, change this to that system. Maybe make just one column and have it wrap content? -->
      <div id="adBarLeft" class="adBar"> AD BAR </div>
      <div id="gameColumn">
        <div class="gamePreview" id="game1"> </div>
        <div class="gamePreview"> 2 </div>
        <div class="gamePreview"> 3 </div>
        <div class="gamePreview"> 4 </div>
        <div class="gamePreview"> 5 </div>
        <div class="gamePreview"> 6 </div>
        <div class="gamePreview"> 7 </div>
        <div class="gamePreview"> 6 </div>
        <div class="gamePreview"> 9 </div>
        <div class="gamePreview"> 10 </div>
      </div>
      <div id="adBarRight" class="adBar"> AD BAR </div>
    </div>

    【讨论】:

      【解决方案2】:

      我认为在父容器#gameColumn 中使用display:flex 会更好 ,因为 DIV 将容纳空间

      #gameColumn{
          display: flex;
        	flex-wrap: wrap;
      }
      
      .gamePreview {
          flex-basis: 100px;
          height: 100px;
          border:3px solid orange;
          margin:2px; /* Figure out why this value let 4 on compared to 2.5% which didnt, but should've */
      }
      
      #game1 { /* figure out why its setting it off from the others */
        background-image: url("https://is1-ssl.mzstatic.com/image/thumb/Purple71/v4/47/cf/cf/47cfcf79-9e1d-b21f-8e10-2658b7650c15/mzl.oiljceng.png/246x0w.jpg");
        background-size: contain;
        background-repeat: no-repeat;
      }
      <!-- Container for body content -->
          <div id="bodyContent">
              <!-- If we can find a way to make this enable us to simply put a game in a list and it automatically 
              place it accodingly, change this to that system. Maybe make just one column and have it wrap content? -->
              <div id="adBarLeft" class="adBar"> AD BAR </div>
              <div id="gameColumn"> 
                  <div class="gamePreview" id="game1"> </div>
                  <div class="gamePreview"> 2 </div>
                  <div class="gamePreview"> 3 </div>
                  <div class="gamePreview"> 4 </div>
                  <div class="gamePreview"> 5 </div>
            <div class="gamePreview"> 6 </div>
            <div class="gamePreview"> 7 </div>
            <div class="gamePreview"> 6 </div>
            <div class="gamePreview"> 9 </div>
            <div class="gamePreview"> 10 </div>
              </div>
              <div id="adBarRight" class="adBar"> AD BAR </div>
          </div>

      【讨论】:

        【解决方案3】:

        这是因为类名“adBar”。似乎当我们在浏览器中安装了 adblock 时,扩展似乎屏蔽了选择器名称 'adbar'/'adBar'。尝试关闭页面的广告拦截。它会起作用的。

        【讨论】:

          猜你喜欢
          • 2020-05-28
          • 1970-01-01
          • 1970-01-01
          • 2023-04-01
          • 1970-01-01
          • 2015-02-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多