javascript - chop 给定宽度(以像素为单位)的 php 字符串

标签 javascript php html

我想 chop 通过 PHP 从 MySQL 数据库获取的给定字符串以适合给定像素。我发现的大多数解决方案都是基于字符数的。但我特别想要根据像素长度。(我不想使用等宽字体)

我发现$('#idName').width()可以在JavaScript中用于拟合。这对于简单地用 HTML 编写的字符串来说效果很好。但事情是这样的。我的字符串是存储在 PHP 中的变量,我需要 JavaScript 来获取以像素为单位的宽度,并且我需要将该字符串放在具有特定 ID 名称的跨度(HTML 中)中。

因此,我尝试使用 PHP、HTML 和 JavaScript 三种语言来使其正常工作。下面是我的代码。

<?php
  $len=100;
?>

<span id='d' style="display:none;"><?php echo substr($details,0,$len) ?></span>
<script>
    var len=370;

    while($('#d').width()>len){
    <?php 
      $len=$len-1; 
      echo "<span id='d' style='display:none;'>" . substr($details,0,$len) . "</span>";
    ?>
    }
    <?php echo substr($details,0,$len); ?>
</script>

因此,我将字符串的前 100 个字母放入一个 ID 为 d 的范围内。然后在 JavaScript 中,我获取它的宽度并检查 while 循环。我运行 while 循环(不断减少 $len),直到子字符串的像素长度在所需的宽度内,并继续在具有相同 id 的跨度中重新定义该子字符串。然后我打印该子字符串。

有人可以更改代码以使其工作或建议更好的方法吗?我是这方面的新手,所以请尽可能简单。

最佳答案

据我从你的问题中了解到,当字符串比给定的容器长时,你试图 overflow hidden ?

我宁愿建议使用溢出:隐藏;空白:nowrap;也许还有一些文本溢出:省略号;在容器末尾之前制作“...”效果。但您必须记住,大多数浏览器和操作系统的字体呈现方式都不同,因此 Windows 上的用户体验可能与 Mac 上不同。

关于javascript - chop 给定宽度(以像素为单位)的 php 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21503059/

相关文章:

javascript - Bootstrap 5 Cards 需要使用 SwiperJS Slider 高度相同

javascript - 如何从不是 HomeScreen 的组件内部访问 react-navigation?

php - 联营公司如何跟踪购物车?

javascript - 将对象传递给 Switch Case Javascript

javascript - 尝试在类似类的 javascript 中使用 Angular ngTable

php - laravel 通过标签获取相关帖子

php - 文本区域中的制表符空格问题

javascript - Controller 内的 Angular 位置固定( Angular 模态?)

html - CSS 外部样式表不起作用,但完全相同的 CSS 在内部样式表上起作用

javascript - 是否可以在 html 中的 <select> 中使用 for 循环?如何?