今天,我们想与你分享一些菜单悬停效果。 我们希望这一套启发你,并为你的下一个项目提供一些想法。 这些效果是由CSS或仅在anime.js的帮助下提供动力。 有些还使用Charming,用于个别字母效果。
第一种风格是轻微的适应性,在The Feebles上看到的链接悬停效果的再现。“Dustu”的效果受到Flambette上链接悬停效果的启发。
注意:我们正在使用一些现代的CSS技术和属性的演示(网格,flexbox),所以请使用最新的浏览器查看他们。
这个演示由FullStory赞助。
菜单的结构取决于效果,但让我们来看看由美丽的The Feebles网站所启发的结构。 我们称之为“Adsila”:
<nav class="menu menu--adsila"> <a class="menu__item" href="#"> <span class="menu__item-name">Artists</span> <span class="menu__item-label">Explore all artists' portfolios</span> </a> <a class="menu__item" href="#"> <span class="menu__item-name">Exhibitions</span> <span class="menu__item-label">Discover their stories</span> </a> <a class="menu__item" href="#"> <span class="menu__item-name">Schedule</span> <span class="menu__item-label">View our event calendar</span> </a> <a class="menu__item" href="#"> <span class="menu__item-name">Mission</span> <span class="menu__item-label">Read our mission statement</span> </a> <a class="menu__item" href="#"> <span class="menu__item-name">The Gardens</span> <span class="menu__item-label">Get to know our eco village</span> </a> <a class="menu__item" href="#"> <span class="menu__item-name">Buy Tickets</span> <span class="menu__item-label">Purchase event tickets online</span> </a> <a class="menu__item" href="#"> <span class="menu__item-name">Contact</span> <span class="menu__item-label">Get in touch and find us</span> </a> </nav>
有以下所有菜单的常见样式:
.menu {
position: relative;
z-index: 10;
}
.menu__item {
position: relative;
display: block;
outline: none;
margin: 0 0 1.5em;
line-height: 1;
}
.menu__item-name,
.menu__item-label {
position: relative;
display: inline-block;
}
.menu__item-name {
font-size: 1.25em;
}
.menu__item-label {
margin: 0 0 0 0.5em;
}“Adsila” has these specific styles:.menu--adsila {
font-size: 1.15em;
font-family: 'Nunito', sans-serif;
}
.menu--adsila a {
color: #272727;
}
.menu--adsila .menu__item {
margin: 0 0 1em;
}
.menu--adsila .menu__item-name {
padding: 0 0.35em;
font-weight: bold;
line-height: 1.4;
transition: color 0.5s;
transition-timing-function: cubic-bezier(0.2,1,0.3,1);
}
.menu--adsila .menu__item-name::before {
content: '';
position: absolute;
z-index: -1;
width: 100%;
height: 50%;
left: 0;
bottom: 0;
opacity: 0.3;
transform: scale3d(0,1,1);
transform-origin: 0% 50%;
transition: transform 0.5s;
transition-timing-function: cubic-bezier(0.2,1,0.3,1);
}
.menu--adsila .menu__item-label {
font-size: 1em;
letter-spacing: 0.05em;
transform: translate3d(-0.5em,0,0);
transition: transform 0.5s, color 0.5s;
transition-timing-function: cubic-bezier(0.2,1,0.3,1);
}
.menu--adsila .menu__item-label::before {
content: '';
position: absolute;
z-index: -1;
width: 25%;
height: 1px;
left: 0.05em;
top: 1.25em;
opacity: 0.3;
transform: scale3d(0,1,1);
transform-origin: 100% 50%;
transition: transform 0.5s;
transition-timing-function: cubic-bezier(0.2,1,0.3,1);
}
.menu--adsila .menu__item:nth-child(odd) .menu__item-name::before,
.menu--adsila .menu__item:nth-child(odd) .menu__item-label::before {
background: #fe628e;
}
.menu--adsila .menu__item:nth-child(even) .menu__item-name::before,
.menu--adsila .menu__item:nth-child(even) .menu__item-label::before {
background: #6265fe;
}
/* Hover */
.menu--adsila .menu__item:nth-child(odd):hover,
.menu--adsila .menu__item:nth-child(odd):focus {
color: #fe628e;
}
.menu--adsila .menu__item:nth-child(even):hover,
.menu--adsila .menu__item:nth-child(even):focus {
color: #6265fe;
}
.menu--adsila .menu__item:hover .menu__item-name::before,
.menu--adsila .menu__item:focus .menu__item-name::before,
.menu--adsila .menu__item:hover .menu__item-label::before,
.menu--adsila .menu__item:focus .menu__item-label::before {
transform: scale3d(1,1,1);
}
.menu--adsila .menu__item:hover .menu__item-label,
.menu--adsila .menu__item:focus .menu__item-label {
transform: translate3d(0,0,0);
}
.menu--adsila .menu__item:hover .menu__item-label::before,
.menu--adsila .menu__item:focus .menu__item-label::before {
transition-timing-function: ease;
transform-origin: 0% 50%;
}我们通过移动标签并在标签上留下了一条线来添加了一些变化。 正如你所看到的,我们不会为每个项目使用不同的颜色,而是我们区分偶数和奇数。
我们希望你喜欢这些风格,并启发您的灵感。