首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使悬停元素改变其他三个元素的状态?

如何使悬停元素改变其他三个元素的状态?
EN

Stack Overflow用户
提问于 2015-09-23 09:56:35
回答 2查看 107关注 0票数 0

This is my closest answer I can find,但是我很难用图形/导航来实现这一点。希望你能帮上忙。

你可以在这里看到我的小提琴:https://jsfiddle.net/SteveDavies/nxcw9w4f/

我有两个部分,右边的部分是3个菜单项。当我悬停在灰色,我希望绿色和粉红色改变(不透明)。当我在绿色上空盘旋时,我希望灰色和粉红色发生变化,当我在粉红色上空盘旋时,我希望绿色和灰色发生变化。

同时

任何在菜单区域是不透明的将是不透明的在全球。

然后我需要让它倒转,当我漂浮在全球的粉红色区域时,另外两个区域是灰色的,在菜单区域也是灰色的。

我希望这是合理的。

我考虑过使用z-index来对地球的三个部分进行分层,但我不认为这会起作用。

地球的图像也附呈。

希望你能帮忙!

史蒂夫

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-23 12:03:05

我创造了一些东西:https://jsfiddle.net/nxcw9w4f/2/

恐怕这有点复杂,你可能需要学习一些新的技能和概念来重新创建它,但我没有看到更简单的方法来实现这一点,也许其他人会这样做。我使用一个图像映射来识别复杂形状上的悬停(图像地图中的实际图像是一个透明的GIF https://css-tricks.com/snippets/html/base64-encode-of-1x1px-transparent-gif/,因为我们需要使用CSS背景图像而不是雪碧),您必须用自己图像的坐标创建自己的图像。这是我创建的雪碧:http://s9.postimg.org/lpcnlmp7j/circlesprite.gif

使用jQuery (https://api.jquery.com/hover/),我根据悬停的元素更改了容器的类。这既适用于菜单项,也适用于全球项目,因为它们具有相同的类(灰色、粉红色或绿色)。

代码语言:javascript
复制
$('.gray').hover(function(){
    $('#container').addClass('hover grayHover');
},
function(){
    $('#container').removeClass('hover grayHover');    
});

这会改变地球背景图像的位置(从而利用雪碧)。

代码语言:javascript
复制
.pinkHover #globe {
    background-position:left -300px;
}
.greenHover #globe {
    background-position:left -600px;
}
.grayHover #globe {
    background-position:left -900px;
}

并在给予当前项完全不透明度的同时,给出较低的不透明度。

代码语言:javascript
复制
.hover #menu a {
    opacity:.2;
}
.grayHover #menu a.gray {
    opacity:1;
}
.pinkHover #menu a.pink {
    opacity:1;
}
.greenHover #menu a.green {
    opacity:1;
}

注意:您不应该将div放在锚(a)标记中,因为不能在内联元素中放置块元素。这在HTML5可能是可以的,但为什么要冒这个险呢?Is putting a div inside an anchor ever correct?

票数 0
EN

Stack Overflow用户

发布于 2015-09-23 10:10:54

我为你做了一个简单的演示。这就是你要找的吗

http://codepen.io/anon/pen/NGRxzR

代码语言:javascript
复制
<div>
<ul>
  <li class="green">Green</li>
  <li class="blue">Blue</li>
  <li class="pink">Pink</li>
</ul>
</div>

ul{
  list-style: none;
  font-family: Arial;
}

ul li{
  padding: 5px;
  opacity: 0.3;
}

ul li.full{
  opacity: 1;
}

.green{
  background: green;
}

.blue{
  background: blue;
}

.pink{
  background: pink;
}

$(document).ready(function() {
  $('ul li').hover(function() {
    $('ul li').not($(this)).toggleClass('full');
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32736402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档