搜索
首页web前端css教程查看视口外的过渡

查看视口外的过渡

Nov 19, 2024 am 07:28 AM

View Transitions outside the Viewport

CSS 视图转换已登陆 Chrome,并且(无论好坏)现在大多数最终用户都可以广泛使用。 Safari 也不甘落后,该功能已在 TP 中提供,而 Firefox 至少正在开发中。

我喜欢多页面转换的实现变得如此简单,但与此同时,我意识到它们的一个大问题:超出视口的元素开始疯狂地四处飘荡。

我的博客用一些 Javascript 来处理这个问题。 IntersectionObserver 在可见时在自定义属性中设置视图转换名称。只要它不在视线范围内,该属性就不会设置,并且不会触发转换。它可以工作,但需要 HTML、Javascript 和 CSS 相互依赖。本着让 CSS 表现更重要的精神,我想要一个更简单的解决方案。

Chrome 最近推出了另一个可能会有所帮助的功能:滚动驱动的动画。遗憾的是,这仅在 Chrome 中可用。 Firefox 将其置于标志后面,而 Safari 则没有显示任何活动迹象。但我们可以优雅地回退,要么使用前面提到的 Javascript 解决方案,要么干脆忽略视口检测并显示动画(在撰写本文时,Safari 就是这种情况)。

一个简单的过渡

让我们把它们放在一起,从视图转换本身开始:

@media (prefers-reduced-motion: no-preference) {
    @view-transition {
        navigation: auto;
    }

    [data-view-transition] {
        view-transition-name: var(--view-transition-name, default-view-transition);
    }
}
<!-- on page1.html: -->
<div data-view-transition>Whoosh!</div>

<!-- on page2.html: -->
<div data-view-transition>Whoosh!</div>

现在您将看到 page1.html 中的 div 在导航时转换为 page2.html 上的版本。 CSS 中的 @view-transition at-rule 也会对整个文档启动交叉淡入淡出。过渡持续时间默认设置为 0.4 秒,但我们可以添加几行来控制它:

@property --view-transition-duration {
    syntax: "<time>";
    inherits: true;
    initial-value: 0.4s;
}

::view-transition-group(*) {
    animation-duration: var(--view-transition-duration);
}
</time>

持续时间由 --view-transition-duration 设置 顶部的 @property 规则完全是可选的,但当我们设置 --view- 时,它会让动画持续时间回落到 0.4 秒而不是无效值过渡持续时间:假的。

处理视口

尽管如此,当页面转换时元素位于视口之外时,它仍然会动画,有时会进入或越过整个可见屏幕,而不指示它来自哪里或要去哪里。我觉得这种行为非常令人恼火。

通过滚动驱动的动画,我们现在有了一个可以根据滚动和视口相对位置控制样式的工具。所以我们还可以控制视图转换的触发:

@media (prefers-reduced-motion: no-preference) {
    @view-transition {
        navigation: auto;
    }

    [data-view-transition] {
        view-transition-name: var(--view-transition-name, default-view-transition);
    }
}

enable-vt 关键帧动画无法从无平滑过渡到带有文本字符串的自定义属性,因此会进行硬剪切。当元素部分进入或离开视口时,动画范围就会触发。动画本身将 --enable-view-transition 设置为 0.1% 和 99.9% 以尽快触发。我想在我们获得动画开始或结束位置的提示后立即启用视图转换。

最后 --enable-view-transitions 由滚动驱动动画设置为无或名为 --view-transition-name 的新自定义属性。它被设置为屏幕覆盖率的 0.1% 到 99.9% 之间,禁用视口上方和下方(或左侧和右侧,无论您想要以哪种方式握住它)的视图过渡。这个新属性对于在不同元素上设置单独的动画非常有用。每个元素都可以通过为 --view-transition-name 设置唯一值来获得自己的转换。

<div>



<p>这需要在源页面和目标页面上完成。如果没有设置值,则默认为default-view-transition,它统一控制所有剩余的data-view-transition元素。</p>

<h2>
  
  
  现实世界的实施
</h2>

<p>我将此实现添加到我的 CSS 样板 Ssstyles 中。在源页面和目标页面上为元素提供 data-view-transition 属性将使其在两者之间进行转换。给它一个 --view-transition-name 将让它拥有自己独特的动画,独立于其他类似元素。设置 --view-transition-duration 控制过渡的持续时间。</p>


          </div>

            
        

以上是查看视口外的过渡的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
'订阅播客”链接应在哪里?'订阅播客”链接应在哪里?Apr 16, 2025 pm 12:04 PM

有一段时间,iTunes是播客中的大狗,因此,如果您将“订阅播客”链接到喜欢:

浏览器引擎多样性浏览器引擎多样性Apr 16, 2025 pm 12:02 PM

当他们在2013年去Chrome时,我们失去了歌剧。与Edge今年早些时候也进行了同样的交易。迈克·泰勒(Mike Taylor)称这些变化为“减少

网络共享的UX注意事项网络共享的UX注意事项Apr 16, 2025 am 11:59 AM

从垃圾点击诱饵网站到大多数出版物的最多,共享按钮长期以来一直无处不在。然而,这些

每周平台新闻:Apple部署网络组件,渐进的HTML渲染,自托管关键资源每周平台新闻:Apple部署网络组件,渐进的HTML渲染,自托管关键资源Apr 16, 2025 am 11:55 AM

在本周的综述中,Apple进入Web组件,Instagram如何插入脚本以及一些思考的食物,以进行自托管关键资源。

git Pathspecs以及如何使用它们git Pathspecs以及如何使用它们Apr 16, 2025 am 11:53 AM

当我查看GIT命令的文档时,我注意到其中许多人都有选择。我最初以为这只是一个

产品图像的彩色拾取器产品图像的彩色拾取器Apr 16, 2025 am 11:49 AM

听起来有点像一个困难的问题,不是吗?我们经常没有成千上万种颜色的产品镜头,以便我们可以随身携带。我们也不是

黑暗模式与React和Themeprovider切换黑暗模式与React和Themeprovider切换Apr 16, 2025 am 11:46 AM

我喜欢网站具有“暗模式”选项时。黑暗模式使我更容易阅读网页,并帮助我的眼睛更放松。许多网站,包括

带有HTML对话框元素的一些动手带有HTML对话框元素的一些动手Apr 16, 2025 am 11:33 AM

这是我第一次查看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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

DVWA

DVWA

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

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。