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

如何避免网页文本选中高亮扩展至整个Section宽度(CSS)

解决文本选中高亮扩展至整个Section宽度的问题

这问题我之前踩过坑!咱们先拆解下原因:你给.intro-project设置了width: 100vw,让这个容器占满了整个视口宽度,但里面的<p>只设了width: 55%并居中,浏览器默认的文本选中高亮范围是基于块级父元素的宽度计算的,所以选中段落文本时,高亮就会“撑满”父元素的整个100vw宽度,看起来就很奇怪。

下面给你两种简单的解决方案,按需选择:

方案一:调整父容器宽度,适配内容宽度

直接修改.intro-project的宽度属性,让它的宽度自适应内部内容,而不是强制占满视口:

.intro-project { 
  font: 140%/1.5; 
  /* 去掉width:100vw,换成fit-content让容器宽度匹配内容 */
  width: fit-content;
  height: auto; 
  margin: 0 auto; /* 保持容器居中 */
  padding-top: 5%; 
  color: rgba(29, 29, 27, 1);
} 

.intro-project p { 
  width: 55%; 
  margin: 0 auto; 
}
/* 如果想让列表和段落宽度一致,也给ul加同样的样式 */
.intro-project ul {
  width: 55%;
  margin: 0 auto;
  padding-left: 1.5em; /* 保持列表缩进 */
}

这样修改后,.intro-project的宽度只会包裹住内部的段落和列表,文本选中时高亮就只会覆盖实际有内容的区域,不会延伸到整个屏幕了。

方案二:移除父容器的强制宽度,利用默认块级特性

如果不需要父容器有特殊的宽度限制,直接删掉width:100vw,因为块级元素默认会占满父元素(也就是<section>)的宽度,同时保持段落的居中设置:

.intro-project { 
  font: 140%/1.5; 
  /* 移除width:100vw */
  height: auto; 
  margin: 0 auto; 
  padding-top: 5%; 
  color: rgba(29, 29, 27, 1);
} 

.intro-project p { 
  width: 55%; 
  margin: 0 auto; 
}
.intro-project ul {
  width: 55%;
  margin: 0 auto;
  padding-left: 1.5em;
}

这个方案更简洁,适合不需要父容器强制占满视口的场景,同样能解决选中高亮过宽的问题。

补充说明

浏览器的文本选中行为是基于元素的布局盒模型的,当父元素设置了过宽的宽度,即使子元素只占一部分,选中子元素文本时,高亮也会填充父元素的整个宽度。通过调整父元素的宽度属性,让它和内容匹配,就能从根源上解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:47:39