如何让悬停元素改变其他 3 个元素的状态?
How do I make a hover element change the state of 3 other elements?
This is my closest answer I can find 但我正在努力用我必须做的图形/导航来实现它。希望能帮到你。
你可以在这里看到我的fiddle:https://jsfiddle.net/SteveDavies/nxcw9w4f/
我有两个部分,右边的部分是3个菜单项。当我将鼠标悬停在灰色上时,我希望绿色和粉红色发生变化(不透明)。当我将鼠标悬停在绿色上时,我希望灰色和粉红色发生变化,当我将鼠标悬停在粉红色上时,我希望绿色和灰色发生变化。
同时
菜单区域不透明的部分在地球上也是不透明的。
然后我需要让它向后工作,当我漂浮在地球的粉红色区域上时,其他两个区域变灰,菜单区域也变灰。
我希望这是有道理的。
我考虑过使用 z-index
对地球的 3 个部分进行分层,但我认为这行不通?
还附上了地球仪图片。
希望能帮到你!
史蒂夫
我为您制作了一个快速演示。这是您要找的吗:
http://codepen.io/anon/pen/NGRxzR
<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');
});
});
我创建了一些东西:https://jsfiddle.net/nxcw9w4f/2/
恐怕它有点复杂,您可能需要学习一些新的技能和概念才能重新创建它,但我没有看到实现此目的的更简单方法,也许其他人会。我使用图像映射来识别复杂形状上的悬停(图像映射中的实际图像是透明 GIF https://css-tricks.com/snippets/html/base64-encode-of-1x1px-transparent-gif/ because we need to use CSS background-image instead for the sprite), you'd have to create your own with the coordinates of your own image. This is the sprite I created: http://s9.postimg.org/lpcnlmp7j/circlesprite.gif
使用 jQuery (https://api.jquery.com/hover/) 我根据悬停的元素更改了容器的 class。这适用于菜单项和地球仪项,因为它们具有相同的 class(灰色、粉红色或绿色)。
$('.gray').hover(function(){
$('#container').addClass('hover grayHover');
},
function(){
$('#container').removeClass('hover grayHover');
});
这会更改地球背景图像的位置(从而使用 sprite)。
.pinkHover #globe {
background-position:left -300px;
}
.greenHover #globe {
background-position:left -600px;
}
.grayHover #globe {
background-position:left -900px;
}
并为菜单项提供较低的不透明度,同时为当前项目提供完全不透明度。
.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?
This is my closest answer I can find 但我正在努力用我必须做的图形/导航来实现它。希望能帮到你。
你可以在这里看到我的fiddle:https://jsfiddle.net/SteveDavies/nxcw9w4f/
我有两个部分,右边的部分是3个菜单项。当我将鼠标悬停在灰色上时,我希望绿色和粉红色发生变化(不透明)。当我将鼠标悬停在绿色上时,我希望灰色和粉红色发生变化,当我将鼠标悬停在粉红色上时,我希望绿色和灰色发生变化。
同时
菜单区域不透明的部分在地球上也是不透明的。
然后我需要让它向后工作,当我漂浮在地球的粉红色区域上时,其他两个区域变灰,菜单区域也变灰。
我希望这是有道理的。
我考虑过使用 z-index
对地球的 3 个部分进行分层,但我认为这行不通?
还附上了地球仪图片。
希望能帮到你!
史蒂夫
我为您制作了一个快速演示。这是您要找的吗:
http://codepen.io/anon/pen/NGRxzR
<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');
});
});
我创建了一些东西:https://jsfiddle.net/nxcw9w4f/2/
恐怕它有点复杂,您可能需要学习一些新的技能和概念才能重新创建它,但我没有看到实现此目的的更简单方法,也许其他人会。我使用图像映射来识别复杂形状上的悬停(图像映射中的实际图像是透明 GIF https://css-tricks.com/snippets/html/base64-encode-of-1x1px-transparent-gif/ because we need to use CSS background-image instead for the sprite), you'd have to create your own with the coordinates of your own image. This is the sprite I created: http://s9.postimg.org/lpcnlmp7j/circlesprite.gif
使用 jQuery (https://api.jquery.com/hover/) 我根据悬停的元素更改了容器的 class。这适用于菜单项和地球仪项,因为它们具有相同的 class(灰色、粉红色或绿色)。
$('.gray').hover(function(){
$('#container').addClass('hover grayHover');
},
function(){
$('#container').removeClass('hover grayHover');
});
这会更改地球背景图像的位置(从而使用 sprite)。
.pinkHover #globe {
background-position:left -300px;
}
.greenHover #globe {
background-position:left -600px;
}
.grayHover #globe {
background-position:left -900px;
}
并为菜单项提供较低的不透明度,同时为当前项目提供完全不透明度。
.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?