You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何针对分页媒体的@page边距at规则实现内容本地化?

如何针对分页媒体的@page边距at规则实现内容本地化?

嘿,这个问题我之前踩过坑!你原来的写法没效果,核心问题是CSS的@page是顶级规则,根本不能嵌套在html:lang()这类元素选择器里面——浏览器会直接判定这种嵌套是无效语法,直接忽略,所以页码才啥都不显示。

给你个亲测有效的解决方案,用CSS自定义属性(也就是变量)来实现,这也是现在最灵活的方式:

// 先根据不同语言定义对应的文本变量
html:lang(en) {
  --page-label: 'Page ';
  --of-label: ' of ';
}

html:lang(nb) {
  --page-label: 'Side ';
  --of-label: ' av ';
}

// 然后在@page规则里直接用这些变量
@page {
  @bottom-right {
    content: var(--page-label) counter(page) var(--of-label) counter(pages);
  }
}

原理很简单:CSS变量会从根元素html继承到分页媒体的页面上下文里,@page规则能正常读取这些变量值。只要你给html标签正确设置了lang属性(比如<html lang="en">或者<html lang="nb">),不同语言下就会自动加载对应的页码文本了。

另外再提醒你一下,一定要确认html标签的lang属性是正确设置的,不然:lang()选择器根本不会生效哦!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:05:28