You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

有序列表文本溢出省略时序号被隐藏,如何保留序号实现文本省略?

解决有序列表文本溢出省略时序号被隐藏的问题

我来帮你搞定这个问题~你遇到的情况是因为用了list-style-position:inside,这个属性会把数字序号塞进li的内容盒子里,和文本共用一个容器。当你给lioverflow:hidden时,整个盒子里超出宽度的部分都会被藏起来,序号自然就跟着没了。下面给你两种靠谱的解决办法:

方法一:改用list-style-position:outside + 内边距调整

这个方法最简单,利用默认的序号位置(outside),通过内边距让文本和序号对齐,这样序号在li的外面,overflow:hidden只会作用于文本内容:

.wrapper{width:300px; background-color:#ccc; padding:10px;}
/* 修复后的样式 */
.ol-fixed li {
  list-style-position: outside; /* 序号放在li外面 */
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-left: 1em; /* 给文本左边加内边距,和序号对齐 */
}
ol {
  margin-left: 1em; /* 确保序号有足够的显示空间 */
}

方法二:用CSS计数器自定义序号

如果需要更灵活的样式控制,比如自定义序号的颜色、大小,可以用CSS计数器来实现,把序号和文本完全分开:

.wrapper{width:300px; background-color:#ccc; padding:10px;}
/* 修复后的样式 */
.ol-counter {
  counter-reset: li; /* 初始化计数器 */
  padding-left: 0; /* 去掉ol默认的左内边距 */
}
.ol-counter li {
  position: relative;
  list-style: none; /* 隐藏默认序号 */
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-left: 1.5em; /* 给自定义序号留出位置 */
}
.ol-counter li::before {
  counter-increment: li; /* 计数器自增 */
  content: counter(li) "."; /* 生成序号文本 */
  position: absolute;
  left: 0; /* 把序号固定在li左侧 */
  /* 这里还可以加自定义样式,比如:color: #ff0000; font-weight: bold; */
}

这两种方法都能实现文本溢出省略的同时,保留清晰可见的数字序号,你可以根据自己的需求选一种~

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

火山引擎 最新活动