看效果,动起来~:

实现:

1. 定义标签,.card是底层盒子,.card2是呈现卡片效果的盒子,然后里面就是一些图片和文字,字体图标的标签了。:

 <div class="card"><div class="card2"><img src="img/haha.gif" alt="haha"><h2>北极光之夜</h2><p class="txt">The aurora borealis.</p><div class="font"><span></span><span></span><span></span></div></div></div>

2. 定义底层盒子.card的基本样式:

 .card {position: relative;width: 250px;height: 300px;transform-style: preserve-3d;cursor: pointer;}

position: relative; 相对定位。
transform-style: preserve-3d; 其子元素获得3D位置。
cursor: pointer; 鼠标样式变为小手。

3. 定义卡片盒子 .card2 的基本样式:

.card2 {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background-color: transparent;border-radius: 15px;transition: all 0.2s;transform-style: preserve-3d;box-shadow: inset 0 0 30px rgb(83, 83, 82);}

position: absolute; 绝对定位。
background-color: transparent; 背景色为透明色。
border-radius: 15px; 边角的弧度。
transiton: all 0.2s;过渡效果。
transform-style:preserve-3d;子元素获得3D位置。
box-shadow: 内阴影。

4. 定义头像图片得基本样式:

.card2 img {position: absolute;top: 30px;left: 75px;width: 100px;height: 100px;border-radius: 50%;transform: translateZ(50px);box-shadow: 0 0 10px rgb(83, 83, 83);}

position:绝对定位。
transform:translateZ(50px);图片向 Z 轴移动 50 px ,这样更有层次感和立体效果。
box-shadow: 0 0 10px rgb(83, 83, 83); 阴影。

5. 标题的基本样式:

 .card2 h2 {font-family: 'Permanent Marker', cursive;position: absolute;top: 150px;width: 100%;height: 28px;font-size: 25px;line-height: 28px; text-align: center;text-shadow: 0 0 5px rgb(177, 174, 174);color: rgb(33, 34, 34);transform: translateZ(50px);}

font-family: 字体样式。
font-size:字体大小。
text-align:文本居中对齐。
text-shadow: 文字阴影。
transform: translateZ(50px);文字也向 Z 轴移动 50 px ,更有层次感和立体效果。

6. 小标题基本样式:

 .txt{font-family: 'Permanent Marker', cursive;position: absolute;top: 180px;width: 100%;line-height: 30px;font-size: 16px;text-align: center;            text-shadow: 0 0 10px rgb(185, 187, 186);transform: translateZ(50px);}

font-family: ‘Permanent Marker’, cursive; 字体样式。字体样式大全
line-height: 30px; 行间距。
…略…
7. 字体图标的基本样式,宽,高等:

  .font{position: absolute;top: 215px;left: 50%;width: 80%;height: 50px;display: flex;align-items: center;justify-content: space-around;transform: translateZ(50px) translateX(-50%);}.font span{display: inline-block;width: 50px;height: 50px;line-height: 50px;text-align: center;font-size: 30px;color: white;border-radius: 50%;background-color: rgb(61, 60, 60);box-shadow: inset 0 0 8px white,inset 0 0 8px white,inset 0 0 8px white,0 0 8px black;        }

display: flex;
align-items: center;
justify-content: space-around; flex布局,主轴平分空间对齐,侧轴居中对齐。
display: inline-block; 转为行内块元素。
box-shadow: 阴影,写多行可以让阴影效果更亮。
…略…

8. js部分,看注释,公式可以结合注释自己理解下:

<script>/* 获取底层盒子标签*/var card = document.querySelector('.card');/*获取卡片标签*/var card2 = document.querySelector('.card2');/*给底层盒子添加鼠标经过mousemove事件*/card.addEventListener('mousemove', function (e) {/* x为鼠标距离页面左侧距离减去底层盒子距离页面左侧距离*/let x = e.clientX - card.offsetLeft;/* left为底层盒子宽度的一半*/let left = card.offsetWidth / 2;/* rotateY 为卡片绕Y轴旋转的大小,旋转度看自己,我除以5,也可以大点或小点 */let rotateY = -(left - x) / 5;/* y为鼠标距离页面顶侧距离减去底层盒子距离页面顶侧距离*/let y = e.clientY - card.offsetTop;/* top为底层盒子高度的一半*/let top = card.offsetHeight / 2;/* rotateX 为卡片绕X轴旋转的大小,旋转度看自己,我除以5,也可以大点或小点 */     let rotateX = (top - y) / 5;/*为卡片添加transform属性 */   card2.style.cssText = `transform: rotateX(${rotateX}deg) rotateY(${rotateY}deg); `})/*给底层盒子添加鼠标离开事件mouseout*/card.addEventListener('mouseout', function (e) {/* 让卡片的transform属性的绕X,Y轴的rotate都是0deg*/card2.style.cssText = `transform: rotateY(0deg) rotateX(0deg); `})</script>

完整代码:

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link href="https://fonts.font.im/css?family=Dancing+Script" rel="stylesheet"><link href="https://fonts.font.im/css?family=Permanent+Marker" rel="stylesheet"><style>@font-face {font-family: 'icomoon';src: url('fonts/icomoon.eot?wr5es');src: url('fonts/icomoon.eot?wr5es#iefix') format('embedded-opentype'),url('fonts/icomoon.ttf?wr5es') format('truetype'),url('fonts/icomoon.woff?wr5es') format('woff'),url('fonts/icomoon.svg?wr5es#icomoon') format('svg');font-weight: normal;font-style: normal;font-display: block;}* {font-family: 'icomoon';margin: 0;padding: 0;box-sizing: border-box;}body {min-height: 100vh;display: flex;justify-content: center;align-items: center;background-image: linear-gradient(120deg,rgb(255, 196, 0) 40%,rgb(31, 223, 175),rgb(0, 195, 255),rgb(183, 0, 255) 60%);}.card {position: relative;width: 250px;height: 300px;transform-style: preserve-3d;cursor: pointer;}.card2 {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background-color: transparent;border-radius: 15px;transition: all 0.2s;transform-style: preserve-3d;box-shadow: inset 0 0 30px rgb(83, 83, 82);}.card2 img {position: absolute;top: 30px;left: 75px;width: 100px;height: 100px;border-radius: 50%;transform: translateZ(50px);box-shadow: 0 0 10px rgb(83, 83, 83);}.card2 h2 {font-family: 'Permanent Marker', cursive;position: absolute;top: 150px;width: 100%;height: 28px;font-size: 25px;line-height: 28px; text-align: center;text-shadow: 0 0 5px rgb(177, 174, 174);color: rgb(33, 34, 34);transform: translateZ(50px);}     .txt{font-family: 'Permanent Marker', cursive;position: absolute;top: 180px;width: 100%;line-height: 30px;font-size: 16px;text-align: center;            text-shadow: 0 0 10px rgb(185, 187, 186);transform: translateZ(50px);}.font{position: absolute;top: 215px;left: 50%;width: 80%;height: 50px;display: flex;align-items: center;justify-content: space-around;transform: translateZ(50px) translateX(-50%);}.font span{display: inline-block;width: 50px;height: 50px;line-height: 50px;text-align: center;font-size: 30px;color: white;border-radius: 50%;background-color: rgb(61, 60, 60);/*    border: 1px solid rgb(173, 172, 172) ; */box-shadow: inset 0 0 8px white,inset 0 0 8px white,inset 0 0 8px white,0 0 8px black;        }</style>
</head><body><div class="card"><div class="card2"><img src="img/haha.gif" alt="haha"><h2>北极光之夜</h2><p class="txt">The aurora borealis.</p><div class="font"><span></span><span></span><span></span></div></div></div><script>var card = document.querySelector('.card');var card2 = document.querySelector('.card2');card.addEventListener('mousemove', function (e) {let x = e.clientX - card.offsetLeft;let left = card.offsetWidth / 2;let rotateY = -(left - x) / 5;let y = e.clientY - card.offsetTop;let top = card.offsetHeight / 2;let rotateX = (top - y) / 5;card2.style.cssText = `transform: rotateX(${rotateX}deg) rotateY(${rotateY}deg); `})card.addEventListener('mouseout', function (e) {card2.style.cssText = `transform: rotateY(0deg) rotateX(0deg); `})</script>
</body></html>

总结:

这个效果涉及的知识点是比较全的,拿来练习很不错~

2021年最大的愿望就是疫情消失。
在生命中还有许多激动人心的事情等着我们去做~

其它文章~:
炫彩流光文字 html+css
气泡浮动背景特效 html+css
简约时钟特效 html+css+js
赛博朋克风格按钮 html+css
响应式卡片悬停效果 html+css
水波加载动画 html+css
导航栏滚动渐变效果 html+css+js
书本翻页 html+css
3D立体相册 html+css
炫彩流光按钮 html+css
记一些css属性总结(一)
Sass总结笔记
…等等

3D酷炫扭动卡片 html+css+js相关推荐

  1. 简单上手H5+CSS前端3D酷炫特效源代码

    简单上手H5+CSS前端3D酷炫特效 个人觉得是这个特效是 入手自己做比较简单的一个前端特效 代码十分少,也很容易看懂,记得点个关注 效果图: H5部分 <!DOCTYPE html> & ...

  2. 纯CSS实现抖音3D酷炫旋转相册

    序言 最近在抖音上看到了一个酷炫3D旋转相册表白效果,博主我表示很是艳羡呐!而且博主也是做前端的,表示不能输给抖音上的小姐姐,于是我就自学了下CSS3的一些动画属性并实现了类似效果,现在分享给大家. ...

  3. HTML5七夕情人节表白网页_圣诞节3d相册(含音乐开关)_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码

    HTML5七夕情人节表白网页❤圣诞节3d相册(含音乐开关)❤ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码 css爱 ...

  4. 炫酷的表白烟花 html+css+js实现的表白烟花特效(程序员专属情人节表白网站)

    ❤ 精彩专栏推荐

  5. 超酷炫粒子背景插件—particles.js

    GitHub-教程-下载 1)先到github中下载particles.js-master.zip,下载下来的文件中有一个demo案例. 2)将demo文件中的particles.min.js.sty ...

  6. 3D环动画css3实现,CSS3 3D酷炫立方体变换动画的实现

    我爱撸码,撸码使我感到快乐! 大家好,我是Counter,本章微博主要利用了CSS3的一些新特性, 主要用到关键帧来使3D图形运动起来,涉及到了一些抽象的思想,立体的想象. 先给大家看看完成的效果,代 ...

  7. 酷炫,用Html5/CSS实现文字阴影

    前两天有一个学html5前端小美女问我一个有关文字阴影的效果怎么去实现.她和我说文字阴影嘛,她也知道text-shadow,.但是却做不出想要的样子,其实css3的新功能是很强大的,不要把你的思想太过 ...

  8. html酷炫电子时钟效果,纯js实现电子时钟特效

    这是一款使用纯js实现电子时钟特效.该电子时钟可以显示时间,星期几,以及是上午还是下午.它使用简单,非常容易集成到项目中. 使用方法 在页面中引入电子时钟的样式文件main.css. HTML结构 该 ...

  9. 酷炫背景粒子插件particles.js星空背景使用示例源码 - 附演示及下载地址

    官方给的例子有点复杂,项目中一般就引一个 JS 文件然后调用好了,简单粗暴,网上很少有想要的效果,而且都没有源码,这里分享一个 文章目录 一.源码地址 二.实现效果 1. 电脑端 2. 手机端 三.源 ...

最新文章

  1. MindSpore图像分类模型支持(Lite)
  2. JVM内存溢出的几种情形
  3. 皮一皮:这真是兄弟能做的事???
  4. JDK源码分析——Java的SPI机制分析与实战
  5. 云游戏之大冒险:5G,等还是不等 | 专访云格致力陈浩
  6. applet实现大文件ftp上传(一)
  7. windows c++ 内存映射大文件问题记录
  8. 图的表示方法和C++实现
  9. 趣挨踢 | 阿里员工吐槽:我在阿里工作五年,面试一个小公司竟然挂了
  10. 详解机器学习的凸优化、图神经网络、强化学习、贝叶斯方法等四大主题
  11. ElasticSearch 入门总结
  12. 计算机电源 3842,UC3842开关电源保护的几个技巧及电路图
  13. CactiEZ-优化操作
  14. 【3】Kubernetes资源管理
  15. Layaverse掌舵人谢成鸿在上海静安国际设计节的主题分享
  16. pycharm中出现这个文件图标左上角出现这个问号怎么解决
  17. Centos7.5之Linux系统安装
  18. 播放器、直播平台、OBS相关测试
  19. 8. 【gRPC系列学习】resetTransport建立TCP连接流程
  20. html 中广告怎么弄,html广告代码添加教程

热门文章

  1. Oracle推进SCN系列:使用oradebug在mount状态下推进SCN
  2. 2010-12-8 学习总结
  3. 浅谈常用交流稳压器的基本特性
  4. NX二次开发 UFUN获取当前工作部件tag UF_ASSEM_ask_work_part
  5. Oracle中rollup函数详解
  6. 体验了基于ChatGPT的谷歌翻译插件后,我把其他翻译插件移除了
  7. java中的split方法
  8. 大端模式和小端模式区别与检测
  9. 10分钟学会python写游戏脚本!Python其实很简单
  10. 2021年全球重型拳击沙袋架收入大约151百万美元,预计2028年达到187.8百万美元