给网站添加view-transition动画

分享
给网站添加view-transition动画
Photo by Shubham Dhage / Unsplash

view-transition是一个很专业的功能,可以通过CSS去实现网页动画,在跨网页浏览上启用view-transition,无需多余配置即可获得一个优雅的网站页面切换效果。

适用于多页面应用的跨文档视图过渡 | View Transitions | Chrome for Developers
开始在您的多页应用 (MPA) 中使用跨文档视图过渡。

demo:

Home

配置

在Code injection里面添加如下代码即可:

<style>  

    @view-transition {
	navigation: auto;
    }  
   ::view-transition-group(root){
     animation-duration:600ms
   }
   
</style>

如果你还想更丰富的动画,可以参考下面的几个方案:

滑动进入 + 淡出

<style>  

    @view-transition {
        navigation: auto;
    }

    /* 旧页面:向左滑出并淡出 */
    ::view-transition-old(root) {
        animation: 90ms cubic-bezier(0.4, 0, 1, 1) both fade-out,
                   300ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left;
    }

    /* 新页面:从右侧滑入并淡入 */
    ::view-transition-new(root) {
        animation: 210ms cubic-bezier(0, 0, 0.2, 1) 90ms both fade-in,
                   300ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right;
    }

    @keyframes fade-in {
        from { opacity: 0; }
    }

    @keyframes fade-out {
        to { opacity: 0; }
    }

    @keyframes slide-from-right {
        from { transform: translateX(30px); }
    }

    @keyframes slide-to-left {
        to { transform: translateX(-30px); }
    }

</style>

上下滑动

<style>  

        @view-transition {
        navigation: auto;
    }

    ::view-transition-old(root) {
        animation: 0.4s ease-in both move-out;
    }

    ::view-transition-new(root) {
        animation: 0.4s ease-in both move-in;
    }

    @keyframes move-out {
        from { transform: translateY(0%); }
        to { transform: translateY(-100%); }
    }

    @keyframes move-in {
        from { transform: translateY(100%); }
        to { transform: translateY(0%); }
    }
   
</style>

缩放 + 淡入

<style>  

        @view-transition {
        navigation: auto;
    }

    ::view-transition-old(root) {
        animation: 300ms ease-out both scale-down;
    }

    ::view-transition-new(root) {
        animation: 400ms ease-out 100ms both scale-up;
    }

    @keyframes scale-down {
        to {
            opacity: 0;
            transform: scale(0.9);
        }
    }

    @keyframes scale-up {
        from {
            opacity: 0;
            transform: scale(0.9);
        }
        to {
            opacity: 1;
            transform: scale(1);
        }
    }
   
</style>

圆形扩散

1.在 Code Injection 的 Header 中添加 CSS

<style>  

        @view-transition {
        navigation: auto;
    }

    /* 旧状态禁用默认动画 */
    ::view-transition-old(*) {
        animation: none;
    }

    /* 新状态应用圆形裁剪扩散 */
    ::view-transition-new(*) {
        animation: clip 0.6s ease-in;
    }

    @keyframes clip {
        from {
            clip-path: circle(0% at var(--x) var(--y));
        }
        to {
            clip-path: circle(var(--r) at var(--x) var(--y));
        }
    }
   
</style>

2.在 Footer 中添加 JavaScript

<script>
document.addEventListener('click', (e) => {
    // 只对内部链接生效
    const link = e.target.closest('a[href]');
    if (!link || !link.href.includes(window.location.origin)) return;
    
    const x = e.clientX;
    const y = e.clientY;
    
    // 计算覆盖整个视窗的最小圆半径
    const endRadius = Math.hypot(
        Math.max(x, window.innerWidth - x),
        Math.max(y, window.innerHeight - y)
    );
    
    document.documentElement.style.setProperty('--x', x + 'px');
    document.documentElement.style.setProperty('--y', y + 'px');
    document.documentElement.style.setProperty('--r', endRadius + 'px');
});
</script>

阅读更多

更好的字幕翻译工具

更好的字幕翻译工具

如果你还在找一个更好的字幕翻译工具,那么就是是“沉浸式翻译”这个浏览器插件把,免费版本可以使用微软翻译、硅基流动翻译、GlM-4 Flash和Babel lite。 我测试了一下《挽救计划》的英文字幕,翻译成中文。这部电影的字幕其实难度还是挺大的,不过就我测试了硅基流动翻译、GlM-4 Flash和Babel lite 3个模型的翻译效果,这里推荐Babel lite模型。原因如下: 字幕里面有一个断句的 文本,Babel lite能准确翻译出原文表达的意思: 00:09:4900:09:52Over the next 30 years, the Earth could在未来 30 年,地球可能会 00:09:5200:09:55cool maybe 10凉爽,也许 10

By typenode
Fix ActivityPub Webhook Error

Fix ActivityPub Webhook Error

之前的Ghost托管在PikaPods上面,其实相当于是Managed Ghost,所以你不需要去操心服务器的配置。最近换了服务商,那么情况就不一样了,遇到的所有问题都需要自己去处理,其中一个就是ActivityPub无法正常使用。 错误排查 查看log后发现报错:No Webhook Secret Found。 原因分析 * /.ghost/activitypub/* * /.well-known/webfinger * /.well-known/nodeinfo 上面三个ActivityPub资源配置错误,并未通过https反对带至ap.ghost.org。 处理办法 将需要反代的路径添加至nginx配置文件即可: location ~ /.ghost/activitypub/* { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_se

By typenode
DNSRelay,支持H3、DoQ、DNSSEC、ECS和拦截规则的安卓客户端

DNSRelay,支持H3、DoQ、DNSSEC、ECS和拦截规则的安卓客户端

最近1年时间都是用Null Private的DNS服务,在安卓手机上可以直接使用DoT,不需要第三方客户端,但是有时候感觉还是不方便,不过最近Adguard客户端有很多问题,经常后台退出,或者过度拦截。于是去商店找了几款DNS客户端体验,而目前支持H3的DNS客户端数量非常少,其中DNSRelay的体验还真的不错。这是2025年11月发上架的新APP,参考下载地址: https://apkcombo.com/tw/dnsrelay-secure-dns-proxy/com.sonlabs.dnsrelay/ 官方介绍: 功能 1.隐私 这款DNS客户端首要优势就是支持主流的DNS协议,包括DNS-over-HTTPS (DoH)、DNS-over-TLS (DoT)、DNS-over-QUIC (DoQ) 以及 HTTP/3。那么阿里云的H3 DNS就可以派上用场了,还有易安云的DoQ以及Null Private的H3都能用上了。而像HTTP/3这种集大成的DNS协议,是目前你能用到的最好的协议。 阿里云:h3://dns.alidns.com/dns

By typenode
Notion免费版与一众云笔记的政策对比

Notion免费版与一众云笔记的政策对比

Notion几乎是PKM界首屈一指,而且免费版对比其他云笔记工具,也是真香的存在,且看不限量的区块和页面,不限量的小于5MB的文件存储,就能PK掉一众云笔记工具。 且看存储空间精贵的FlowUs: 把“块”当作宝贝的Wolai: 老派但是增加了AI功能的有道云笔记: 功能拉垮的印象笔记Verse: 跟随者FlowIn,功能非常简单: 语雀: 飞书,认证前15G云空间,单个文件不超过20MB,也是够用,只是桌面端反应慢、功能单一,不是纯粹的云笔记工具。 上手难度极高的Tana: 免费空间高达100MB且很难用的Anytype: Capacities免费版也提供无限的空间和块,只是媒体限制5G且超出后每月增加100MB。 Amplenote看介绍也是没有容量和页面的限制,单个文件限制5MB。 颜值不错的Craft,但是1500个免费的块真的太感人了。 Notion 看完这么多云笔记工具,再看看Notion的免费版提供的待遇: 梳理了这么多云笔记的价格,可以发现,提供免费无线区块或者页面的云笔记,有Capacities、Amplenote以

By typenode