我确定这是可行的,但我无法让它工作,我想创建一个横幅,下面有4张幻灯片和4个按钮。
首先显示第一张幻灯片,直到您将鼠标悬停在“按下按钮2”上。它隐藏了幻灯片1,3和& 4并显示幻灯片2并保持滑动(鼠标关闭),直到另一个按钮悬停在上面,然后它将显示相应的幻灯片并隐藏其余部分。
我想尝试在HTML / CSS中完成所有这些,如果可能的话,不需要jQuery。
我的代码:
<style type="text/css">
.banners {width:100%; max-width:1004px; height:100%; max-height:546px; overflow: hidden;}
#slide1 {width:100%; height:100%; background:yellow; display:block;}
#slide2 {width:100%; height:100%; background:blue; display:none;}
#slide3 {width:100%; height:100%; background:green; display:none;}
#slide4 {width:100%; height:100%; background:red; display:none;}
#bannerbutton1 {width:100%; max-width: 251px; height:100%; max-height: 40px; float:left; background:yellow;}
#bannerbutton2 {width:100%; max-width: 251px; height:100%; max-height: 40px; float:left; background:blue;}
#bannerbutton3 {width:100%; max-width: 251px; height:100%; max-height: 40px; float:left; background:green;}
#bannerbutton4 {width:100%; max-width: 251px; height:100%; max-height: 40px; float:left; background:red;}
</style>
<div class="banners">
<div id="slide1">
</div>
<div id="slide2">
</div>
<div id="slide3">
</div>
<div id="slide4">
</div>
</div>
<a id="bannerbutton1" href="">
BANNER 1
</a>
<a id="bannerbutton2" href="">
BANNER 2
</a>
<a id="bannerbutton3" href="">
BANNER 3
</a>
<a id="bannerbutton4" href="">
BANNER 4
</a>
这可能很简单,我可能会遗漏一些东西,但非常感谢帮助。
答案 0 :(得分:1)
这些事情必须使用JavaScript完成。只有当应该显示/隐藏的元素是那些用鼠标悬停的子元素时,才能使用纯CSS悬停和隐藏元素。例如:
<div class="hover-to-hide-sub-div">
<div class="hide-me"></div>
</div>
并在CSS中:
div.hover-to-hide-sub-div:hover div.hide-me { display: none; }
如果没有给出这个层次结构,则需要JS。
答案 1 :(得分:0)
使用CSS,您可以使用子选择器和兄弟选择器隐藏/显示,这是真的。但即使是兄弟选择器,:hover
元素也必须位于受影响的元素之前。
如果您更改了结构,则可以使用:hover
伪类和一般同级选择器~
为按钮的悬停状态实现悬停开关。这是一个例子:
现在使用智能定位你可以根据需要重新定位,但是当你想要保持最后一个悬停元素的状态时就会出现问题。
CSS纯粹用于样式化,即使它确实满足元素的伪状态(因为它们的风格),它也无法做到这样的事情。 :hover
用于悬停其他任何内容的样式。
正如其他海报所述,你需要使用JS / JQuery来做到这一点。可能有以下几点:
$( "button" ).on("mouseenter", function() {
$('class/ID to show').addClass( "hover" ).siblings().removeClass( "hover" );
});
但是无论JS解决方案保持状态相同并使这个特定的设置工作,你将不得不使用JS。此外,如果您使用JS来执行此操作,我建议使用类来切换它,保持CSS和JS分开。
答案 2 :(得分:0)
是的,你可以在没有JavaScript或JQuery的情况下完成,但只能使用hover
。如果你想在没有悬停的情况下留在图像上,那么你需要使用JavaScript或JQuery。这是因为当你的鼠标没有按钮时,css选择器不活动。
无论如何,这是我的代码,纯css3。当你悬停在按钮上时,它适用于悬停并显示图像。
<div class="slider">
<input type="radio" id="control1" name="controls" checked="checked"/>
<label for="control1"></label>
<input type="radio" id="control2" name="controls"/>
<label for="control2"></label>
<input type="radio" id="control3" name="controls"/>
<label for="control3"></label>
<input type="radio" id="control4" name="controls"/>
<label for="control4"></label>
<input type="radio" id="control5" name="controls"/>
<label for="control5"></label>
<div class="sliderinner">
<ul>
<li>
<img src="bea.jpg" />
<div class="description">
<div class="description-text">
<h2>Title 1</h2>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut</p>
</div>
</div>
</li>
<li>
<img src="bea.jpg" />
<div class="description">
<div class="description-text">
<h2>Title 2</h2>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut</p>
</div>
</div>
</li>
<li>
<img src="bea.jpg" />
<div class="description">
<div class="description-text">
<h2>Title 3</h2>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut</p>
</div>
</div>
</li>
<li>
<img src="bea.jpg" />
<div class="description">
<div class="description-text">
<h2>Title 4</h2>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut</p>
</div>
</div>
</li>
<li>
<img src="bea.jpg" />
<div class="description">
<div class="description-text">
<h2>Title 5</h2>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut</p>
</div>
</div>
</li>
</ul>
</div>
</div>
h1 {color:#333; text-shadow:1px 1px #999; font-size:40px; font-family:Archivo Narrow; margin:40px; text-align:center;}
.slider {
display: block;
height: 320px;
min-width: 260px;
max-width: 640px;
margin: auto;
margin-top: 20px;
position: relative;
}
.sliderinner {
width: 100%;
height: 100%;
overflow: hidden;
position: relative;
}
.sliderinner>ul {
list-style: none;
height: 100%;
width: 500%;
overflow: hidden;
position: relative;
left: 0px;
-webkit-transition: left .8s cubic-bezier(0.77, 0, 0.175, 1);
-moz-transition: left .8s cubic-bezier(0.77, 0, 0.175, 1);
-o-transition: left .8s cubic-bezier(0.77, 0, 0.175, 1);
transition: left .8s cubic-bezier(0.77, 0, 0.175, 1);
}
.sliderinner>ul>li {
width: 20%;
height: 320px;
float: left;
position: relative;
}
.sliderinner>ul>li>img {
margin: auto;
height: 100%;
}
.slider input[type=radio] {
position: absolute;
left: 50%;
bottom: 15px;
z-index: 100;
visibility: hidden;
}
.slider label {
position: absolute;
left: 50%;
bottom: -45px;
z-index: 100;
width: 12px;
height: 12px;
background-color:#ccc;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
border-radius: 50%;
cursor: pointer;
-webkit-box-shadow: 0px 0px 3px rgba(0,0,0,.8);
-moz-box-shadow: 0px 0px 3px rgba(0,0,0,.8);
box-shadow: 0px 0px 3px rgba(0,0,0,.8);
-webkit-transition: background-color .2s;
-moz-transition: background-color .2s;
-o-transition: background-color .2s;
transition: background-color .2s;
}
.slider input[type=radio]#control1:hover~label[for=control1] { background-color: #333; }
.slider input[type=radio]#control2:hover~label[for=control2] { background-color: #333; }
.slider input[type=radio]#control3:hover~label[for=control3] { background-color: #333; }
.slider input[type=radio]#control4:hover~label[for=control4] { background-color: #333; }
.slider input[type=radio]#control5:hover~label[for=control5] { background-color: #333; }
.slider label[for=control1] { margin-left: -36px }
.slider label[for=control2] { margin-left: -18px }
.slider label[for=control4] { margin-left: 18px }
.slider label[for=control5] { margin-left: 36px }
.slider input[type=radio]#control1:hover~.sliderinner>ul { left: 0 }
.slider input[type=radio]#control2:hover~.sliderinner>ul { left: -100% }
.slider input[type=radio]#control3:hover~.sliderinner>ul { left: -200% }
.slider input[type=radio]#control4:hover~.sliderinner>ul { left: -300% }
.slider input[type=radio]#control5:hover~.sliderinner>ul { left: -400% }
.description {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
font-family:Archivo Narrow;
z-index: 1000;
}
.description-text {
background-color: rgba(0,0,0,.8);
padding:10px;
top: 0;
z-index: 4;
-webkit-transition: opacity .2s;
-moz-transition: opacity .2s;
-o-transition: opacity .2s;
transition: opacity .2s;
color: #fff;
}