【问题标题】:How to create a sliding div animation when hover and text are aligned悬停和文本对齐时如何创建滑动div动画
【发布时间】:2020-10-29 08:17:05
【问题描述】:

所以我正在尝试创建一个 html 文档,当用户将鼠标悬停在文本上时,除了它之外的 div 会向上滑动,下面的 div 也会向上滑动。

例如,现在我有以下内容:

如果用户将鼠标悬停在上半部分,则“地址”将向上滑动,替换 NameName 也会向上滑动,从 div 中消失。

一个示例场景是这样的:

默认情况下,名称会在“Hover Me”旁边,但如果用户将鼠标悬停在上面,那么名称会向上滑动从 div 中消失,而地址会向上滑动并占据名称位置。

不胜感激。

html, body {
    height: 100%;
}

* {
    box-sizing: border-box;
}

.outer {
    border: 3px solid #194a50;
    border-radius: 5px;
    height: 20%;
    width: 50%;
}

.top {
    font-family: sans-serif;
    font-size: 1vw;
    border: 1px solid black;
    height: 50%;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.bottom {
    border: 1px solid black;
    height: 50%;
    width: 100%;
}

.slider_text {
    border: 1px solid black;
    height: 100%;
    padding-left: 5px;
}

.address {
    border: 1px solid black;
    display: flex;
    align-items: center;
}

.name {
    border: 1px solid black;
    display: flex;
    align-items: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="style.css">
  <title>Document</title>
</head>
<body>
  <div class = "outer">
    <div class = "top">
      Hover Me
        <div class = "slider_text">
          <div class = "address">Name</div>
          <div class = "name">Address</div>
        </div>
    </div>
    <div class = "bottom">

    </div>
  </div>
</body>
</html>

【问题讨论】:

    标签: html css


    【解决方案1】:

    html, body {
        height: 100%;
    }
    
    * {
        box-sizing: border-box;
    }
    
    .outer {
        border: 3px solid #194a50;
        border-radius: 5px;
        height: 20%;
        width: 50%;
    }
    
    .top {
        font-family: sans-serif;
        font-size: 1vw;
        border: 1px solid black;
        height: 50%;
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    
    .top:hover .address {
        opacity: 1;
        top: -20px;
    }
    
    .top:hover .name {
        opacity: 0;
        top: -20px;
    }
    
    .bottom {
        border: 1px solid black;
        height: 50%;
        width: 100%;
    }
    
    .slider_text {
        border: 1px solid black;
        height: 100%;
        padding-left: 5px;
    }
    
    .address {
        position: relative;
        border: 1px solid black;
        display: flex;
        align-items: center;
        opacity: 0;
        transition: all 0.5s;
        top: 0;
    }
    
    .name {
        position: relative;
        border: 1px solid black;
        display: flex;
        align-items: center;
        opacity: 1;
        transition: all 0.5s;
        top: 0;
    }
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel="stylesheet" href="style.css">
      <title>Document</title>
    </head>
    <body>
      <div class = "outer">
        <div class = "top">
          Hover Me
            <div class = "slider_text">
              <div class = "name">Name</div>
              <div class = "address">Address</div>
            </div>
        </div>
        <div class = "bottom">
    
        </div>
      </div>
    </body>
    </html>

    【讨论】:

      【解决方案2】:

      在下面的 sn-p 中,当您将鼠标悬停在 div 上时,我使用了带有负边距顶部的过渡。

      html, body {
          height: 100%;
      }
      
      * {
          box-sizing: border-box;
      }
      
      .outer {
          border: 3px solid #194a50;
          border-radius: 5px;
          height: 20%;
          width: 50%;
      }
      
      .top {
          font-family: sans-serif;
          font-size: 1vw;
          border: 1px solid black;
          height: 50%;
          width: 100%;
          display: flex;
          align-items: center;
          justify-content: center;
      }
      
      .bottom {
          border: 1px solid black;
          height: 50%;
          width: 100%;
      }
      
      .slider_text {
          height: 10px;
          padding-left: 5px;
          overflow: hidden;
      }
      .top .slider_text div{
        height:100%;
        margin-top:0;
        transition: margin-top .3s ease-out;
      }
      .top:hover .slider_text div:first-child{
        margin-top:-10px;
        transition: margin-top .3s ease-out;
      }
      .address {
      
          display: flex;
          align-items: center;
      }
      
      .name {
      
          display: flex;
          align-items: center;
      }
      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="style.css">
        <title>Document</title>
      </head>
      <body>
        <div class = "outer">
          <div class = "top">
            Hover Me
              <div class = "slider_text">
                <div class = "address">Name</div>
                <div class = "name">Address</div>
              </div>
          </div>
          <div class = "bottom">
      
          </div>
        </div>
      </body>
      </html>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-19
        • 1970-01-01
        • 2014-05-10
        • 2019-08-05
        • 1970-01-01
        • 2021-06-29
        • 2014-09-07
        • 2015-12-10
        相关资源
        最近更新 更多