【问题标题】:CSS position absolute on 2 relative div2个相对div上的CSS绝对位置
【发布时间】:2019-09-02 19:29:28
【问题描述】:

我想在 2 个 div 的交叉点上放置一个图像(徽标)。

我尝试了什么:我将 div position: relative; 和 logo 都设置为 position: absolute; 并且 logo 存在于 div 中(logo 是 div1 的子元素)。

我也尝试输入z-index,但这对我也不起作用。

我得到的结果:

预期结果:

<body>
    <div style="position: relative;">
        ...1 <!-- div1 -->
        <div style="position: absolute;"><img src="..." alt="..." /></div> <!-- logo -->
    </div>
    <div style="position: relative;">
    ...2 <!-- div2 -->
    </div>
</body>

编辑:标志图像没有显示在 div2 的上方,在 div1 上的标志显示为绝对位置,但隐藏了 div2 后面的一半标志

【问题讨论】:

    标签: html css css-position


    【解决方案1】:

    transform: translate source
    将成为你的朋友

    #first {
      height: 100px;
      width: 100%;
      border: 2px solid blue;
      position: relative;
    }
    
    #second {
      height: 100px;
      width: 100%;
      border: 2px solid red;
    }
    
    .logo {
      width: 100%;
      text-align: center;
    }
    
    .logo img {
      position: absolute;
      bottom: 0;
      transform: translate(-50%, 50%);
    }
    <body>
        <div id="first">
            <div class="logo">
              <img height="50px" src="https://cdn.pixabay.com/photo/2017/05/13/23/05/img-src-x-2310895_960_720.png" />
            </div>
        </div>
        <div id="second"></div>
    </body>

    【讨论】:

    • 在 div1 徽标上正确显示为绝对位置,但将一半徽标隐藏在 div2 后面
    • 将 z-index:1 添加到 .logo img
    【解决方案2】:

    *{
      margin:0;
      padding:0;
      box-sizing: bordex-box;
    }
    .div1{
      background-image: url('https://images.unsplash.com/photo-1567042676207-758ced6d805b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80');
      background-repeat: no-repeat;
      background-attachment: fixed;
      background-position: center; 
      background-size: cover;
      position:relative;
      height:50vh;
    }
    .div2{
      background-image: url('https://images.unsplash.com/photo-1556742205-e10c9486e506?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80');
      background-repeat: no-repeat;
      background-attachment: fixed;
      background-position: center; 
      background-size: cover;
      position:relative;
      height:50vh;
    }
    img{
      position: absolute;
      width:40%;
      height:50%;
      left: 50%;
      top: 50%;
      transform: translate(-50%,-50%);
      z-index: 999;
    }
    <div class="div1">
    </div>
    <div>
      <img src="https://images.unsplash.com/photo-1562101660-c49dd4bc0083?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1425&q=80"></div>
    <div class="div2">
    </div>

    【讨论】:

      【解决方案3】:

      .class_div {
        width: 300px;
        height: 150px;
        border: 2px solid black;
      }
      
      .logo {
        width: 100px;
        height: 50px;
        border: 2px solid red;
        position: absolute;
        top: 135px;
        left: 105px;
      }
      <body>
        <div class="class_div">
          div 1
        </div>
        <div class="logo">
          Logo
        </div>
        <div class="class_div" style="margin-top:2px">
         div 2
        </div>
      </body>

      【讨论】:

        【解决方案4】:

        试试这个。

        body {
          background: #000;
          color: #fff;
        }
        
        div {
          width: 100px;
          height: 100px;
          border: 1px solid #fff;
        }
        
        .logo {
          position: absolute;
          border: 1px solid blue;
          background: blue;
          width: 50px;
          height: 50px;
          bottom: -25px;
          left: 25px;
          z-index: 1;
        }
        <body>
          <div style="position: relative;">
            ...1
            <!-- div1 -->
            <div class="logo" style="">Logo</div>
            <!-- logo -->
          </div>
          <div style="position: relative;">
            ...2
            <!-- div2 -->
          </div>
        </body>

        【讨论】:

        • 在 div1 徽标上正确显示为绝对位置,但将一半徽标隐藏在 div2 后面
        • 将 z-index:1 添加到 .logo img
        • Z-index 应该可以工作我在我的 sn-p 中添加了背景颜色,我没有发现任何问题。在这种情况下,还有其他原因导致问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-18
        相关资源
        最近更新 更多