【我的前端】前端项目小练习:CSS创建3D圆柱旋转效果

简介: 学习css,我们必须模仿圆柱体,因为我们没有用于圆形物体的css原生盒子。

前端项目小练习:CSS创建3D圆柱旋转效果

学习css,我们必须模仿圆柱体,因为我们没有用于圆形物体的css原生盒子。

就我自己的想法而言,我将添加很多我们彼此倾斜的侧面板。这将模仿我们正在寻找的 3D 效果。


HTML标记

我选择在 Pug 中进行演示。模拟 HTML 很容易,因为它可以使用变量。

但是,归结为以下 HTML 输出。

<div class="holder">
    <div class="cylinder">
        <div class="face" style="--index: 0"></div>
        <div class="face" style="--index: 1"></div>
    </div>
</div>

我们添加了支架包装纸,这样我们就可以把它放在一个不会干扰到圆柱体的角度了。

我已将以下类添加到支架以实现倾斜外观。

.holder {
    transform-style: preserve-3d;
    transform: rotateX(-35deg);
}

样式化 CSS 3D 圆柱体

在开始之前,我们需要定义一些变量,因为这需要一些计算能力。

我想在这里使用 scss,因为它更容易与变量一起使用。

css 中添加以下变量。

$pi: 3.14159265358979;
$cylinder-width: 100vm;
$face-count: 50;
$face-deg: (360deg / $face-count);
$face-width: ($cylinder-width / $face-count);
$face-shift: ($cylinder-width / $pi / 2)

让我们来把每一个都解读清楚:

pi:匹配PI,我们得计算一个完美的圆位移大小;

cylinder-width:我们的圆柱宽度;

face-count:这里指的是我们渲染了多少张脸。这应该与刚刚添加的 div 数量匹配;

face-deg:每张脸要覆盖多大的度数;

face-width:每个面的宽度;

face-shift:我们需要将面向外移动以使其具有更多的 3D 效果。

现在我们可以移动到圆柱体的形状了。

.cylinder {
    position: relative;
    height: 50vw;
    width: $cylinder-width;
    transform-style: present-3d;
}

把以上代码添加到CSS文件中去可能会报错,不过没关系,不用管它。

这里没有什么特别的,但它基本上会包含我们圆柱体侧面的包装。

然后我们可以移动到每张脸,共享相同的模式。

.face {
    position: absolute;
    background-color: #da0060;
    opacity: 0.7;
    height: 100%;
    width: $face-width;
    top: 50%;
    left: 50%;
    transform-style: rotateY(calc(#{$face-dog} * var(--
index)))translateZ(
        clac(#{$face-shift}--6px)
    );
}

注意:0.7来自360度/50 (面)

translateZ是将每个项目向后多堆一点儿,使其看起来更加整洁、空间更大。

我还决定给一张脸上涂上不同的颜色,一面更好看的旋转。

.face {
    &:nth-child(1){
        background: purple;
    }
}

动画圆柱体

让我们添加一些动画来使圆柱体旋转。

@keyframes spin{
    to {
        transform: rotateY(-360deg);
    }
}
.cylinder {
    animation: spin 7s infinite linear;
}

这将使圆柱绕Y轴旋转360度。

您可以在此 CodePen 中看到结果。



相关文章
|
1月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
106 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
27天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
56 7
|
27天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
35 6
|
1月前
|
Web App开发 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用CSS3,打造炫酷视觉效果!
【10月更文挑战第31天】前端开发面临复杂布局的挑战,本文介绍了几种提升开发效率和代码质量的工具和技术。基础的HTML和CSS可以应对大部分布局需求,而Firefox开发者工具、VS Code、Vue、React等则能应对更复杂的布局,帮助开发者构建高性能、用户友好的网页应用。
32 4
|
2月前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
251 1
|
2月前
|
前端开发 JavaScript API
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
本文通过构建一个 3D 翻卡动画深入探讨了 CSS Houdini 的强大功能,展示了如何通过 Worklets、自定义属性、Paint API 等扩展 CSS 的能力,实现高度灵活的动画效果。文章首先介绍了 Houdini 的核心概念与 API,并通过构建一个动态星空背景、圆形进度条以及交互式 3D 翻卡动画的实际示例,展示了如何利用 CSS Houdini 赋予网页设计更多创造力。最后,还演示了如何将这种 3D 翻卡效果集成到公司网站中,提升用户体验。CSS Houdini 的创新能力为网页设计带来了前所未有的灵活性,推动了前端开发迈向新的高度。
45 0
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
|
2月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
2月前
|
前端开发 UED 容器
前端技术分享:利用 CSS Grid 实现响应式布局
【10月更文挑战第1天】前端技术分享:利用 CSS Grid 实现响应式布局
76 2
|
2月前
|
JavaScript 前端开发 Docker
拿下奇怪的前端报错(二):nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践
本文介绍了在多版本Node.js环境中使用nvm进行版本管理和遇到的问题,以及通过Docker化构建流程来解决兼容性问题的方法。文中详细描述了构建Docker镜像、启动临时容器复制构建产物的具体步骤,有效解决了不同项目对Node.js版本的不同需求。
116 0
|
2月前
|
前端开发
运用CSS伪类与属性,巧妙实现背景图片旋转效果
运用CSS伪类与属性,巧妙实现背景图片旋转效果
49 0