css3加js做一个简单的3D行星运转效果实例代码

下面是一个简单的 3D 行星运转效果的实例代码,使用了 CSS3 和 JavaScript。

HTML 结构

<div class="container">
  <div class="planet"></div>
</div>

上述代码中,我们创建了一个容器 div 元素,用于容纳行星。我们在容器中创建了一个 div 元素,用于表示行星。

CSS 样式

.container {
  width: 300px;
  height: 300px;
  perspective: 1000px;
}

.planet {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #ffcc00;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) rotateY(0deg) rotateZ(0deg);
  animation: rotate 10s linear infinite;
}

@keyframes rotate {
  0% {
    transform: translate(-50%, -50%) rotateY(0deg) rotateZ(0deg);
  }
  100% {
    transform: translate(-50%, -50%) rotateY(360deg) rotateZ(360deg);
  }
}

上述代码中,我们将容器的宽度和高度设置为 300px,以使其具有一定的大小。我们使用 perspective 属性来定义 3D 效果的视角。我们将行星的宽度和高度设置为 50px,以使其具有一定的大小。我们使用 border-radius 属性来定义行星的圆角。我们将其 position 属性设置为 absolute,以使其相对于容器进行定位。我们使用 transform 属性来定义行星的位置和旋转角度。我们使用 animation 属性来定义行星的旋转动画。我们使用 @keyframes 规则来定义旋转动画的关键帧。

JavaScript 代码

var planet = document.querySelector('.planet');
var mouseX = 0;
var mouseY = 0;

document.addEventListener('mousemove', function(event) {
  mouseX = event.clientX;
  mouseY = event.clientY;
});

setInterval(function() {
  var centerX = window.innerWidth / 2;
  var centerY = window.innerHeight / 2;
  var deltaX = mouseX - centerX;
  var deltaY = mouseY - centerY;
  var percentX = deltaX / centerX;
  var percentY = deltaY / centerY;
  var degY = percentX * 180;
  var degZ = -percentY * 180;
  planet.style.transform = 'translate(-50%, -50%) rotateY(' + degY + 'deg) rotateZ(' + degZ + 'deg)';
}, 10);

上述代码中,我们使用 document.querySelector() 方法获取行星元素。我们使用 document.addEventListener() 方法来监听鼠标移动事件,以获取鼠标的位置。我们使用 setInterval() 方法来定时更新行星的位置和旋转角度。我们计算鼠标相对于窗口中心的偏移量,并将其转换为旋转角度。我们使用行星元素的 style.transform 属性来设置行星的位置和旋转角度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:css3加js做一个简单的3D行星运转效果实例代码 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • CSS网页布局入门教程8:三列浮动中间列宽度自适应

    下面我将为你详细讲解“CSS网页布局入门教程8:三列浮动中间列宽度自适应”的完整攻略。 一、什么是三列浮动中间列宽度自适应布局? 三列浮动中间列宽度自适应布局指的是一个网页布局中有三列,其中左右两列宽度固定,中间列的宽度则根据页面的大小自适应调整。这种布局常用于网页中要展示大量信息的情况,如新闻页面或个人博客。 二、如何实现三列浮动中间列宽度自适应布局? 实…

    css 2023年6月9日
    00
  • JavaScript实现弹出窗口效果

    以下是详细讲解“JavaScript实现弹出窗口效果”的攻略: 简介 弹出窗口是Web界面设计中常用的一种交互方式,它可以通过弹出一个小窗口或浮层实现对用户的提示、确认等操作。在HTML、CSS和JavaScript的配合之下,我们可以轻松地实现各种弹出窗口效果。 弹出窗口的实现 使用原生JavaScript实现 原生JavaScript实现弹出窗口效果可以…

    css 2023年6月10日
    00
  • 使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条

    使用Bootstrap实现表格隔行变色及hover变色并在需要时出现滚动条,可以通过以下几个步骤进行: 1. 引入Bootstrap和CSS文件 首先,需要在HTML文档中引入Bootstrap样式库和CSS文件,可以通过以下代码进行引入: <link rel="stylesheet" href="https://cdn.…

    css 2023年6月10日
    00
  • DreamWeaver操作技巧大全(16条技能)

    首先是该攻略的完整攻略: DreamWeaver操作技巧大全(16条技能) 前言 DreamWeaver是一款常用于Web开发的集成开发环境。了解并掌握DreamWeaver的操作技巧,可以提高开发效率。本文总结了16条DreamWeaver操作技巧,供开发者参考。 目录 关闭代码自动补全和高亮 调试JavaScript代码 设置代码折叠 代码行间距隙调整 …

    css 2023年6月9日
    00
  • div+css详解定位与定位应用

    什么是定位? 定位是CSS的一个重要概念,指的是元素在页面中的准确位置。网页制作离不开定位,可以通过定位实现各种效果,如盒子居中、导航菜单等。CSS有三种定位方式: 静态定位(position: static):元素默认值就是静态定位,元素会根据文档流从上到下自动排列。 相对定位(position: relative):相对定位指元素相对于自己原来的位置进行…

    css 2023年6月11日
    00
  • 浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color

    浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color 介绍 在移动端网页开发中,我们经常会遇到点击某个元素后出现一个蓝色的透明遮罩层的情况,这个遮罩层有时会影响用户体验,而这个遮罩层的出现就是因为iOS默认的click事件的样式。为了解决这个问题,css3提供了一个-webkit-tap-highlight-color属性,可…

    css 2023年6月9日
    00
  • 巧用CSS3的calc()宽度计算做响应模式布局的方法

    现在我将详细讲解“巧用CSS3的calc()宽度计算做响应模式布局的方法”的完整攻略,包括制作过程、示例说明等。 什么是宽度计算的calc()函数 宽度计算的calc()函数是CSS3中非常有用的函数之一,它可以进行加、减、乘、除的数学运算,可以用于计算元素的宽度,高度、行高等属性。其中,最重要的部分是 calc() 函数的计算规则: 加、减、乘、除符号的前…

    css 2023年6月9日
    00
  • 浏览器兼容之旅第二站:各浏览器的Hack写法让浏览器达到一致的渲染效果

    针对“浏览器兼容之旅第二站:各浏览器的Hack写法让浏览器达到一致的渲染效果”,我们可以分为以下几个方面进行介绍: 一、Hack概述 Hack(或称为CSS Hack),是指为了解决不同浏览器对CSS属性的兼容性问题而采取的针对特定浏览器的非标准写法。Hack的出现虽然解决了一部分浏览器兼容问题,但也有一定的副作用,如会导致CSS样式的不完全合法,增加代码负…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部