【我的前端】前端项目小练习: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 中看到结果。



相关文章
|
3天前
|
前端开发 JavaScript 开发者
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。
|
2月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
200 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
2月前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
77 7
|
2月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
50 6
|
3月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
183 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
2月前
|
前端开发 测试技术
前端工程化的分支策略要如何与项目的具体情况相结合?
前端工程化的分支策略要紧密结合项目的实际情况,以实现高效的开发、稳定的版本控制和顺利的发布流程。
34 1
|
2月前
|
Web App开发 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用CSS3,打造炫酷视觉效果!
【10月更文挑战第31天】前端开发面临复杂布局的挑战,本文介绍了几种提升开发效率和代码质量的工具和技术。基础的HTML和CSS可以应对大部分布局需求,而Firefox开发者工具、VS Code、Vue、React等则能应对更复杂的布局,帮助开发者构建高性能、用户友好的网页应用。
38 4
|
2月前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
46 2
|
3月前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
349 1
|
3月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计

热门文章

最新文章

下一篇
开通oss服务