Как создать анимацию скользящего div при наведении курсора и выравнивании текста

#html #css

#HTML #css

Вопрос:

Итак, я пытаюсь создать html-документ, в котором всякий раз, когда пользователь наводит курсор на текст, затем div, кроме него, скользит вверх, а тот, что ниже, также скользит вверх.

Например, прямо сейчас у меня есть следующее:

введите описание изображения здесь

Если пользователь наведет курсор на верхнюю половину части, то «Адрес» будет скользить вверх, заменяя имя, и имя также будет скользить вверх, исчезая из div.

Примером сценария может быть следующий:

введите описание изображения здесь

По умолчанию имя будет рядом с надписью «Наведите на меня», но если пользователь наведет курсор, имя будет скользить вверх, исчезая из 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>  

Ответ №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:

В приведенном ниже фрагменте я использовал переход с отрицательным верхним краем при наведении курсора на 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>