具有悬停效果的响应图像点
Responsive image spots with hover effects
我在这里遇到了很大的挑战!
设计师发送了这棵有一些光点的灯树,当鼠标悬停时,应该会在网站的页面上显示一个菜单 link。不仅如此,在悬停时,应该激活一个叠加层来改变整个站点的色调(某种不透明度降低的黑色叠加层)
我面临的问题是我真的不知道从哪里开始!我想实现某种图像映射,但后来我不知道如何将其设置为响应式,而且我真的很难为这个设计挑战想出一个解决方案。
如您在屏幕截图中所见,发光树必须作为 header 背景,并且斑点应位于树的某些特定部分。
非常感谢您的帮助
这可能是您的起点。只要你知道你的图像大小,在你的情况下是 914x913 ......你可以只使用 position: absolute;
和左,右,上,下的像素,具体取决于你想要的位置......这只是一个问题测量(也有一些试验和错误)。请参阅代码片段...我创建了两个 'hotspots' 供您开始使用(以红色标出)。并且当你翻滚时出现的盒子就在那里,你可以玩定位并且显然比普通盒子更好地设计它。顺便说一句,需要 <span></span>
只是为了让 'hotspot' 分开,否则辉光会对您的背景图像产生奇怪的影响。哦,如果你打算让这个支持更小的视口,你将不得不为每个添加媒体查询来调整每个热点的位置。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no" />
<title>Test</title>
<style>
body {
font-family: sans-serif;
color: white;
}
.container {
background-image: url('https://i.stack.imgur.com/lzxlC.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
display: flex;
width: 914px;
height: 913px;
margin: 0 auto;
position: relative;
}
/* SPOT 1 */
.spot-1 {
position: absolute;
left: 323px;
top: 148px;
}
.spot-1 span {
border: 3px solid #FF6F6F;
border-radius: 50px;
height: 30px;
width: 30px;
display: flex;
align-self: center;
}
.spot-1:hover span {
box-shadow: 0 0 60px 30px #fff, 0 0 140px 90px #009EAB;
animation: fadeIn 1s linear;
}
.box-1 {
display: none;
}
.spot-1:hover .box-1 {
display: flex;
width: 80px;
height: 25px;
background: black;
color: white;
position: relative;
left: 50px;
padding: 12px;
font-size: 10px;
}
/* SPOT 2 */
.spot-2 {
position: absolute;
left: 515px;
top: 163px;
}
.spot-2 span {
border: 3px solid #FF3F3F;
border-radius: 50px;
height: 30px;
width: 30px;
display: flex;
align-self: center;
}
.spot-2:hover span {
box-shadow: 0 0 60px 30px #fff, 0 0 140px 90px #009EAB;
animation: fadeIn 1s linear;
}
.box-2 {
display: none;
}
.spot-2:hover .box-2 {
display: flex;
width: 80px;
height: 25px;
background: black;
color: white;
position: relative;
left: 50px;
padding: 12px;
font-size: 10px;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style>
</head>
<body>
<div class="container">
<div class="spot-1"><span></span>
<div class="box-1">HOWDY!</div>
</div>
<div class="spot-2"><span></span>
<div class="box-2">HI</div>
</div>
</div>
</body>
</html>
我在这里遇到了很大的挑战!
设计师发送了这棵有一些光点的灯树,当鼠标悬停时,应该会在网站的页面上显示一个菜单 link。不仅如此,在悬停时,应该激活一个叠加层来改变整个站点的色调(某种不透明度降低的黑色叠加层)
我面临的问题是我真的不知道从哪里开始!我想实现某种图像映射,但后来我不知道如何将其设置为响应式,而且我真的很难为这个设计挑战想出一个解决方案。
如您在屏幕截图中所见,发光树必须作为 header 背景,并且斑点应位于树的某些特定部分。
非常感谢您的帮助
这可能是您的起点。只要你知道你的图像大小,在你的情况下是 914x913 ......你可以只使用 position: absolute;
和左,右,上,下的像素,具体取决于你想要的位置......这只是一个问题测量(也有一些试验和错误)。请参阅代码片段...我创建了两个 'hotspots' 供您开始使用(以红色标出)。并且当你翻滚时出现的盒子就在那里,你可以玩定位并且显然比普通盒子更好地设计它。顺便说一句,需要 <span></span>
只是为了让 'hotspot' 分开,否则辉光会对您的背景图像产生奇怪的影响。哦,如果你打算让这个支持更小的视口,你将不得不为每个添加媒体查询来调整每个热点的位置。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no" />
<title>Test</title>
<style>
body {
font-family: sans-serif;
color: white;
}
.container {
background-image: url('https://i.stack.imgur.com/lzxlC.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
display: flex;
width: 914px;
height: 913px;
margin: 0 auto;
position: relative;
}
/* SPOT 1 */
.spot-1 {
position: absolute;
left: 323px;
top: 148px;
}
.spot-1 span {
border: 3px solid #FF6F6F;
border-radius: 50px;
height: 30px;
width: 30px;
display: flex;
align-self: center;
}
.spot-1:hover span {
box-shadow: 0 0 60px 30px #fff, 0 0 140px 90px #009EAB;
animation: fadeIn 1s linear;
}
.box-1 {
display: none;
}
.spot-1:hover .box-1 {
display: flex;
width: 80px;
height: 25px;
background: black;
color: white;
position: relative;
left: 50px;
padding: 12px;
font-size: 10px;
}
/* SPOT 2 */
.spot-2 {
position: absolute;
left: 515px;
top: 163px;
}
.spot-2 span {
border: 3px solid #FF3F3F;
border-radius: 50px;
height: 30px;
width: 30px;
display: flex;
align-self: center;
}
.spot-2:hover span {
box-shadow: 0 0 60px 30px #fff, 0 0 140px 90px #009EAB;
animation: fadeIn 1s linear;
}
.box-2 {
display: none;
}
.spot-2:hover .box-2 {
display: flex;
width: 80px;
height: 25px;
background: black;
color: white;
position: relative;
left: 50px;
padding: 12px;
font-size: 10px;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style>
</head>
<body>
<div class="container">
<div class="spot-1"><span></span>
<div class="box-1">HOWDY!</div>
</div>
<div class="spot-2"><span></span>
<div class="box-2">HI</div>
</div>
</div>
</body>
</html>