前端开发的页面在部分 iOS 手机上出现了下面的情况,文本省略溢出问题
我分析原因可能是由于不同系统包含的字体的行高不一致,即使设置了height = line-height 一样会有以上问题。但是不知道该如何解决。求助
如果css不行,可以考虑用js来实现看看?动态计算并设置元素的高度和行高。通过获取元素的 scrollHeight
和 offsetHeight
,可以动态地调整 line-height
。
<div class="test-ellipsis">我是一段文字啊测试一下数据</div>
function adjustLineHeight() { const element = document.querySelector('.ellipsis'); const lineHeight = element.scrollHeight / element.clientHeight; element.style.lineHeight = lineHeight + 'px';}
我尝试了一下,在height = line-height = font-szie的情况下,加上padding-top: 1px可以解决这个问题,即在需要使用单行省略的地方加上,如下方代码
.demo { height: 28px; line-height: 28px; font-size: 28px; padding-top: 1px;}
这样使用,如:
<div class="text-overflow demo">我是需要进行单行省略的文案</div>
这样的情况呢要给文字单独套一层span,然后设置让span不换行或者限制几行。和什么型号的手机是没有关系的。
<div style="width:80px"> <span style=" overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical; white-space: normal; word-break: break-word; word-wrap: break-word; " > 两行就省略esttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest </span> </div>
让外层的div被span撑开就不会出现这样的情况了,而不是限制外层的高度。
可以用js计算总宽度,然后计算最多可以显示多少文字,做截断处理。
要解决 iOS 手机上前端开发页面文本省略溢出问题,你可以考虑以下一些方法:
使用 -webkit-line-clamp
属性
你可以使用 CSS 的 -webkit-line-clamp
属性来限制在一个块元素显示的文本的行数。这个属性是 WebKit 浏览器的私有属性,在 iOS 的 Safari 浏览器上有效。
.clamp-text { display: -webkit-box; -webkit-line-clamp: 3; /* 限制显示的行数 */ -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; /* 显示省略号 */}
将上述样式应用到需要限制文本行数的元素上即可。
确保设置合适的 box-sizing
确保元素的 box-sizing
属性设置为 border-box
,这样 padding 和 border 不会增加元素的总高度。
.clamp-text { box-sizing: border-box;}
考虑使用第三方库或插件
如果上述方法不适用或需要更复杂的文本截断逻辑,你可以考虑使用第三方库或插件,如 clamp.js
,它提供了跨浏览器兼容的文本截断功能。
调整字体大小和行高
如果问题的确与字体行高不一致有关,尝试调整字体大小或行高以确保在不同设备上的一致性。
使用媒体查询
针对 iOS 设备使用媒体查询来应用特定的样式。这样,你可以根据设备的特性来微调布局和样式。
/* 针对 iOS 设备应用特定的样式 */@media only screen and (max-device-width: 768px) { .clamp-text { /* 调整样式以适应 iOS 设备 */ }}
测试和调试
在多种 iOS 设备上进行测试,使用 Safari 的开发者工具进行调试,检查元素的计算样式,并尝试调整 CSS 属性以找到最佳解决方案。
注意,解决文本溢出问题通常需要针对具体情况进行调试和优化。由于不同设备和浏览器的渲染差异,可能需要多次迭代才能达到理想的效果。
问题内容: 我有一条路径列表(由于缺少更好的词,也许面包屑痕迹可以更好地描述它们)。有些值太长而无法在其父项中显示,因此我正在使用。问题在于重要信息在右侧,因此我希望省略号出现在左侧。像这样的ASCII艺术: 请注意,第一行足够短,因此仍保持左对齐,而其他两行又太长,因此省略号出现在左侧。 我更喜欢仅CSS的解决方案,但是如果无法避免,JS很好。如果该解决方案仅适用于Firefox和Chrome,
问题内容: 我在页面上有一个块元素集合。它们都设置了CSS规则的空白,溢出,文本溢出,以便修剪掉溢出的文本并使用省略号。 但是,并非所有元素都会溢出。 无论如何,我可以使用JavaScript来检测哪些元素正在溢出吗? 谢谢。 补充:我正在使用的示例HTML结构。 SPAN元素始终适合单元格,它们应用了省略号规则。我想检测何时将省略号应用于SPAN的文本内容。 问题答案: 很久以前,我需要这样做,
我不知道为什么这个简单的CSS不起作用... null null 应该在第4次“测试”前后切断
我正在寻找一种在文本中添加省略号的方法,当它超过一定数量的行。我不想使用一个插件,我从另一个答案中找到了一个纯JS代码。但是,省略号“……”应用于每一个元素,即使它没有通过数字的限制。 HTML: CSS: !!我添加了两倍于行高的高度,以使超过两行的文本溢出。如果我想要三条线,我放三倍的线高。 JS: 使用“之前”和“之后”的示例进行编辑: 前:Lorem ipsum dolor sit ame
我无法让工作,我希望有人能发现我找不到的错误。这是我的代码: HTML: CSS: JSFIDLE(JSIDLE):http://jsfiddle.net/59m5e6ex/ 我找到了这个,但据我所知,我的满足了所有要求。
jeecg前端vue2版本vue-cli3运行多页面栈溢出 我在本地运行多页面是ok的,但是使用jeecg的项目就报错,我本地的cli版本是5,不知道跟这个有没有关系,只配置一个页面就爆栈, 刚刚测试了一下,跟cli版本应该没关系,我用本地cli一样报错