#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>