当前位置: 首页 > 知识库问答 >
问题:

iOS 手机上前端开发页面文本省略溢出问题如何解决?

岑熙云
2024-06-06

前端开发的页面在部分 iOS 手机上出现了下面的情况,文本省略溢出问题

我分析原因可能是由于不同系统包含的字体的行高不一致,即使设置了height = line-height 一样会有以上问题。但是不知道该如何解决。求助

共有5个答案

令狐功
2024-06-06

如果css不行,可以考虑用js来实现看看?动态计算并设置元素的高度和行高。通过获取元素的 scrollHeightoffsetHeight,可以动态地调整 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';}
邹铭
2024-06-06

我尝试了一下,在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>
金谭三
2024-06-06

这样的情况呢要给文字单独套一层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撑开就不会出现这样的情况了,而不是限制外层的高度。

尹正奇
2024-06-06

可以用js计算总宽度,然后计算最多可以显示多少文字,做截断处理。

苏翰学
2024-06-06

要解决 iOS 手机上前端开发页面文本省略溢出问题,你可以考虑以下一些方法:

  1. 使用 -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; /* 显示省略号 */}

将上述样式应用到需要限制文本行数的元素上即可。

  1. 确保设置合适的 box-sizing

    确保元素的 box-sizing 属性设置为 border-box,这样 padding 和 border 不会增加元素的总高度。

    .clamp-text {  box-sizing: border-box;}
  2. 考虑使用第三方库或插件

    如果上述方法不适用或需要更复杂的文本截断逻辑,你可以考虑使用第三方库或插件,如 clamp.js,它提供了跨浏览器兼容的文本截断功能。

  3. 调整字体大小和行高

    如果问题的确与字体行高不一致有关,尝试调整字体大小或行高以确保在不同设备上的一致性。

  4. 使用媒体查询

    针对 iOS 设备使用媒体查询来应用特定的样式。这样,你可以根据设备的特性来微调布局和样式。

    /* 针对 iOS 设备应用特定的样式 */@media only screen and (max-device-width: 768px) {  .clamp-text {    /* 调整样式以适应 iOS 设备 */  }}
  5. 测试和调试

    在多种 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/ 我找到了这个,但据我所知,我的满足了所有要求。

  • 问题内容: 我正在固定一个下拉框的宽度(是的,我知道这样做存在跨浏览器问题)。 有没有一种非js的方法来切断溢出的文本并附加省略号?text-overflow:省略号不适用于元素(至少在Chrome中)。 问题答案: HTML在表单控件中指定的内容非常有限。这就为操作系统和浏览器制造商留下了做他们认为合适的空间(例如,iPhone的模式,当打开时,它看起来与传统的弹出菜单完全不同)。 看起来大多数

  • 问题内容: 我知道您可以使用CSS规则组合来在溢出时(不超出父级的范围)使文本以省略号(…)结尾。 是否有可能(随意说,不)达到相同的效果,但让文本换行超过一行? 如您所见,当文本的宽度大于div的宽度时,文本以省略号结尾。但是,仍然有足够的空间用于文本换行并继续。这会被中断,以使省略号起作用。 有任何想法吗? PS:没有JS解决方案,如果可能的话,使用纯CSS。 问题答案: 我不确定您是否看过

  • 问题内容: 我有的容器。我希望中间的孩子能占据整个空间,所以我定了它。到目前为止,一切都很好。 下一个级别是中间的孩子有2个孩子,因此我也希望将其设置为flex(如果您迷路了,请跳到摘要),第一个孩子设置省略号样式。现在,省略号停止工作。 如果您单击该按钮,您会看到所有带有短文本的内容都很好; 有任何想法吗? 问题答案: 添加到。 其实,MOSH Feu的建议在他的回答,也应该工作,确实,跨浏览器