目录
Notes
首页 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

热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

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

您可以从浏览器获得有效的CSS属性值吗? 您可以从浏览器获得有效的CSS属性值吗? Apr 02, 2025 pm 06:17 PM

我有人写了这个非常合法的问题。 Lea只是在博客上介绍了如何从浏览器中获得有效的CSS属性。那样的是这样。

在WordPress块编辑器中使用Markdown和本地化 在WordPress块编辑器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我们需要直接在WordPress编辑器中向用户显示文档,那么最佳方法是什么?

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

比较浏览器的响应式设计 比较浏览器的响应式设计 Apr 02, 2025 pm 06:25 PM

这些桌面应用程序中有许多目标是同时在不同的维度上显示您的网站。因此,例如,您可以写作

如何将CSS网格用于粘头和页脚 如何将CSS网格用于粘头和页脚 Apr 02, 2025 pm 06:29 PM

CSS网格是一系列属性的集合,旨在使布局比以往任何时候都容易。像任何东西一样,那里有一点学习曲线,但是网格是

Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

See all articles