css3------Creative Link(2)

我们模仿的是这个3D按钮(链接

这是这一块的结构

<section class="secondLink">
            <nav class="effect2">
                <a href="">
                    <span class="ratatouille">
                        ratatouille
                    </span>
                </a>
                <a href="">
                    <span class="lassitude">
                        lassitude
                    </span>
                </a>
                <a href="">
                    <span class="murmurous">
                        murmurous
                    </span>
                </a>
                <a href="">
                    <span class="palimpsest">
                        palimpsest
                    </span>
                </a>
                <a href="">
                    <span class="assemblage">
                        assemblage
                    </span>
                </a>
            </nav>
        </section>

一.使用伪元素before的原因

    这里我刚开始自己动手做的时候是想利用两块span,将它变成inline-block搭建一个仅展现两个面的长方体,但是这样的话我们考虑鼠标hover的时候就需要两个span都进行翻转了,会比较麻烦,所以我们利用伪元素(其实before和after都可以),因为伪元素相对与他的父级是固定的,意思就是当这个span翻转的时候,这个伪元素构造的这个长方形的另一个面就会跟着翻转。

所以下面是我们的span::before的样式:

.secondLink nav a span::before{
    width: 100%;
    height: 100%;
    content: attr(class);
    position: absolute;
    left: 0;
    top: 100%;
    -webkit-transform: rotateX(-90deg);
	-moz-transform: rotateX(-90deg);
    transform: rotateX(-90deg);
    -webkit-transition: backgroundcolor 0.3s;
	-moz-transition: backgroundcolor 0.3s;
    transition: backgroundcolor 0.3s;
    -webkit-transform-origin: 50% 0;
	-moz-transform-origin: 50% 0;
    transform-origin: 50% 0;
    background: #0965a0;
}

这里有个transform-origin: 50% 0;  我们放到后面span的时候讲

这里的attr(class),表示获取这个元素的class属性值,因为这里的5个a标签都是一样的效果,所以这样效率会更高

二.transform-origin: 50% 0

这其实是一个比较简单的属性,一定是配合transform的,但是在这里我一开始没有明白他的作用,所以我自己探究了一会(可以参考资料

我们知道,transform-origin后面可以跟三个值,分别代表x,y,z,默认是transform-origin:50% 50% 0,就是是默认以一个图形的

中心做旋转,如果没有加这个属性值的话:

其实它是以:

这条线为旋转线的,但是我们加了这个属性值以后,旋转线就变成了:

最上面的那条边,所以才会出现原来的效果

三.细节

.secondLink nav a:hover span{
    /* -webkit-transform: rotateX(90deg) translateY(-22px);
	-moz-transform: rotateX(90deg) translateY(-22px); */
    transform: rotateX(90deg) translateY(-22px);
}
.secondLink nav a:hover span::before{
    background: #28a2ee;
}

这是两个hover之后的样式,但是我们知道,span元素确实需要旋转90°,但是为什么还要translateY(-22px),沿着y轴移动22个像素呢,我们将旋转速度放慢了看:

发现其实旋转的时候刚开始最上面的那个面是会向上移动一点的,这样看起来的旋转效果更好,所以我们需要加上这个平移

所以其实小小的一个旋转按钮会有很多的知识点

猜你喜欢

转载自blog.csdn.net/scwMason/article/details/82945190