代码之家  ›  专栏  ›  技术社区  ›  Hassan Baig Altons

在利用flex CSS属性的图像上定位div

  •  0
  • Hassan Baig Altons  · 技术社区  · 8 年前

    对于web应用程序,我将在div中放置一个动画表情符号和一些文本。这些元素将以完全响应的方式保持分离。看到:

    enter image description here

    我正在使用 flex 为了实现这一点。这确保了即使屏幕尺寸变得非常小,仍然可以通过将这些屏幕堆叠在另一个屏幕上来保持分离。

    为了实现这一点,整个外部div被包装在:

    .act{
      display: flex;
      flex-wrap: wrap;
      background-color: #E1F5FE;
      padding: 10px;
      border-radius: 10px;
      align-items: center;
    }
    

    接下来,将div内的动画图像包装在:

    .anim {
      flex: 1 1;
      min-width: 64px;
      text-align: center;
    
    }
    
    .anim > img {
      width: 100%;
      height: auto;
      max-width: 50px;
    }
    

    最后,文本和图像被包装在:

    .txt {
      flex: 1 1 180px;
      text-align: center;
    }
    

    你注意到表情符号上的泪珠了吗?它们与图像分开,并在html5中设置动画。

    我不知道如何确保这些泪珠准确地停留在表情符号的眼睛周围。我试过使用 z-index 以及 position:absolute (例如,见以下内容):

        <div class="anim">
              <div class="tear" style="z-index:2;position:absolute;margin-top: 30px;margin-left: 110px;"></div>
              <div class="tear" style="z-index:2;position:absolute;margin-top: 30px;margin-left: 84px;"></div>
              <img src="sad.png">        
        </div>
    

    这根本没有反应。

    此外,如果我尝试使用 position:relative ,这使得不可能在表情符号上重叠泪液形状,无论是什么 z指数 我设置。

    请帮我解决这个问题。理想情况下,我想坚持使用 弯曲 因为除此之外,它非常适合我的需要。

    注:类似问题的答案 SO question 不要帮忙,因为我已经包括了他们的建议。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Asons Oliver Joseph Ash    8 年前

    这是一个示例代码,我在其中添加了一个额外的包装器, image ,在 anim ,然后 动画 显示为内联块。

    形象 包装器将改为flex项,并允许 动画 要像图像一样表现和调整大小,并创建边界,您需要能够将眼睛放置在图像顶部的固定位置。

    堆栈代码段

    .act {
      display: flex;
      flex-wrap: wrap;
      background-color: #E1F5FE;
      padding: 10px;
      border-radius: 10px;
      align-items: center;
    }
    
    .image {
      flex: 1 1;
      min-width: 64px;
      text-align: center;
    }
    
    .anim {
      display: inline-block;
      position: relative;
    }
    
    .anim>img {
      width: 100%;
      max-width: 50px;
    }
    
    .txt {
      flex: 1 1 180px;
      text-align: center;
    }
    
    .tear {
      position:absolute;
      top: 10px;
      left: 30px;
      width: 10px;
      height: 10px;
      background: blue;
    }
    .tear:first-child {
      left: 10px;"
    }
    <div class="act">
    
      <div class="image">
        <div class="anim">
          <div class="tear"></div>
          <div class="tear"></div>
          <img src="http://placehold.it/150">
        </div>
      </div>
    
      <div class="txt">
        Some text
      </div>
    
    </div>