我尝试创建一个顶级导航,默认情况下显示为没有任何文字的小圆圈。在悬停时,我希望有问题的圆圈增大/扩展,并显示菜单项的文本,以及下拉菜单(如果适用)。理想情况下具有易于进/出效果。此外,在当前设置中,我不太确定将子菜单放在HTML中的位置..
图片1:default & on hover appearance
一些要求:
我有jsfiddle here,但我仍然坚持如何继续并获得所需的效果。也许我从一个完全错误的角度接近这个。请帮忙!
$(".nav1").hover(function () {
$(".item1").stop(true,true).delay(200).show(100);
}, function () {
$(".item1").stop(true,true).delay(200).hide(0);
});
$(".nav2").hover(function () {
$(".item2").stop(true,true).delay(200).show(100);
}, function () {
$(".item2").stop(true,true).delay(200).hide(0);
});

.navContainer {
display: block;
position: absolute;
width: 100%;
height: 100px;
background-color: #fff;
}
.circleContainer {
float:left;
position: relative;
width: 50px;
padding-bottom: 50px; /* = width for a 1:1 aspect ratio */
margin-right: 10px;
background: transparent;
overflow: hidden;
background-color: #eee;
border-radius: 50%;
}
.circleContent {
position: absolute;
height: 100%; /* = 100% - 2*5% padding */
width: 100%; /* = 100% - 2*5% padding */
padding: 0%;
}
.circleTable {
display: table;
width: 100%;
height: 100%;
}
.circleTableCell {
display: table-cell;
vertical-align: middle;
position: relative;
text-align: center;
font-size: 0.75em;
font-weight: 700;
}
.hide {
display: ;
}
.item1, .item2 {
display: none;
top: 50%;
left: 50%;
vertical-align: middle;
text-align: center;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div class="navContainer">
<div class="circleContainer nav1">
<div class="circleContent">
<div class="circleTable">
<a href="/link1" class="circleTableCell">
<span class="item1">Item 1</span>
</a>
</div>
</div>
</div>
<div class="circleContainer nav2">
<div class="circleContent">
<div class="circleTable">
<a href="/link1" class="circleTableCell">
<span class="item2">Item 2</span>
</a>
</div>
</div>
</div>
</div>
&#13;
答案 0 :(得分:0)
我得到了以下内容,希望有所帮助。
part1的。对于要缩放的圆圈,请在悬停时使用以下内容:
-webkit-transform: scale(1.75);
transform: scale(1.75);
2部分。对于子菜单,您需要先添加它们然后在悬停时显示(您可以使用与item1 item2
等相同的类。
您可以使用js推开左/右侧菜单。
$(".nav1").closest('.wraper').hover(function() {
$(".item1").stop(true, true).delay(200).show(100);
}, function() {
$(".item1").stop(true, true).delay(200).hide(0);
});
$(".nav2").closest('.wraper').hover(function() {
$(".item2").stop(true, true).delay(200).show(100);
}, function() {
$(".item2").stop(true, true).delay(200).hide(0);
});
$(".nav3").closest('.wraper').hover(function() {
$(".item3").stop(true, true).delay(200).show(100);
}, function() {
$(".item3").stop(true, true).delay(200).hide(0);
});
.navContainer {
text-align: center;
display: inline-block;
width: 100%;
height: 100px;
top: 50px;
}
.circleContainer {
position: relative;
width: 50px;
margin: 25px;
padding-bottom: 50px;
/* = width for a 1:1 aspect ratio */
background: transparent;
overflow: hidden;
background-color: #eee;
border-radius: 50%;
-webkit-transition: all 200ms ease-in-out;
transition: all 200ms ease-in-out;
}
.wraper:hover .circleContainer {
-webkit-transform: scale(1.75);
transform: scale(1.75);
}
.circleContent {
position: absolute;
height: 100%;
/* = 100% - 2*5% padding */
width: 100%;
/* = 100% - 2*5% padding */
padding: 0%;
}
.circleTable {
display: table;
width: 100%;
height: 100%;
}
.circleTableCell {
display: table-cell;
vertical-align: middle;
position: relative;
text-align: center;
font-size: 0.75em;
font-weight: 700;
}
.item1,
.item2,
.item3 {
display: none;
vertical-align: middle;
text-align: center;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
}
.wraper {
width: 100px;
display: inline-block;
}
ul {
text-align: center;
width: 100%;
list-style: none;
position: relative;
float: left;
}
ul ul {
display: inline-block;
position: relative;
margin-top: 25px;
margin-left: 25px;
padding: 0;
background: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div class="navContainer">
<div class="wraper">
<div class="circleContainer nav1">
<div class="circleContent">
<div class="circleTable">
<a href="/link1" class="circleTableCell">
<span class="item1">Item 1</span>
</a>
</div>
</div>
</div>
<ul class="item1">
<li>
<ul>
<li><a href="#">Sub Menu 1</a></li>
<li><a href="#">Sub Menu 2</a></li>
<li><a href="#">Sub Menu 3</a></li>
</ul>
</li>
</ul>
</div>
<div class="wraper">
<div class="circleContainer nav2">
<div class="circleContent">
<div class="circleTable">
<a href="/link1" class="circleTableCell">
<span class="item2">Item 2</span>
</a>
</div>
</div>
</div>
<ul class="item2">
<li>
<ul>
<li><a href="#">Sub Menu 1</a></li>
<li><a href="#">Sub Menu 2</a></li>
<li><a href="#">Sub Menu 3</a></li>
</ul>
</li>
</ul>
</div>
<div class="wraper">
<div class="circleContainer nav3">
<div class="circleContent">
<div class="circleTable">
<a href="/link1" class="circleTableCell">
<span class="item3">Item 3</span>
</a>
</div>
</div>
</div>
<ul class="item3">
<li>
<ul>
<li><a href="#">Sub Menu 1</a></li>
<li><a href="#">Sub Menu 2</a></li>
<li><a href="#">Sub Menu 3</a></li>
</ul>
</li>
</ul>
</div>
</div>