未滚动时的页面标题修复起来很简单。该标题可以换行显示,因此之前设置溢出隐藏只是为了防止长单词因无法换行而撑破宽度。移除溢出设置并添加 overflow-wrap: break-word; 后,当空间不足时单词就会自动换行。
当页面滚动导致标题吸附到页眉时,我们使用 overflow: hidden 配合 text-overflow: ellipsis 来截断超过一行的标题……在这种情况下我们无法轻易移除溢出设置,因此我添加了一些内边距,并通过负边距将其重新左对齐。虽然 CSS 写法不算美观,但确实有效。
再详细说明一下 为什么 会出现这种情况。在字体中,存在“em 框”(也称为 em 方块)的概念。这些框对每个字符大小相同,是缩放、调整行高、字间距等操作的基准。
字符可以向任何方向延伸到 em 框之外……有时这是某些字符所必需的,有时仅仅是字体设计师的有意为之。在浏览器中,无法检测到这种溢出内容的存在,因此无法动态地对其进行适配处理。
据我所知,目前的选项只有:在可能的情况下避免文本溢出,或者在无法避免时添加一些额外的内边距。