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

为何pre标签设置max-width后页面仍出现横向滚动条?

解决Grid布局中pre标签导致页面横向滚动的问题

问题原因

当前Grid布局里,中间列使用auto作为宽度规则,当pre标签内存在长内容时,auto会自适应内容的最大宽度,加上左右固定的19em列宽,整个容器宽度会超出视口,触发页面横向滚动。虽然给pre设置了max-width:100%,但由于Grid列的自适应规则,这个宽度限制并未生效。

修改方案

1. 调整Grid列的宽度规则

将容器的grid-template-columns中的auto替换为minmax(0, 1fr),强制中间列的最大宽度为剩余可用空间,避免被内容无限撑开:

div.container {
  display: grid;
  grid-template-areas: "left main right";
  grid-template-columns: 19em minmax(0, 1fr) 19em; /* 修改此处 */
}

2. 优化pre标签的CSS

给pre添加box-sizing: border-box确保内边距不会突破宽度限制,同时明确设置width: 100%强化宽度约束:

pre {
  max-width: 100%;
  width: 100%;
  overflow-x: auto;
  box-sizing: border-box; /* 若pre有内边距则必须添加 */
}

完整修改后的代码

style.css

div.container {
  display: grid;
  grid-template-areas: "left main right";
  grid-template-columns: 19em minmax(0, 1fr) 19em;
}

div.left {
  grid-area: left;
  background-color: beige;
}

div.right {
  grid-area: right;
  background-color: beige;
}

div.main {
  grid-area: main;
  padding: 0 1em; /* 可选:避免内容贴边,提升可读性 */
}

pre {
  max-width: 100%;
  width: 100%;
  overflow-x: auto;
  box-sizing: border-box;
  background-color: #f5f5f5; /* 可选:添加背景色区分代码块 */
  padding: 1em; /* 可选:添加内边距提升可读性 */
  margin: 1em 0; /* 可选:调整上下间距 */
}

demo.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div class="container">
<div class="left">
  <p>some text</p>
</div>
<div class="main">
  <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Illo velit, vitae perferendis commodi enim autem architecto optio laboriosam omnis eius dolorum similique rem, asperiores exercitationem in beatae, harum natus reiciendis.</p>
  <pre>
\usepackage{tikz}
\begin{frame}
  \tikz[remember picture, overlay] \node at (3.1415,1) {I'm here};
  \tikz[remember picture, overlay] \node at (current page.center) {I'm the centre of the frame!};
\end{frame}
  </pre>
</div>
<div class="right">
  <p>some text</p>
</div>
  </div>
</body>
</html>

效果说明

修改后,中间列会自适应剩余视口宽度,pre标签的内容超出部分会在自身容器内横向滚动,整个页面宽度将与屏幕保持一致,不会出现全局横向滚动条。

内容的提问来源于stack exchange,提问作者Stephen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:49:59