HTML+CSS实现菜单的3D翻转特效

简介: HTML+CSS实现菜单的3D翻转特效

HTML+CSS实现菜单的3D翻转特效

效果图如下:

HTML部分源代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>翻转特效</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <nav>
        <div class="item">
            <a href="#">
                <p class="cn">首页</p>
                <p class="en">INDEX</p>
            </a>
        </div>
        <div class="item">
            <a href="#">
                <p class="cn">博客</p>
                <p class="en">BLOG</p>
            </a>
        </div>
        <div class="item">
            <a href="#">
                <p class="cn">关于</p>
                <p class="en">ABOUT</p>
            </a>
        </div>
    </nav>
</body>
</html>

CSS部分源代码如下:

:root {
    --background-color: #2c3e50;
    --color1: #7591AD;
    --color2: #9729ad;
    --color3: #db2159;
}
* {
    margin: 0;
    padding: 0;
}
html {
    font-size: 14px;
}
body {
    width: 100vw;
    height: 100vh;
    background-color: var(--background-color);
    display: flex;
    justify-content: center;
    align-items: center;
}
nav {
    width: 680px;
    background-color: var(--color1);
}
.item {
    width: 200px;
    height: 100px;
    margin: 10px;
    float: left;
    perspective: 4000px;
}
.item a {
    display: block;
    height: 100px;
    text-decoration: none;
    color: #fff;
    font-size: 1.5em;
    /* 开启3d */
    transform-style: preserve-3d;
    /* 通过变换角度可以发现刚才的夹角好像一个打开的笔记本电脑 */
    /* transform: rotateX(10deg) rotateY(10deg) translateZ(50px); */
    /* 增加z轴上的位移主要是为了让hover旋转式沿着夹角形成的 */
    /* 虚拟立方体中心轴旋转而不是当前cn元素的这一面的中心 */
    transform: translateZ(50px);
    transition: 0.5s;
}
.item a p {
    height: 100px;
    line-height: 100px;
    text-align: center;
}
.item a p.cn {
    background-color: var(--color2);
}
.item a p.en {
    background-color: var(--color3);
    /* en元素沿顶端x轴逆向旋转90度
    形成于cn元素垂直的夹角,类似于形成一个缺两面的正方体
    */
    transform: rotateX(-90deg);
    transform-origin: top;
}
.item a:hover{
    /* 当鼠标移动到a元素时旋转,沿X轴旋转顺时针90度 */
    /* 因为当前旋转基点在夹角形成的虚拟正方体的中心,所有看起来就像旋转
    立方体的两个面一样 */
    /* 出现偏移问题是因为顺序原因,具体的后续查了下文档发现,变换动作的
    顺序会影响最终呈现的效果 */
    transform: rotateX(90deg) translateZ(50px) ;
}


相关文章
|
17天前
|
前端开发 JavaScript 开发工具
【HTML/CSS】入门导学篇
【HTML/CSS】入门导学篇
23 0
|
8天前
|
数据采集 前端开发 网络协议
如何使用代理IP通过HTML和CSS采集数据
如何使用代理IP通过HTML和CSS采集数据
|
12天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
18 1
|
12天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
19天前
|
JSON JavaScript 前端开发
js是什么、html、css
js是什么、html、css
|
20天前
|
XML 前端开发 JavaScript
css和html
【4月更文挑战第7天】css和html
13 0
|
25天前
|
人工智能 前端开发 JavaScript
【前端设计】HTML+CSS+JavaScript基本特性
【前端设计】HTML+CSS+JavaScript基本特性
|
1月前
|
JavaScript 前端开发 开发者
编程笔记 html5&css&js 071 JavaScript Symbol 数据类型
编程笔记 html5&css&js 071 JavaScript Symbol 数据类型
|
1月前
|
前端开发 JavaScript
从0到1:用HTML、CSS和JavaScript构建一个简单的待办事项列表
从0到1:用HTML、CSS和JavaScript构建一个简单的待办事项列表
26 0
|
1月前
|
JavaScript 前端开发
编程笔记 html5&css&js 079 JavaScript 循环语句
编程笔记 html5&css&js 079 JavaScript 循环语句