我有两个div,一个是大红色,一个是小蓝色,一个是红色,另一个是红色。
当盘旋时,它们通过将不透明度改为1来显示。我将红色的一个放在顶部而蓝色放在顶部。
当我悬停红色时,它会完全显示。当我将蓝色的那个悬停时,我必须将鼠标悬停在红色外面的部分上以完全显示它。
我想要的是,当我将鼠标悬停在红色部分之外的蓝色部分时,仅显示此部分,而不显示红色部分内部(下方)的部分。我怎么能这样做?
$(".blue, .red").on({
mouseenter: function () {
$('.squares > div').css('opacity', '0');
$(this).css('opacity', '1');
},
mouseleave: function () {
$(this).css('opacity', '0');
}
});
.red {
background-color:red;
width:200px;
height:200px;
position:absolute;
opacity:0;
z-index:2;
}
.blue {
background-color:blue;
width:100px;
height:100px;
position:absolute;
top:150px;
left:50px;
opacity:0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="squares">
<div class="blue"></div>
<div class="red"></div>
</div>
它应该如下所示:http://s14.postimg.org/rqzujr9xt/Untitled.png请注意,我不能分割蓝色部分,也不能只在外部使用较小的部分。蓝色部分的一部分必须在红色部分之下。我不知道会有多大。
答案 0 :(得分:1)
color
的{{1}}更改为red div
(与white
的bg颜色相同)来创建幻觉
更新:修复了一个小错误,现在parent div
消失在red div
上,通过查看mouseleave
我添加到border
来确认1}}
https://jsfiddle.net/0qfxw8z8/45/
答案 1 :(得分:1)
https://jsfiddle.net/0qfxw8z8/37/
<强> HTML 强>:
<div class="squares">
<div class="blue">
<div class="upper">
</div>
<div class="lower">
</div>
</div>
<div class="red">
</div>
</div>
<强> CSS 强>:
.red {
background-color:red;
width:200px;
height:200px;
position:absolute;
opacity:0.1;
}
.blue {
background-color:transparent;
width:100px;
height:100px;
position:absolute;
top:158px;
left:50px;
}
.blue > .upper, .blue > .lower {
opacity: 0.1;
height: 50px;
background-color: blue;
}
.blue > .lower:hover, .red:hover {
opacity: 1;
}
这就是你要求的:
答案 2 :(得分:0)
<强> JSFiddle (Updated 4.0) 强>
number
<div class="js-main-container">
<div class="js-show-content"></div>
<div class="js-hidden-container">Content</div>
</div>
.js-main-container {
background-color:red;
width:200px;
height:200px;
position:absolute;
z-index:2;
}
.js-show-content {
background-color: black;
width:100px;
height:100px;
position:absolute;
top:150px;
left: 0;
right: 0;
margin: 0 auto;
opacity:0.1;
z-index: 3;
}
.js-hidden-container {
color: #fff;
display: none;
background-color:blue;
width:100px;
position:absolute;
top:100%;
left:0;
right: 0;
margin: 0 auto;
}
答案 3 :(得分:0)
尝试这个
$(".blue, .red").on({
mouseenter: function() {
if ($(this).attr('class') == 'red') {
$('.squares .red').css('background-color', 'red');
$('.squares > div').css('opacity', '0');
$(this).css('opacity', '1');
} else if ($(this).attr('class') == 'blue') {
$('.squares .red').css('opacity', '1');
$('.squares .red').css('background-color', 'white');
$(this).css('opacity', '1');
}
},
mouseleave: function() {
$(this).css('opacity', '0');
}
});
这是fiddle
答案 4 :(得分:0)
答案 5 :(得分:-1)
您应该在代码中包含第三个块。并像其他部分一样制作动画。 JSfiddle here
$(".blue, .red").on({
mouseenter: function () {
$('.squares > div').css('opacity', '0');
$(this).css('opacity', '1');
},
mouseleave: function () {
$(this).css('opacity', '0');
}
});
$(".blue-on-red, .red").on({
mouseenter: function () {
$('.squares > div').css('opacity', '0');
$(this).css('opacity', '1');
},
mouseleave: function () {
$(this).css('opacity', '0');
}
});
.red {
background-color:red;
width:500px;
height:500px;
position:absolute;
z-index:1;
opacity: 0;
}
.blue-on-red {
background-color:blue;
width:300px;
height:300px;
position:absolute;
top:250px;
z-index: 2;
left:100px;
opacity: 0;
}
.blue {
background-color:blue;
width:300px;
height:40px;
position:absolute;
top:505px;
z-index: 3;
left:100px;
opacity: 0;
}
<div class="squares">
<div class="blue"></div>
<div class="blue-on-red"></div>
<div class="red"></div>
</div>
答案 6 :(得分:-1)
$(".blue, .red").on({
mouseenter: function () {
$('.squares > div').css('opacity', '0');
$(this).css('opacity', '1');
},
mouseleave: function () {
$(this).css('opacity', '0');
}
});
&#13;
.red {
background-color:red;
width:500px;
height:500px;
position:absolute;
z-index:2;
}
.blue {
background-color:blue;
width:300px;
height:300px;
position:absolute;
top:250px;
left:100px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="squares">
<div class="blue"></div>
<div class="red"></div>
</div>
&#13;
正如你在这里看到的那样,当你悬停这个部分时,蓝色部分从红色Squere下来并且它正在工作。
答案 7 :(得分:-1)
当我理解你的问题时,这是一个工作解决方案的更新小提琴。 https://jsfiddle.net/0qfxw8z8/1/
你的问题在于使用'this',它只能动画鼠标输入的div的不透明度。但实际上你想要动画所有div的不透明度。
更新了JS
$(".red").on({
mouseenter: function () {
//$('.squares > div').css('opacity', '0');
$('.square').css('opacity', '1');
},
mouseleave: function () {
$('.square').css('opacity', '0');
}
});
更新了HTML
<div class="squares">
<div class="square blue"></div>
<div class="square red"></div>
</div>