我想有一个平滑的动画过渡1& 2,触发1时显示。我在这里完成了这个:http://codepen.io/jacksonbeale/pen/epjcs使用负上边距,但问题是1的高度会根据导航中的项目数量而有所不同,所以这对我不起作用。
nav {
margin-top:-95px;
width:100%;
box-sizing:border-box;
z-index:5;
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
&.showmenu {
margin-top:0;
}
}
我当前的项目不允许我使用jQuery,并且任何js都需要由其他开发人员编写。我只控制html& CSS。我似乎有点讨论这个问题所以如果有人能提出一个关于纯css方法的建议来完成我需要的东西,那将会很棒。
答案 0 :(得分:4)
你可以这样做:
position:absolute;
不一致),您可以使用translateY通过translateY(-100%)
/ {{1}来切换菜单。 } <强> DEMO 强>
HTML:
translateY(0)
CSS:(抱歉,我不熟悉SCSS)
<div class="test">
<div><span class="menulink">Menu</span></div>
<div class="content">
<nav>
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Three</li>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Three</li>
</ul>
</nav>
<div>content</div>
</div>
</div>
jQuery:
.test {
width:400px;
position:relative;
> div, nav {
border:3px solid #CCC;
}
> div:first-child {
height:30px;
z-index:10;
background:teal;
position:relative;
z-index:1;
span {
float:right;
display:table;
height:100%;
&:hover {
cursor:pointer;
}
}
}
nav {
width:100%;
box-sizing:border-box;
z-index:5;
&.showmenu {
margin-top:0;
}
}
}
.content > div{
min-height:200px;
position:absolute;
left:-3px; top:100%;
width:100%;
border:3px solid #ccc;
}
.content{
z-index:0;
transform: translateY(-100%);
-webkit-transform: translateY(-100%);
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
.content.showmenu{
transform: translateY(0);
-webkit-transform: translateY(0);
}
答案 1 :(得分:0)
在项目中添加此代码。
像这样设置css样式。
<style>
.menu {
max-width: 500px;
background-color: #000;
}
.menu a{
color: #fff;
text-decoration: none;
}
.menu ul{
padding:0px;
position:relative;
z-index:999;
}
.menu > ul > li{
display: inline;
position: relative;
}
.menu > ul > li a{
display: inline-block;
padding: 8px 15px;
}
.menu li ul{
top: 120%;
opacity: 0;
visibility: hidden;
position: absolute;
top: 0;
width:100%;
max-width: 150px;
transition: all 0.5s ease 0s;
-webkit-transition: all 0.5s ease 0s;
background-color: rgba(0, 0, 0, 0.8);
}
.menu li ul li{
position: relative;
list-style: none;
}
.menu li:hover > ul{
opacity:1;
visibility:visible;
top:100%;
}
.menu ul ul > li > ul{
top: 0% !important;
left: 120%;
}
.menu ul ul li:hover > ul{
left: 100%;
}
.no-padding{
padding-left: 0px;
padding-right: 0px;
}
</style
设置HTML代码就像这样。
<nav class="menu">
<ul>
<li><a href="#">Home</a>
<ul>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a>
<ul>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">About</a></li>
<li><a href="#">contact</a></li>
</ul>
</nav>