CSS 导航菜单淡出关闭悬停
CSS Nav Menu Fade Out OFF Hover
我还在学习 CSS 样式,我想实现一个 fade-in/fade-out 导航菜单。仔细阅读,我能够成功地将悬停时的淡入编码到我想要的效果。现在我在逻辑上受到挑战,似乎无法想出如何编写该菜单的代码,以便在鼠标不再悬停在特定 class.
上时淡出
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
margin: 0;
background-color: grey;
}
body {
position: fixed;
font-family: Serif, sans-serif;
background: white;
font-size: 62.5%;
color: black;
}
/*Nav Wrapper*/
#navWrapper {
width: 1100px;
position: fixed;
top: 30px;
left: 0px;
right: 0px;
margin: 0px;
margin-left: auto;
margin-right: auto;
}
/*Banner Wrapper*/
.bannerWrap {
width: 1100px;
position: fixed;
left: 0px;
right: 0px;
margin: 0px;
margin-left: auto;
margin-right: auto;
}
/*Banner Styling*/
.banner {
border: 1px solid black;
}
/*Main Nav Box Styling*/
.nav {
position: fixed;
list-style: none;
width: 1102px;
top: 70px;
margin: 30px auto 0px auto;
height: 43px;
padding: 0px 20px 0px 20px;
background: #323552;
background: -moz-linear-gradient(top, #323552, #1a1b24);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#323552), to(#1a1b24));
border: 1px solid #002232;
}
/*Main Nav Button Styling*/
.nav li {
float: left;
text-align: center;
position: relative;
padding: 4px 10px 4px 10px;
margin-right: 30px;
margin-top: 7px;
border: none;
background-color: transparent;
}
/*Main Nav Button Styling*/
.nav > li > a {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
color: #EEEEEE;
display: block;
outline: 0;
text-decoration: none;
text-shadow: 1px 1px 1px #000;
text-transform: uppercase;
background-color: transparent;
}
/*Drop Down On Hover Action*/
.nav > li:hover > div {
display: block;
left: 0;
-webkit-animation: fadein .5s;
/* Safari and Chrome */
-moz-animation: fadein .5s;
/* Firefox */
-ms-animation: fadein .5s;
/* Internet Explorer */
-o-animation: fadein .5s;
/* Opera */
animation: fadein .5s;
}
/*Drop Down Container*/
.nav > li > div {
position: fixed;
right: -1px;
top: 147px;
height: 300px;
display: none;
padding: 10px 10px;
box-shadow: 2px 4px 4px rgba(0, 0, 0, 0.4);
background: #323552;
background: -moz-linear-gradient(top, #323552, #1a1b24);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#323552), to(#1a1b24));
overflow: hidden;
}
/*Drop Down*/
.navMain {
margin: -4px auto;
position: fixed;
text-align: left;
border: 1px solid #777777;
border-top: none;
width: 1060px;
border: 1px solid black;
}
/*Nav Text Styling*/
.dropContent {
background: transparent;
color: #b9b9b9;
}
/*Nav Text Styling*/
.nav-titles {
display: inline-block;
font-size: 1.2em;
font-weight: bold;
text-align: left;
padding-right: 3px;
background: transparent;
}
/*Nav Icons Styling*/
.navIcon {
width: 15px;
height: 15px;
background: transparent;
}
/*Nav Sub Menu*/
.navDropLinks {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
display: block;
padding-bottom: 6px;
background: transparent;
}
/*Nav Sub Menu Hyper*/
.navDropLinks > a {
color: black;
text-decoration: none;
font-weight: bold;
background: transparent;
}
/*Nav Sub Menu Left Column*/
.navLeft {
position: absolute;
left: 10px;
width: 330px;
display: inline-block;
font-size: 11px;
text-align: left;
padding-right: 3px;
background: transparent;
}
/*Nav Sub Menu Center Column*/
.navCenter {
position: absolute;
width: 330px;
left: 357px;
font-size: 11px;
text-align: center;
background: transparent;
}
/*Nav Sub Menu Right Column*/
.navRight {
position: absolute;
right: 10px;
width: 330px;
display: inline-block;
font-size: 11px;
text-align: center;
padding-left: 3px;
background: transparent;
}
/*Nav Sub Menu Focus Images*/
.navImage {
display: inline-block;
width: 275px;
height: 120px;
background: transparent;
}
/*Alt Nav Sub Menus*/
.navMain1 {
margin: -4px auto;
position: fixed;
text-align: left;
border: 1px solid #777777;
border-top: none;
width: 1060px;
/* Gradient background */
background: #F4F4F4;
background: -moz-linear-gradient(top, #EEEEEE, #BBBBBB);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EEEEEE), to(#BBBBBB));
border: 1px solid black;
}
/*Alt Nav Sub Menus*/
.navMain2 {
margin: -4px auto;
position: fixed;
text-align: left;
border: 1px solid #777777;
border-top: none;
width: 1060px;
/* Gradient background */
background: #F4F4F4;
background: -moz-linear-gradient(top, #EEEEEE, #BBBBBB);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EEEEEE), to(#BBBBBB));
border: 1px solid black;
}
/*To Line 270: Keyframes for Nav Animation*/
@keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Firefox */
@-moz-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Safari and Chrome */
@-webkit-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Internet Explorer */
@-ms-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Opera */
@-o-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-moz-keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-webkit-keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-o-keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
<!--Nav Wrapper-->
<div class="bannerWrap">
<img class="banner" src="images/general/site/bannerlg.png">
</div>
<div id="navWrapper">
<ul class="nav">
<li><a href="#">Final Cut</a>
<!--Begin Main Div-->
<div class="navMain">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nave Right-->
</div>
<!--End Main Div-->
</li>
<li><a href="#">News</a>
<!--Begin Main Div-->
<div class="navMain1">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nav Right-->
<!--End Main Div-->
</li>
<li><a href="#">Articles</a>
<!--Begin Main Div-->
<div class="navMain2">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nav Right-->
<!--End Main Div-->
</li>
<li><a href="#">Sets</a>
<!--Begin Main Div-->
<div class="navMain1">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nav Right-->
<!--End Main Div-->
</li>
<li><a href="#">Resources</a>
<!--Begin Main Div-->
<div class="navMain1">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nav Right-->
<!--End Main Div-->
</li>
</ul>
<!--End Nav List-->
</div>
我只想要一个简单的淡出效果,希望 不必过多改变我的结构并保持 CSS。
感谢您的帮助!
娜塔莉完全正确,过渡是做到这一点的方法。
唯一需要更改的是 /*Drop Down Container*/
和 /*Drop Down On Hover Action*/
的 CSS
与其使用 display: none;
隐藏 div,不如使用 opacity: 0;
隐藏它们,然后设置不透明度过渡。
要显示它们,您需要做的就是将 opacity: 1;
置于悬停状态,它们会很好地淡入淡出。
为了让它们在鼠标经过菜单下方时不出现而可用,您需要将它们的高度、填充和边框设置为 0,然后将它们应用为悬停状态的一部分。
(如果需要不同的边框样式,可以使用 .navMain、.navMain1 等的单独悬停)
当然你也可以去掉底部的所有关键帧
新 CSS:
/*Drop Down On Hover Action*/
.nav > li:hover > div {
opacity: 1;
height: 300px;
padding: 10px 10px;
border:1px solid #777777; // removed borders from .navMain, .navMain1 etc
border: 1px solid black;
}
/*Drop Down Container*/
.nav > li > div {
position: fixed;
left: 0; // added the left: 0; here
top: 337px;
height: 0; // height: 0 when not hovered
opacity: 0; // swapped for display:none;
box-shadow: 2px 4px 4px rgba(0, 0, 0, 0.4);
background: #323552;
background: -moz-linear-gradient(top, #323552, #1a1b24);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#323552), to(#1a1b24));
overflow: hidden;
-webkit-transition: opacity .5s ease-in-out;
-moz-transition: opacity .5s ease-in-out;
-ms-transition: opacity .5s ease-in-out;
-o-transition: opacity .5s ease-in-out;
transition: opacity .5s ease-in-out;
}
您可以仅使用过渡来实现良好的淡入淡出 in/out 效果。我就是这样做的
.sub-menu {
position: absolute;
left: -9999em;
width: 200px;
background-color: #eee;
opacity: 0;
transition: left 0.5s ease 0.5s, opacity 0.5s ease; /* Transition on left position */
}
.main-nav li:hover .sub-menu {
left: 0;
opacity: 1;
transition: opacity 0.5s ease; /* No transition on left position when hovering */
}
如果您使用 left: -9999em
将子菜单放置在屏幕外,然后在 属性 上应用过渡延迟,以便它首先淡出,然后在不可见时移出屏幕。
但是当悬停状态被激活时,您将需要放置另一个转换来覆盖它。这将防止位置 属性 在悬停时动画化
看看这个jsFiddle
根据 Jackson 的回答,下面是使用过渡延迟来实现效果的示例。
此方法在某些方面更简单,因为您不必将所有 padding/border 设置移动到悬停状态。相反,当未悬停时,您将 div 移到最左边,然后在悬停状态下设置 left: 0;
。
必须设置两次过渡(一次用于悬停,一次用于关闭),因为您希望 left: 0;
在悬停时立即生效,并等到不透明度过渡后再移回关闭。
转换的完整语法是transition: <property> <duration> <style: ease> <delay: 0s>
/*Drop Down On Hover Action*/
.nav > li:hover > div {
opacity: 1;
left: 0;
-webkit-transition: opacity .5s ease-in-out;
-moz-transition: opacity .5s ease-in-out;
-ms-transition: opacity .5s ease-in-out;
-o-transition: opacity .5s ease-in-out;
transition: opacity .5s ease-in-out;
}
/*Drop Down Container*/
.nav > li > div {
position: fixed;
left: -9999em;
top: 337px;
opacity: 0;
box-shadow: 2px 4px 4px rgba(0, 0, 0, 0.4);
background: #323552;
background: -moz-linear-gradient(top, #323552, #1a1b24);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#323552), to(#1a1b24));
overflow: hidden;
-webkit-transition: opacity .5s ease-in-out, left .5s ease .5s;
-moz-transition: opacity .5s ease-in-out, left .5s ease .5s;
-ms-transition: opacity .5s ease-in-out, left .5s ease .5s;
-o-transition: opacity .5s ease-in-out, left .5s ease .5s;
transition: opacity .5s ease-in-out, left .5s ease .5s;
}
我还在学习 CSS 样式,我想实现一个 fade-in/fade-out 导航菜单。仔细阅读,我能够成功地将悬停时的淡入编码到我想要的效果。现在我在逻辑上受到挑战,似乎无法想出如何编写该菜单的代码,以便在鼠标不再悬停在特定 class.
上时淡出* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
margin: 0;
background-color: grey;
}
body {
position: fixed;
font-family: Serif, sans-serif;
background: white;
font-size: 62.5%;
color: black;
}
/*Nav Wrapper*/
#navWrapper {
width: 1100px;
position: fixed;
top: 30px;
left: 0px;
right: 0px;
margin: 0px;
margin-left: auto;
margin-right: auto;
}
/*Banner Wrapper*/
.bannerWrap {
width: 1100px;
position: fixed;
left: 0px;
right: 0px;
margin: 0px;
margin-left: auto;
margin-right: auto;
}
/*Banner Styling*/
.banner {
border: 1px solid black;
}
/*Main Nav Box Styling*/
.nav {
position: fixed;
list-style: none;
width: 1102px;
top: 70px;
margin: 30px auto 0px auto;
height: 43px;
padding: 0px 20px 0px 20px;
background: #323552;
background: -moz-linear-gradient(top, #323552, #1a1b24);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#323552), to(#1a1b24));
border: 1px solid #002232;
}
/*Main Nav Button Styling*/
.nav li {
float: left;
text-align: center;
position: relative;
padding: 4px 10px 4px 10px;
margin-right: 30px;
margin-top: 7px;
border: none;
background-color: transparent;
}
/*Main Nav Button Styling*/
.nav > li > a {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
color: #EEEEEE;
display: block;
outline: 0;
text-decoration: none;
text-shadow: 1px 1px 1px #000;
text-transform: uppercase;
background-color: transparent;
}
/*Drop Down On Hover Action*/
.nav > li:hover > div {
display: block;
left: 0;
-webkit-animation: fadein .5s;
/* Safari and Chrome */
-moz-animation: fadein .5s;
/* Firefox */
-ms-animation: fadein .5s;
/* Internet Explorer */
-o-animation: fadein .5s;
/* Opera */
animation: fadein .5s;
}
/*Drop Down Container*/
.nav > li > div {
position: fixed;
right: -1px;
top: 147px;
height: 300px;
display: none;
padding: 10px 10px;
box-shadow: 2px 4px 4px rgba(0, 0, 0, 0.4);
background: #323552;
background: -moz-linear-gradient(top, #323552, #1a1b24);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#323552), to(#1a1b24));
overflow: hidden;
}
/*Drop Down*/
.navMain {
margin: -4px auto;
position: fixed;
text-align: left;
border: 1px solid #777777;
border-top: none;
width: 1060px;
border: 1px solid black;
}
/*Nav Text Styling*/
.dropContent {
background: transparent;
color: #b9b9b9;
}
/*Nav Text Styling*/
.nav-titles {
display: inline-block;
font-size: 1.2em;
font-weight: bold;
text-align: left;
padding-right: 3px;
background: transparent;
}
/*Nav Icons Styling*/
.navIcon {
width: 15px;
height: 15px;
background: transparent;
}
/*Nav Sub Menu*/
.navDropLinks {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
display: block;
padding-bottom: 6px;
background: transparent;
}
/*Nav Sub Menu Hyper*/
.navDropLinks > a {
color: black;
text-decoration: none;
font-weight: bold;
background: transparent;
}
/*Nav Sub Menu Left Column*/
.navLeft {
position: absolute;
left: 10px;
width: 330px;
display: inline-block;
font-size: 11px;
text-align: left;
padding-right: 3px;
background: transparent;
}
/*Nav Sub Menu Center Column*/
.navCenter {
position: absolute;
width: 330px;
left: 357px;
font-size: 11px;
text-align: center;
background: transparent;
}
/*Nav Sub Menu Right Column*/
.navRight {
position: absolute;
right: 10px;
width: 330px;
display: inline-block;
font-size: 11px;
text-align: center;
padding-left: 3px;
background: transparent;
}
/*Nav Sub Menu Focus Images*/
.navImage {
display: inline-block;
width: 275px;
height: 120px;
background: transparent;
}
/*Alt Nav Sub Menus*/
.navMain1 {
margin: -4px auto;
position: fixed;
text-align: left;
border: 1px solid #777777;
border-top: none;
width: 1060px;
/* Gradient background */
background: #F4F4F4;
background: -moz-linear-gradient(top, #EEEEEE, #BBBBBB);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EEEEEE), to(#BBBBBB));
border: 1px solid black;
}
/*Alt Nav Sub Menus*/
.navMain2 {
margin: -4px auto;
position: fixed;
text-align: left;
border: 1px solid #777777;
border-top: none;
width: 1060px;
/* Gradient background */
background: #F4F4F4;
background: -moz-linear-gradient(top, #EEEEEE, #BBBBBB);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EEEEEE), to(#BBBBBB));
border: 1px solid black;
}
/*To Line 270: Keyframes for Nav Animation*/
@keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Firefox */
@-moz-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Safari and Chrome */
@-webkit-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Internet Explorer */
@-ms-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Opera */
@-o-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-moz-keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-webkit-keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-o-keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
<!--Nav Wrapper-->
<div class="bannerWrap">
<img class="banner" src="images/general/site/bannerlg.png">
</div>
<div id="navWrapper">
<ul class="nav">
<li><a href="#">Final Cut</a>
<!--Begin Main Div-->
<div class="navMain">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nave Right-->
</div>
<!--End Main Div-->
</li>
<li><a href="#">News</a>
<!--Begin Main Div-->
<div class="navMain1">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nav Right-->
<!--End Main Div-->
</li>
<li><a href="#">Articles</a>
<!--Begin Main Div-->
<div class="navMain2">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nav Right-->
<!--End Main Div-->
</li>
<li><a href="#">Sets</a>
<!--Begin Main Div-->
<div class="navMain1">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nav Right-->
<!--End Main Div-->
</li>
<li><a href="#">Resources</a>
<!--Begin Main Div-->
<div class="navMain1">
<!--Begin Sub Nav-->
<div class="navLeft"> <span class="nav-titles">DBZ Final Cut: Navi</span>
<br>
<br>
<br>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Home</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Archived News</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> About Us</a>
</div>
<div class="navDropLinks">
<img class="navIcon" src="images/general/site/4staricon.png"><a href="#"> Contact Us</a>
</div>
<br>
<br><span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.</span>
</div>
<!--End Sub Nav-->
<!--Begin Nav Center-->
<div class="navCenter"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End of Nav Center-->
<!--Begin Nav Right-->
<div class="navRight"> <span class="nav-titles">Latest News</span>
<br>
<img class="navImage" src="images/general/setsellsheets/mc.jpg" alt="article image" />
<br> <span class="dropContent">This is some random text that is describing the current article. The picture above will relate to the article. This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.This is filler text.
</span>
</div>
<!--End Nav Right-->
<!--End Main Div-->
</li>
</ul>
<!--End Nav List-->
</div>
我只想要一个简单的淡出效果,希望 不必过多改变我的结构并保持 CSS。
感谢您的帮助!
娜塔莉完全正确,过渡是做到这一点的方法。
唯一需要更改的是 /*Drop Down Container*/
和 /*Drop Down On Hover Action*/
与其使用 display: none;
隐藏 div,不如使用 opacity: 0;
隐藏它们,然后设置不透明度过渡。
要显示它们,您需要做的就是将 opacity: 1;
置于悬停状态,它们会很好地淡入淡出。
为了让它们在鼠标经过菜单下方时不出现而可用,您需要将它们的高度、填充和边框设置为 0,然后将它们应用为悬停状态的一部分。
(如果需要不同的边框样式,可以使用 .navMain、.navMain1 等的单独悬停)
当然你也可以去掉底部的所有关键帧
新 CSS:
/*Drop Down On Hover Action*/
.nav > li:hover > div {
opacity: 1;
height: 300px;
padding: 10px 10px;
border:1px solid #777777; // removed borders from .navMain, .navMain1 etc
border: 1px solid black;
}
/*Drop Down Container*/
.nav > li > div {
position: fixed;
left: 0; // added the left: 0; here
top: 337px;
height: 0; // height: 0 when not hovered
opacity: 0; // swapped for display:none;
box-shadow: 2px 4px 4px rgba(0, 0, 0, 0.4);
background: #323552;
background: -moz-linear-gradient(top, #323552, #1a1b24);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#323552), to(#1a1b24));
overflow: hidden;
-webkit-transition: opacity .5s ease-in-out;
-moz-transition: opacity .5s ease-in-out;
-ms-transition: opacity .5s ease-in-out;
-o-transition: opacity .5s ease-in-out;
transition: opacity .5s ease-in-out;
}
您可以仅使用过渡来实现良好的淡入淡出 in/out 效果。我就是这样做的
.sub-menu {
position: absolute;
left: -9999em;
width: 200px;
background-color: #eee;
opacity: 0;
transition: left 0.5s ease 0.5s, opacity 0.5s ease; /* Transition on left position */
}
.main-nav li:hover .sub-menu {
left: 0;
opacity: 1;
transition: opacity 0.5s ease; /* No transition on left position when hovering */
}
如果您使用 left: -9999em
将子菜单放置在屏幕外,然后在 属性 上应用过渡延迟,以便它首先淡出,然后在不可见时移出屏幕。
但是当悬停状态被激活时,您将需要放置另一个转换来覆盖它。这将防止位置 属性 在悬停时动画化
看看这个jsFiddle
根据 Jackson 的回答,下面是使用过渡延迟来实现效果的示例。
此方法在某些方面更简单,因为您不必将所有 padding/border 设置移动到悬停状态。相反,当未悬停时,您将 div 移到最左边,然后在悬停状态下设置 left: 0;
。
必须设置两次过渡(一次用于悬停,一次用于关闭),因为您希望 left: 0;
在悬停时立即生效,并等到不透明度过渡后再移回关闭。
转换的完整语法是transition: <property> <duration> <style: ease> <delay: 0s>
/*Drop Down On Hover Action*/
.nav > li:hover > div {
opacity: 1;
left: 0;
-webkit-transition: opacity .5s ease-in-out;
-moz-transition: opacity .5s ease-in-out;
-ms-transition: opacity .5s ease-in-out;
-o-transition: opacity .5s ease-in-out;
transition: opacity .5s ease-in-out;
}
/*Drop Down Container*/
.nav > li > div {
position: fixed;
left: -9999em;
top: 337px;
opacity: 0;
box-shadow: 2px 4px 4px rgba(0, 0, 0, 0.4);
background: #323552;
background: -moz-linear-gradient(top, #323552, #1a1b24);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#323552), to(#1a1b24));
overflow: hidden;
-webkit-transition: opacity .5s ease-in-out, left .5s ease .5s;
-moz-transition: opacity .5s ease-in-out, left .5s ease .5s;
-ms-transition: opacity .5s ease-in-out, left .5s ease .5s;
-o-transition: opacity .5s ease-in-out, left .5s ease .5s;
transition: opacity .5s ease-in-out, left .5s ease .5s;
}