web前端进阶<7>:3d图像翻转效果

这篇具有很好参考价值的文章主要介绍了web前端进阶<7>:3d图像翻转效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这几天又闲着无聊,自己学的东西又有一点不牢固了,需要写一个小程序来巩固一下,相信大家也时有同感吧!那么这一期就给大家带来一个炫酷的相册3d翻转效果,如果搭上炫酷的文字和动画那肯定是高端、霸气上档次的:

web前端进阶<7>:3d图像翻转效果

前面我也给大家制作过一个很常见的3d旋转相册:
(168条消息) web前端进阶:<2>转换的补充、动画和小案例_编程学渣ズ的博客-CSDN博客_前端动画小案例https://blog.csdn.net/aiwanchengxu/article/details/124586701

这个小案例是网上非常常见的一个小程序,就是使用一个大盒子里面放六个小盒子,通过transform来将这几个面移动变化到各个面上,因为里面放了图片,加上动画效果就可以实现这种旋转的、炫酷的魔方效果;

这一个小程序其实可以看做是之前的那个魔方放大了,我们只显示他的一个面,然后通过js代码来控制这个魔方的旋转即可,只是在之前的案例上进行了升级而已,废话不多说,我们上代码:

1、html部分:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3d-cube</title>
    <link rel="stylesheet" href="./iconfont/iconfont.css">
    <link rel="stylesheet" href="./css/cube.css">
    <audio src="./resource/music/爱江山更爱美人(Live) - 周华健.mp3" autoplay></audio>
</head>

<body>
    <div class="last">
        <span class="iconfont icon-medianext"></span>
    </div>
    <div class="next">
        <span class="iconfont icon-medianext"></span>
    </div>
    <div class="contain">
        
        <div>
            <span>人生短短几个秋</span>
            <img src="./resource/img/wallpaper01.jpg" alt="">
        </div>
        <div>
            <span>不醉不罢休</span>
            <img src="./resource/img/wallpapers02.png" alt="">
        </div>
        <div>
            <span>东边的美人,西边黄鹤楼</span>
            <img src="./resource/img/wallpaper03.jpg" alt="">
        </div>
        <div>
            <span>人间四月芳菲尽</span>
            <img src="./resource/img/wallpapers04.png" alt="">
        </div>
    </div>
    <script src="./js/3dcube.js"></script>
</body>

</html>

 布局很简单,一个大盒子里面同样放了四个小盒子,为什么是四个?因为我们没有左右旋转,如果想要实现的小伙伴也可以自己动手尝试一下,原理是一模一样的;这里除了这四个带有照片的盒子外,还有两个盒子,last和next,他们是控制魔方旋转的按钮,我们可以直接使用固定定位定在浏览器的视口上;其实这里的文字也是定位定的;

2、重点就是这个css样式

* {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
}
body {
  perspective: 1000px;
  overflow: hidden;
}
body .last {
  position: fixed;
  left: 50%;
  top: 10px;
  transform: translateX(-50%) rotateZ(-90deg);
  z-index: 99;
}
body .last span {
  font-size: 50px;
  color: orange;
}
body .next {
  position: fixed;
  bottom: 50px;
  left: 50%;
  z-index: 99;
  transform: translateX(-50%) rotateZ(90deg);
}
body .next span {
  font-size: 50px;
  color: orange;
}
body .contain {
  width: 100%;
  height: 800px;
  margin: 0px auto;
  transition: all 1s linear;
  transform-style: preserve-3d;
  position: relative;
  /*        &:hover{
        transform: rotateX(360deg);
       } */
}
body .contain div {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0px;
  left: 0px;
}
@keyframes font {
  from {
    text-shadow: 0 0 10px lightblue, 0 0 20px lightblue, 0 0 30px lightblue, 0 0 40px skyblue, 0 0 50px skyblue, 0 0 60px skyblue;
  }
  to {
    text-shadow: 0 0 5px lightblue, 0 0 10px lightblue, 0 0 15px lightblue, 0 0 20px skyblue, 0 0 25px skyblue, 0 0 30px skyblue;
  }
}
body .contain div span {
  font-size: 50px;
  z-index: 100;
  cursor: pointer;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #cce7f8;
  animation: font 0.5s alternate infinite;
}
body .contain div:nth-child(1) {
  transform: translateZ(400px);
}
body .contain div:nth-child(2) {
  transform: translateZ(-400px);
}
body .contain div:nth-child(3) {
  transform: translateY(-400px) rotateX(90deg);
}
body .contain div:nth-child(4) {
  transform: translateY(400px) rotateX(-90deg);
}
body .contain div img {
  width: 100%;
  height: 100%;
}

有很多人会在调整盒子的位置的时候可能会晕头转向,有时候通过位移旋转变换啊总是不能将盒子移到自己想要的位置,这里我也常常会这样,我做完之后才发现,我是喜欢一次性将所有的盒子都放到脑子里想象的那个位置,看似能一次性成功,其实是犯了大忌,我们对于这种很容易搞错的地方应该一步一步来,我们可以先移动一个盒子,在将这个盒子作为参照物来移动其他的盒子,这样就不容易晕头;

那么css的样式要注意的就是如何实现这种3d效果呢?首先body需要开启透视:

 perspective: 1000px;
  overflow: hidden;

这里我给的视距是1000px,表示用户和z面的距离,z面是啥面呢?你可以将你的屏幕左上角看做是圆点,向下是y正半轴,向右是x正半轴,那么z的正半轴就是指向你的,也就是你的电脑屏幕就是z平面了;这里设置盒子的宽是1000px 高是800px,如果设置为向前向后移动500px的话,我的盒子就会出现空隙,这个高不够长,盖不住;所以可以看到这里就是设置的400px,向前向后移动400px刚刚好盒子里面就是800px,也就是盒子的高,所以这样的放置就是刚刚盖住;

那么视距的作用?

其实就是实现了近大远小的效果,如果你将视距设置得很小,那么你可能在盒子里面看盒子,设置很大就可能是在很远的地方看盒子,但能明显的看到近大远小的效果;

还有一个就是开启3d空间了:

transform-style: preserve-3d;

先要实现3d效果,这个属性千万不要放错,放错之后变换就不会出现3d的变化,可能是一个很奇怪的变化,这个属性需要放在父元素上面,而且是一个需要发生变换(旋转、平移、缩放效果)的父元素上面,子元素会跟着发生变换,所以有了这个属性就有了3d效果了,要记得使用定位来确定盒子的位置,不然的话也是会出问题的;

3、js部分

let contain = document.getElementsByClassName('contain')[0]
let last = document.getElementsByClassName('last')[0]
let next = document.getElementsByClassName('next')[0]
console.log('开始')
let num = 0
last.addEventListener('click',()=>{
    console.log('上翻页')
    num++
    contain.setAttribute('style','transform:rotateX('+(-90*num)+'deg)!important')
})
let nextnum = 0
next.addEventListener('click',()=>{
    console.log('下翻页')
    num--
    contain.setAttribute('style','transform:rotateX('+(-90*num)+'deg)!important')
})

js就是负责实现按钮点击之后切换盒子位置的效果,这里我通过类名获取到了相关的元素,然后添加监听事件,在里面添加变化属性就可以了,这里使用到了一点点小技巧,就是如何记录盒子翻转的角度,代码很少,看一眼就懂,我就不过多赘述;

那么今天的分享就到这里,喜欢的小伙伴就点个赞再走吧!文章来源地址https://www.toymoban.com/news/detail-403537.html

到了这里,关于web前端进阶<7>:3d图像翻转效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML/CSS实现3D翻转页面效果

    下面是一个基本的例子,展示了如何使用CSS和HTML实现一个3D页面翻转效果: HTML部分: CSS部分: 在这个例子中,我们使用一个包含两个面(正面和背面)的容器div。通过CSS的 transform 属性和 rotateY 函数,我们实现了容器在鼠标悬停时的旋转效果。 你可以根据自己的需求调整容

    2024年01月24日
    浏览(33)
  • 这几天chatGPT为我赚了多少钱

    大家好,我是北妈。 一、 这些天 chaGPT  有多火你们也看到了。都不用我发文教育你们,给你们传播了,各大媒体,朋友圈都是它的消息了吧。 至于利用它为北妈我赚了多少钱,其实不少了,通过各种渠道和方法。以后可能会更多,因为早就是优势,认知的优势。 如今我从

    2023年04月22日
    浏览(33)
  • 创建一个具有背景轮播和3D卡片翻转效果的个人名片网页

    目录 项目展示 图片展示 前言 项目目标 项目目标 步骤 3:CSS 样式 步骤 4:JavaScript 动画 项目源码 知识点介绍 (大佬请绕道) HTML 结构的构建 2. CSS 样式的设计 3. JavaScript 动画的实现 4. 背景图轮播的逻辑 5. CSS 3D变换的使用 结语 项目展示 点击下面链接(第一次打开可能会有

    2024年02月08日
    浏览(32)
  • 记录--前端实现翻转图像

    翻转图像是在视觉上比较两个不同图像的常用方法。单击其中一个将翻转它,并显示另一个图像。 布局结构如下: 它有正面和背面两面,放置在内部容器内。我们希望它们彼此重叠。最好的方法是使用容器  relative  的样式,并绝对定位它们。 最初,正面显示在背面的上部

    2024年01月19日
    浏览(19)
  • 微信小程序 - 签到打卡旋转 3D 动画功能,仿钉钉打卡签到时 “容器“ 动画翻转效果(超详细完整示例源码教程,代码简洁、丝滑流畅、示例复制即用)

    由于微信小程序的动画与普通 CSS 动画稍有不同,所以网上基本没有这方面的功能源码。 本文 实现了微信小程序开发中,类似钉钉签到打卡时的动画效果,圆形硬币形状的翻转功能, 您可以直接复制示例源码,功能都做好了只需要把你的内容放进入即可。 如下图所示,当点

    2024年02月11日
    浏览(58)
  • 【动画进阶】神奇的 3D 磨砂玻璃透视效果

    最近,群友分享了一个很有意思的效果: 原效果的网址:frosted-glass。该效果的几个核心点: 毛玻璃磨砂效果 卡片的 3D 旋转跟随效果 整体透明度和磨砂感、以及卡片的 3D 形态会随着用户移动鼠标而进行动态变化 原效果实现的较为复杂,并且实际体验卡顿感较强。本文,我

    2024年02月14日
    浏览(30)
  • 【动画进阶】有意思的 Emoji 3D 表情切换效果

    最近,群里面的同学发了这么一个非常有意思是动画效果: 原效果地址 -- CodePen Demo -- Letter Hop 当然,原效果,主要使用了 GSAP 动画库以及一个 3D 文字 JavaScript 库: 但是,这个效果,其实本身并不复杂。 本文,我们将不借助任何动画库,尝试用最简单的 CSS 和 JavaScript 代码还

    2024年02月14日
    浏览(26)
  • JavaScript实现背景图像切换3D动画效果

    🐱 个人主页: 不叫猫先生 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫优质专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料以及文中源

    2023年04月20日
    浏览(41)
  • 前端效果积累 |别具一格的3D酷炫轮播图效果收集

    📌 个人主页 :个人主页 ​🧀 推荐专栏 :前端开发成神之路 --【 这是一个为想要 入门和进阶前端开发专门开启的精品专栏 !从 个人到商业的全套开发教程 ,实打实的干货分享,确定不来看看? 😻😻】 📝 作者简介 : 从web开发,再到大数据算法,踩过了无数的坑,用

    2024年02月16日
    浏览(29)
  • WEB 3D技术 three.js 3D贺卡(2) 加入天空与水面效果

    上文 WEB 3D技术 three.js 3D贺卡(1) 搭建基本项目环境 我们简单搭了一个贺卡雏形 然后 我们要引入一个hdr的一个天空的效果 所以 我们需要在代码中导入 RGBELoader 这里 大家可以选择下载我的hdr资源 WEB 3D技术 three.js 3D贺卡 天空 hdr资源 下载好之后呢 我们在外面套一个 xhdr 文件夹

    2024年01月18日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包