css3导航

勤奋(懒惰)的我又更新了,又是css(js比较难写,css随便糊弄过去就行了),周日过得好快,感觉一觉就睡过去了,天冷得不想起床(‾▽‾)”。

其实css3的特效导航有很多很多种,我只是列了一些给大家参考参考,在曲面阴影里面我就说过:after和:before,其实大多说导航的特效都是依赖于这两兄弟完成的(其他标签也行,不过结构就太复杂了,不推荐),这两兄弟写好样式,然后通过css3的transform来做旋转,放大,缩小,增减,倾斜等等,然后通过鼠标移入:hover或者用js的mouse事件把它的transform设置为初始样式,它就可以通过css3的过渡transition从旋转,放大,缩小,增减,倾斜等状态变成正常状态,即生成了一个过渡动画。
:after和:before的content可以用来插入内容,比如

<span data-hover="home">首页</span>

span::before {
    content: attr(data-hover);
}

那么:before中的类容就是home,当然data-hover不是必须叫这个,这只是一个自定义命名而已,你可以改成其他的,不过准守html5规范,命名还是在前面尽量要有data-
其实这玩意儿也没啥技术难度,多写写很简单的,就不多说什么了,给大家几个参考参考:

.nav1 a span {
    background: #587285;
    box-shadow: inset 0 3px #2f4351;
    transition: background 0.6s;
    transform-style: preserve-3d;
    transform-origin: 0% 50%;
}
.nav1 a span::before {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #fff;
    color: #2f4351;
    content: attr(data-hover);
    transform: rotateX(270deg);
    transition: transform 0.6s;
    transform-origin: 0 0;
}
.nav1 a span:hover{
        background: #2f4351;
}
.nav1 a span:hover::before{
    transform: rotateX(0deg);
}


.nav2 a {
        color: #237546;
        text-shadow: none;
        transition: color 0.3s;
    }
.nav2 a::before {
    top: 0;
    transform: translateY(-10px);
}
.nav2 a::after{
    bottom: 0;
    transform: translateY(10px);
}
.nav2 a::before, .nav2 a::after {
    position: absolute;
    width: 100%;
    height: 2px;
    background: #fff;
    content: '';
    opacity: 0;
    transition: opacity 0.3s, transform 0.3s;
    left: 0;
}
.nav2 a:hover{
    color: #FFFFFF;
}
.nav2 a:hover::before,.nav2 a:hover::after{
    transform: translateY(0px);
    opacity: 1;
}
.nav3 a span{
    position: relative;
    display: inline-block;
    width: 100%;
    background: #e35041;
    transition: transform 0.4s, background 0.4s;
    transform-style: preserve-3d;
    transform-origin: 50% 50% -100px;
}
.nav3 a:hover span{
    transform:rotateY(-90deg);
    background:#b53a2d;
}
.nav3 a span::before {
    position: absolute;
    top: 0;
    left: 100%;
    width: 100%;
    height: 100%;
    background: #b53a2d;
    content: attr(data-hover);
    transition: background 0.4s;
    transform: rotateY(90deg);
    transform-origin: 0 50%;
    pointer-events: none;
}
.nav3 a:hover span::before{
    background:#E35041;
}

效果展示:

本文示例:链接
本文代码地址:链接

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注