搜索
首页web前端css教程脚趾浸入视图过渡

脚趾浸入视图过渡

Mar 07, 2025 pm 04:37 PM

Toe Dipping Into View Transitions

坦白说,View Transition API 让我有点望而生畏。许多教程都展示了令人印象深刻的演示,说明我们如何为两个页面之间的转换制作动画,它们通常从最简单的示例开始:

@view-transition {
  navigation: auto;
}

但这通常也是简单部分的结束,教程随后会深入到 JavaScript 领域。当然,这没什么问题,只是对于像我这样通过循序渐进学习的人来说,这是一个巨大的飞跃。因此,当我看到 Uncle Dave 和 Jim Neilsen 分享关于一个非常实用的转换技巧(文章标题)时,我深受启发。

您可以在 Jim 的网站上看到它是如何工作的:

这正是我喜欢尝试新事物的那种完美的“浅尝辄止”实验。它从相同的 @view-transition 代码片段开始,该片段用于将两个页面都加入 View Transitions API:当前页面和要导航到的页面。从这里开始,我们可以将它们分别视为“新”页面和“旧”页面。

我也在我的个人博客上实现了相同的效果:

对于博客来说,这是一个完美的练习,对吧?它首先在我们要参与转换的元素上设置 view-transition-name,在本例中是“旧”页面上的文章标题和“新”页面上的文章标题。

因此,如果我们的标记如下:

<h1 id="Notes">Notes</h1>
<a href="https://www.php.cn/link/ddabb258dc2a7d5b5a7204fa68fe522f"></a>

……我们可以在 CSS 中为它们赋予相同的 view-transition-name

.post-title { view-transition-name: post-title; }
.post-link { view-transition-name: post-title; }

Dave 很快指出,我们可以确保尊重那些偏好减少运动的用户,并且只有在他们的系统偏好允许运动的情况下才应用此设置:

@media not (prefers-reduced-motion: reduce) {
  .post-title { view-transition-name: post-title; }
  .post-link { view-transition-name: post-title; }
}

如果页面上只有这两个元素,那么这将正常工作。但是我们有一个文章链接列表,所有这些链接都必须有自己唯一的 view-transition-name。这就是 Jim 在他的工作中遇到一些困难的地方,因为当不断发布新的博客文章时,你到底该如何做到这一点?每次想要发布新内容时,你都必须编辑你的 CSS 并想出一个新的转换名称吗?不,一定有更好的方法。

确实有。或者,至少将来会有。它只是还不是标准的。事实上,Bramus 最近在讨论 Chrome 对 attr() 函数的工作时写到了这一点,该函数将能够在一个声明中生成一系列唯一的标识符。看看未来的这段 CSS:

.card[id] {
  view-transition-name: attr(id type(<custom-ident>), none); /* card-1, card-2, card-3, … */
  view-transition-class: card;
}
<div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div></custom-ident>

太棒了!我现在就想用它!可惜不仅要等待 Chrome 开发它,还要等待其他浏览器采用和实现它,所以谁知道我们什么时候才能真正得到它。目前,最好的办法是直接在模板中使用一些编程逻辑。我的网站运行在 WordPress 上,因此我可以访问 PHP 并生成一个内联样式,在两个元素上设置 view-transition-name

文章标题在我的单个博客文章的模板中。在 WordPress 行话中,那是 single.php 文件。

@view-transition {
  navigation: auto;
}

文章链接位于文章存档的模板中。在 WordPress 中,这通常是 archive.php

<h1 id="Notes">Notes</h1>
<a href="https://www.php.cn/link/ddabb258dc2a7d5b5a7204fa68fe522f"></a>

看到那里发生了什么吗?view-transition-name 属性直接在内联上设置在两个转换元素上,使用 PHP 根据 WordPress 中文章的分配 ID 生成名称。另一种方法是在模板中添加一个 <style></style> 标签并将逻辑放在那里。与将来 attr() 能够实现的功能相比,这两种方法都同样笨拙,所以选择你喜欢的吧。

重要的是,现在这两个元素共享相同的 view-transition-name,并且我们已经加入了 @view-transition。有了这两个要素,转换就能工作了!我们甚至不需要定义 @keyframes(但你完全可以),因为默认转换完成了所有繁重的工作。

本着同样的“浅尝辄止”精神,我看到了最新一期的《Modern Web Weekly》,我喜欢在单选按钮上使用这个小小的 View Transition:

请注意,需要使用 JavaScript 来阻止单选按钮的默认点击行为,以便在选中输入之前允许转换运行。

以上是脚趾浸入视图过渡的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
什么是CSS网格?什么是CSS网格?Apr 30, 2025 pm 03:21 PM

CSS网格是创建复杂,响应式Web布局的强大工具。它简化了设计,提高可访问性并提供了比旧方法更多的控制权。

什么是CSS Flexbox?什么是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

我们如何使用CSS使网站迅速响应?我们如何使用CSS使网站迅速响应?Apr 30, 2025 pm 03:19 PM

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架

CSS盒装属性有什么作用?CSS盒装属性有什么作用?Apr 30, 2025 pm 03:18 PM

本文讨论了CSS盒装属性,该属性控制了元素维度的计算方式。它解释了诸如Content-Box,Border-Box和Padding-Box之类的值,以及它们对布局设计和形式对齐的影响。

我们如何使用CSS动画?我们如何使用CSS动画?Apr 30, 2025 pm 03:17 PM

文章讨论使用CSS,关键属性并与JavaScript结合创建动画。主要问题是浏览器兼容性。

我们可以使用CSS向我们的项目添加3D转换吗?我们可以使用CSS向我们的项目添加3D转换吗?Apr 30, 2025 pm 03:16 PM

文章讨论了Web项目的3D转换,关键属性,浏览器兼容性和性能注意事项的讨论。(角色计数:159)

我们如何在CSS中添加梯度?我们如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章讨论了使用CSS梯度(线性,径向,重复)来增强网站视觉效果,添加深度,焦点和现代美学。

CSS中的伪元素是什么?CSS中的伪元素是什么?Apr 30, 2025 pm 03:14 PM

文章讨论了CSS中的伪元素,它们在增强HTML样式方面的使用以及与伪级的差异。提供实用的例子。

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

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

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)