搜索
首页web前端js教程如何使用CSS创建整页动画

如何使用CSS创建整页动画

钥匙要点

    可以使用CSS 3D和2D变换和CSS动画创建整页动画,从而为Web内容提供了更具性能和灵活性的替代方案。可以使用CSS动画来转换HTML元素以实现这些效果。> 在应用CSS转换为元素时,为了确保一致的结果,无论其内容的大小如何,可以将身体元素的大小固定到浏览器窗口的大小,并且可以将内容固定在包装器中。这种方法还可以掩盖复杂内容可能发生的任何渐进式渲染,重新汇总或资源加载。
  • 。 在浏览体验期间,可以在战略时期设置
  • 动画,以使内容过渡到页面加载并在用户单击链接时看不见的视图。设置动画将页面内容转换为视图的最佳位置是元素顶部。 AnimationEnd事件可用于检测动画何时完成,然后触发导航事件。
  • Internet Explorer(Internet Explorer 10支持CSS 3D和2D变换和CSS动画)等现代浏览器。通过利用GPU的功能并与常规JavaScript进行异步运行,这些技术为Web内容提供了更具性能和灵活的替代方案。
  • >我已经讨论过如何使用CSS 3D变换以及以前文章中的CSS动画和过渡。 在本文中,我想通过描述可以在导航过程中使用的“全页动画”的概念来为这些技术介绍一个更“非常规”的用例,以增加浏览的流动性和连续性。我们的目标是获得无缝的浏览体验,当用户访问页面并在单击链接或执行相关操作时,内容顺畅地显示出视图。
  • 这些效果可以通过使用CSS动画转换HTML 元素来实现。但是,此用例提出了一些我们认为值得讨论的考虑因素,例如布局和尺寸对转换的效果,以及如何适当的时间页导航,以便它们与我们的动画正确融合。 >
  • >本文中的代码示例使用IE10 Release Preview支持的未解决的CSS标记;其他浏览器可能需要CSS动画的供应商前缀,而CSS会转换所使用的属性。
转换页面的整个内容

CSS变换是在HTML DOM元素的风格属性上定义的。例如,沿其z轴旋转45度的元素的标记看起来像这样:>

#element {
    transform: rotateZ(45deg);
}

>将转换附加到HTML文档的

元素上的工作方式完全相同。因此,为了声明性地添加相同的效果,您可以执行相同的效果。

body {
    transform: rotateZ(45deg);
}
让我们看一下将转换应用于身体元素时的页面前后拍摄的镜头:

如何使用CSS创建整页动画应用旋转(45DEG)转换为文档的身体元素。 对于三维变换,CSS转换规范定义了可以在我们转换的元素的母体上指定的透视属性。在转换内容的元素时,必须将其应用于位于DOM层次结构中上方的元素。这样做很简单:

在元素上将其与旋转(45度)变换结合起来,会产生以下结果:>

html {
    perspective: 500px;
}

将旋转(45DEG)转换为的透视图:。

>我们可以在人体元素上操纵转化 - 原始特性以获得有趣的结果。让我们看一下几个示例: 如何使用CSS创建整页动画 上面的标记将沿x旋转作为人体元素设置,同时使用转化原孔将旋转的起源转移到元素的底部。有效地,这将文档的内容“进入”了这样的屏幕:

body {
    transform-origin: 50% 100%;
    transform: rotateX(45deg);
}

>

>我们还可以在文档的根部元素上操纵透视 - 原始属性,以实现离轴投影效应。将的样式更改为:

> 如何使用CSS创建整页动画我们的页面现在看起来像这样:

通过使用CSS变换,我们可以轻松地操纵整个页面内容的视觉外观。由于通常仍然适用了通常的布局和尺寸规则,因此人体元素(尤其是使用百分比值或依赖转换 - 原始属性的元素)可能会导致不同的视觉效果,这取决于我们页面的内容。回想我们以前的rotatex(45DEG)示例,其中转换 - 原始素将其设置为50%100%。
html {
    perspective: 500px;
    perspective-origin: 90% 50%;
}
在下面,您可以在应用转换之前和之后查看结果。

请注意,内容如何实际上并不在窗口底部,而是在视口外的某个时候。这是CSS变换的预期行为:

正常布置,然后沿屏幕上某个地方的底部边缘旋转。您还会注意到,内容的实际脚印已经扩展(查看“后图”图片中的滚动条),以适应变换的内容(我们正在使用透视图投影的事实使此效果更加多发音)。

>那么,在将转换应用于我们的身体元素时,我们如何处理任意尺寸的内容?自定义调整所有内容,以确保身体的大小不会扩大超过一定量可能是不现实的。取而代之的是,我们可以使用简单的HTML/CSS模式,该模式使我们能够将身体元素的大小固定到浏览器窗口的大小,并在包装​​器

中附加内容。以下标记实现了:
#element {
    transform: rotateZ(45deg);
}

>下面的插图显示了页面垂直滚动时发生的情况,然后我们将旋转(45DEG)直接转换为文档的

元素(左)(左)和使用包装模式(右):>

如何使用CSS创建整页动画

由于离轴投影,转换的直接应用导致视觉结果偏斜(因为我们不再查看身体元素的“中心”)。使用包装器图案确保元素的观点 - 原始属性(默认为50%50%)将始终以与元素有关,从而使我们具有令人愉悦的视觉效果。

>通过利用上述模式并设置CSS随时使用百分比值转换,我们可以以一致的方式影响我们的

元素,而不论其内容的大小如何。> 从变换到动画

>整理了将CSS转换到元素的复杂性后,CSS动画是下一步。通过遵循上述原则,我们可以创建动画,以有趣的方式将我们的Web内容视为视图(或从视图中删除)。

考虑此基本@keyframes规则:

应用于元素时,此动画将导致其左侧旋转。当应用于使用我们的包装器模式的元素时,视觉结果会更有趣。该文档实际上将从浏览器窗口可见区域的外部旋转,然后旋转到完整视图:>

body {
    transform: rotateZ(45deg);
}
同样,我们可以撰写动画,这些动画会流畅地从视图中删除我们的Web内容。例如,如果我们希望我们的页面在旋转时消失到远处,我们可以使用类似的东西:

>

#element {
    transform: rotateZ(45deg);
}

视觉结果为:

如何使用CSS创建整页动画

>由于我们可以利用CSS动画的全部功能来影响我们的整个Web内容,因此我们在生成这些页面效果方面具有很大的灵活性(而且我们当然不限于仅使用CSS变换)。但是,一旦我们构成了要应用于内容的效果,我们如何使它们在页面导航过程中触发?

将动画附加到

>

>我们的目标是在浏览器体验期间在战略时期使用触发动画,以使内容过渡的外观在页面加载并在用户单击链接上时的视图时将其视为视图。

>在身体元素中添加动画的第一个直观位置是Onload JavaScript事件。然而,事实证明,当on load火灾实际上为时已晚时添加动画。当我们页面中的整个内容完成加载时(包括任何图像或其他带宽密集型资源),此事件实际上会触发。将动画附加到带宽密集的页面上的onload将导致我们的内容显示“正常”,然后动画触发并将内容重新包含到视图中。不完全是我们目标的效果。

> 或者,我们可以利用当浏览器完成内容的DOM结构时触发的Domcontentloaded事件(但有可能在资源完成加载之前)。 IE测试驱动器domcontentloaded演示说明了这两个事件之间的区别。但是,在具有复杂的Web内容的情况下,现代浏览器可能会选择执行“渐进式”渲染,并在加载整个DOM树之前显示页面。在这些情况下,视觉结果将类似于Onload方案。

>设置一个动画的最佳位置,该动画过渡我们的页面内容是元素的顶部。这样可以确保动画随着内容的渲染而开始正确(并且内容的启动位置将是我们所选动画的关键帧的开始位置)。这种方法的一个令人愉悦的副作用是,动画实际上可以掩盖可能与复杂内容一起发生的任何进行性渲染,重新分析或资源加载。>

>设置动画,使我们的内容过渡出来也很有趣。人们可以假设我们可以将onclick处理程序附加到我们内容中所有感兴趣的元素上(例如所有标签),并且只需在回调函数中设置相关的动画属性(Animation-name,Animation-Duration等) 。但是,如果我们实际上没有延迟导航的发生,我们将不会看到我们的预期流体过渡。

这是利用CSS动画规范中描述的动画事件的好机会。特别是,我们可以使用AnimationEnd事件来检测动画何时完成,然后触发导航(例如,通过设置window.location.href)。因此,我们的onclick将触发“删除从视图”动画,并在

上注册一个动画结构的处理程序,以确保发生导航事件。

>实时演示可用

>我们创建了一个演示和教程,以使CSS变换和动画充满活力,以提供深度和示例,超出了我们在此处显示的内容。该教程本身在页面导航期间使用了全页动画,该动画在Windows 8上的Internet Explorer 10以及Chrome和Firefox的最新版本中使用。

>简单地享受页面到页面的动画,使用“继续……”链接在每个页面的右下角中浏览教程的页面。>

在教程末尾,我们提供了一些有关如何将这些动画与您自己的Web内容合并的其他指南和示例代码。

>

>将其包裹起来

CSS变换和CSS动画是两个强大的功能集,可实现更丰富,更身临其境的网络体验。通过少量努力,您可以创建网页(甚至是静态的页面),以提供流畅且几乎类似应用的导航体验。 如果您喜欢阅读这篇文章,那么您会喜欢学习;从大师那里学习新鲜技能和技术的地方。成员可以立即访问SitePoint的所有电子书和互动在线课程,例如实用的CSS。

全页CSS动画上经常询问问题

> CSS动画和JavaScript动画之间的关键区别是什么?

CSS动画和JavaScript动画具有与动画Web元素的相同目的,但它们具有一些关键差异。 CSS动画更容易实现,尤其是对于简单的动画。当浏览器的渲染引擎处理时,它们也更加友好。但是,与JavaScript动画相比,CSS动画的控制力和灵活性有限。另一方面,JavaScript动画提供了更多的控制和灵活性,可以进行复杂的动画。它们可以实时暂停,逆转或操纵,也可以响应用户互动。

>

>我如何使我的CSS动画响应?

>使CSS动画响应响应涉及相对单位喜欢百分比或视口单元,而不是像像素这样的绝对单位。这样可以确保动画尺寸正确,而不管屏幕尺寸如何。您还可以使用媒体查询根据特定的屏幕尺寸或设备类型调整动画。

>

>我可以将CSS动画与svg?

一起使用,是的,CSS动画可以与SVG一起使用(可扩展向量图形)。 SVG拥有自己的CSS属性集,可以动画,例如填充,中风和转换。与对常规的HTML元素进行动画相比,这允许更复杂,有趣的动画。

>

为什么我的CSS动画在某些浏览器中不起作用?

>并非所有浏览器都支持所有CSS动画属性。例如,Internet Explorer不支持动画触时属性。为了确保跨浏览器兼容性,您可以在动画属性之前使用-webkit-,-moz-,-o-和-ms-等供应商前缀。您还可以使用诸如AutopRefixer之类的工具自动添加这些前缀。

>

>如何优化我的CSS动画的性能?

>

>

以优化CSS动画的性能,您可以限制动画属性,尤其是触发布局的动画属性会更改宽度,高度和边距。而是使用仅触发复合变化(例如变换和不透明度)的属性。您还可以使用Will-Change属性将可能是动画化的属性通知浏览器。

>

>我可以使用CSS?

用CSS动画。这是因为它在其值之间没有中间状态。但是,您可以通过对不透明度和可见性属性进行动画效果来实现类似的效果。

如何使用CSS创建一个循环的动画?

您可以使用动画在CSS中创建一个循环动画 - 列表计数属性。通过将其价值设置为无限,动画将无限期重复。

我可以控制CSS动画的速度吗?财产。此属性定义了动画完成一个周期的时间长度。

>

>我如何暂停CSS动画?

您可以使用Animation-Play-State属性暂停CSS动画。通过将其值设置为暂停,动画将停止运行。

>我可以使用CSS?

对背景图像属性进行动画动画,而不可以CSS来动画。但是,您可以使用不透明度属性在多个背景图像之间逐渐消失来实现类似的效果。

以上是如何使用CSS创建整页动画的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
从网站到应用程序:JavaScript的不同应用从网站到应用程序:JavaScript的不同应用Apr 22, 2025 am 12:02 AM

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python vs. JavaScript:比较用例和应用程序Python vs. JavaScript:比较用例和应用程序Apr 21, 2025 am 12:01 AM

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C/C在JavaScript口译员和编译器中的作用C/C在JavaScript口译员和编译器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在行动中:现实世界中的示例和项目JavaScript在行动中:现实世界中的示例和项目Apr 19, 2025 am 12:13 AM

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

了解JavaScript引擎:实施详细信息了解JavaScript引擎:实施详细信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python vs. JavaScript:学习曲线和易用性Python vs. JavaScript:学习曲线和易用性Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

Python vs. JavaScript:社区,图书馆和资源Python vs. JavaScript:社区,图书馆和资源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器