我试图弄清楚是否有办法使用CSS将鼠标悬停在链接上,并在页面的其他位置显示图像的叠加层。我正在制作一个有地图的网站,我想要完成的是,当他们将鼠标悬停在相应位置的链接上时,地图会突出显示他们正在悬停的位置,以便更好地了解在哪里,而不是必须搜索它。我现在得到的是,我必须将鼠标悬停在图像上的位置,然后我得到效果,但是当我将鼠标悬停在链接上时,我想要效果。
有什么建议吗?
谢谢
我为你们缺乏代码而道歉。
以下是我用来创建一些简单叠加层的div。只是一些颜色块。
<div class="roomOverlay blue" id="conf_sanchez"></div>
<div class="roomOverlay red" id="conf_CIO"></div>
<div class="roomOverlay green" id="conf_10F"></div>
<div class="roomOverlay brown" id="Fuster"></div>
这是css
.blue:hover { background-color: Blue; }
.red:hover { background-color: red; }
.green:hover { background-color: green; }
.brown:hover { background-color: brown; }
#conf_sanchez {
height: 104px;
width: 96px;
left: 876px;
top: 14px;}
#conf_CIO {
height: 146px;
width: 69px;
left: 7px;
top: -92px;}
#conf_10F {
height: 67px;
width: 115px;
left: 194px;
top: 193px;}
#Fuster {
height: 139px;
width: 129px;
left: 180px;
top: -17px;}
FIXED 我需要做的是一个脚本,因为它很难用HTML和CSS定位。我在我的HTML中使用了data-overlay标签。
<dl> <dt><a href="#" **data-overlay="#Fuster"**>Fuster Conference Room - W Side behind small break room</a></dt>
<dd>-Projector</dd>
<dd>-Computer</dd>
<dd>-Polycom</dd>
<dd>-Seats 8-10 people</dd>
<dd>-4 White Boards</dd>
</dl>
JQuery脚本:
$(function () {
$('.roomOverlay').css("visibility", "hidden");
$('a').hover(function () {
var overlay = $(this).data("overlay");
$(overlay).css("visibility", "visible");
}, function () {
var overlay = $(this).data("overlay");
$(overlay).css("visibility", "hidden");
});
});
这是page showing the result。出于安全考虑,它不显示图像,但效果适用于空图像。 :)
答案 0 :(得分:1)
对于仅限CSS的解决方案,您可能需要查看child selectors。
这将允许您将鼠标悬停在父级上并显示该子级。
例如
HTML
<div id="parent">
<div id="child">
</div>
</div>
CSS
#parent { properties }
#child {properties; height: 0}
#parent:hover > #child { height: 200px; properties}
基于提供的代码的想法:http://jsfiddle.net/derekstory/nDyWF/1/
正如其他人所提到的,您可能更适合使用JS / Jquery解决方案。这有点脏,但有可能。
答案 1 :(得分:0)
你可以做一些定位的东西。让我们打破ASCII艺术:
<div>
------------------------------------------------------
| | <img class="map"> |
| <a>This is link | |
| <span>Overlay</span> | |
| </a> | |
| | |
| <a>This is another link | |
| <span>Overlay</span> | |
| </a> | |
| | |
------------------------------------------------------
</div>
div {
position: relative;
}
div img,
div a span {
position: absolute;
top: 0;
right: 0;
}
div img {
z-index: 5;
}
a span {
display: none;
z-index: 10;
}
a:hover span {
display: block;
}
我认为a:hover span
不会在IE 6中运行,但它应该在其他浏览器中运行。
答案 2 :(得分:0)
我知道你指定使用css来解决这个问题,但是使用JS(jQuery)会使得大型项目的答案更加灵活。
<强> HTML 强>
<img class="image" src="http://media-cdn.tripadvisor.com/media/photo-s/00/1d/3d/32/new-york-city.jpg">
<img class="image" src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRCk4R8uFRe5EnqH9KrV3u-K1VcCp3y_qSG8vezNG5uSX7G-FMHvQ">
<img class="image" src="http://images1.fanpop.com/images/image_uploads/New-York-City-new-york-1020054_1024_768.jpg">
<img class="image" src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSF_1ueOgxtgkT8HFuwO3f3K5fEtUxJtC-IICVWYcXJkchmgT1c">
<div class="links">
<a href="#" title="Example link!">Option 1</a>
<a href="#" title="Example link!">Option 2</a>
<a href="#" title="Example link!">Option 3</a>
<a href="#" title="Example link!">Option 4</a>
</div>
这为我们设置了一个模板,用于显示指定的图像。当用户将鼠标悬停在链接上时,将显示相应的图像。
<强> CSS 强>
img.image {
position: relative;
top: 0;
left: 0;
display: none;
width: 300px;
}
img.active {
display: block;
}
.links {
position: absolute;
bottom: 0;
}
这只是设定了一些基本定位。 .active
是将应用于当前图像的类。它会将显示从none
更改为block
。
的的jQuery 强>
$(function() {
$('a').hover(function() {
var item = $('a').index(this);
$('.image').removeClass('active');
$('.image').eq(item).addClass('active');
});
});
这就是魔术发生的地方。当用户将鼠标悬停在链接上时,jQuery会通过获取index来确定哪个链接悬停。然后jQuery获取该索引并找到具有相同索引的图像,并将类.active
添加到其中。因此,无论项目有多大以及您拥有多少链接和图像,它都可以扩展到任何大小的项目
幻灯片显示了相同的概念。
以下是此操作的示例:http://codepen.io/anon/pen/nCDhG
答案 3 :(得分:-2)
使用JQuery:
$("#link1").hover(
function () {
$('#map1').show();
},
function () {
$('#map1').hide();
}
);
第一个是鼠标 - 第二个功能是鼠标输出。