在css中设置最大字符长度

Sha*_*111 157 html css html5 text css3

我正在为学校制作响应式网站,我的问题是:

如何在我的网站上设置句子的最大字符长度(使用css)(如75个字符),当我有一个非常大的屏幕时,句子不会超过75个字符.

我尝试了最大宽度,但这会弄乱我的布局.我正在使用flexbox和mediaqueries来使其响应.

Van*_*Tzo 223

你总是可以通过像这样设置max-width和溢出来使用truncate方法ellipsis

p {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 200px;
}
Run Code Online (Sandbox Code Playgroud)

一个例子:http://jsfiddle.net/3czeyznf/

对于多行截断,请查看flex解决方案.截断3行的示例.

p {
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}
Run Code Online (Sandbox Code Playgroud)

一个例子:https://codepen.io/srekoble/pen/EgmyxV

  • 谢谢,我理解省略号的使用,但我不知道这如何解决我的问题。我认为当屏幕变小时,省略号是正确的,但当屏幕变大时,我希望它在 75 个字符处截断。正如 @Jean-luc 所说,它只能通过 javascript 实现?抱歉,我是编码新手 (3认同)
  • 这会影响段落宽度,而不是句子长度。200px 可以是任何字符(它甚至取决于你是否有很多 i 还是很多 W,以及字体和大小)。 (2认同)

Pau*_*e_D 90

有一个CSS'长度值' ch.

来自MDN

此单位表示元素字体中字形'0'(零,Unicode字符U + 0030)的宽度,或更准确地说是提前度量.

这可能与你所追求的近似.

p {
  overflow: hidden;
  max-width: 75ch;
}
Run Code Online (Sandbox Code Playgroud)
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt rem odit quis quaerat. In dolorem praesentium velit ea esse consequuntur cum fugit sequi voluptas ut possimus voluptatibus deserunt nisi eveniet!Lorem ipsum dolor sit amet, consectetur
  adipisicing elit. Dolorem voluptates vel dolorum autem ex repudiandae iste quasi. Minima explicabo qui necessitatibus porro nihil aliquid deleniti ullam repudiandae dolores corrupti eaque.</p>
Run Code Online (Sandbox Code Playgroud)

  • 不知道为什么这有这么多的赞成票,因为它显然不完整并且不能使用提供的代码。您需要添加 `white-space: nowrap;` (6认同)
  • 这是否已被任何浏览器实现?对我来说似乎根本不起作用。编辑:仍然草稿 http://dev.w3.org/csswg/css-values/#lengths (4认同)

V K*_*ngh 36

尝试将其设置为max-width后截断字符.在这种情况下我使用过75ch

p {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 75ch;
}
Run Code Online (Sandbox Code Playgroud)
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nisi ligula, dapibus a volutpat sit amet, mattis etc. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nisi ligula, dapibus a volutpat sit amet, mattis etc.</p>
Run Code Online (Sandbox Code Playgroud)

对于多行截断,请点击链接.

一个例子:https://codepen.io/srekoble/pen/EgmyxV

我们将使用webkit css.简而言之,WebKit是Safari/Chrome的HTML/CSS Web浏览器渲染引擎.这可能是特定的,因为每个浏览器都由渲染引擎支持以绘制HTML/CSS网页.


小智 13

示例代码:

.limited-text{
    white-space: nowrap;
    width: 400px;
    overflow: hidden;
    text-overflow: ellipsis;
}
Run Code Online (Sandbox Code Playgroud)
<p class="limited-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut odio temporibus voluptas error distinctio hic quae corrupti vero doloribus optio! Inventore ex quaerat modi blanditiis soluta maiores illum, ab velit.</p>

    
Run Code Online (Sandbox Code Playgroud)


小智 8

使用Chrome,您可以设置“ -webkit-line-clamp ” 显示的行数:

     display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;  /* Number of lines displayed before it truncate */
     overflow: hidden;
Run Code Online (Sandbox Code Playgroud)

所以对我来说,它是在扩展程序中使用的,因此它是完美的,请在此处获取更多信息:https : //medium.com/mofed/css-line-clamp-the-good-the-bad-and-the-straight-up -broken-865413f16e5


Jea*_*Luc 6

这对于 CSS 来说是不可能的,你必须使用 Javascript。虽然您可以将 p 的宽度设置为最多 30 个字符,并且下一个字母会自动向下排列,但同样,这不会那么准确,并且如果字符为大写,则会有所不同。

  • 更好的是你需要检查@VangelTzo的答案 (2认同)

Muh*_*eed 5

现代 CSS 网格答案

在CodePen上查看完整的工作代码。给定以下 HTML:

<div class="container">
    <p>Several paragraphs of text...</p>
</div>
Run Code Online (Sandbox Code Playgroud)

您可以使用 CSS 网格创建三列,并告诉容器包含段落的中间列的最大宽度为 70 个字符。

.container
{
  display: grid;
  grid-template-columns: 1fr, 70ch 1fr;
}

p {
  grid-column: 2 / 3;
}
Run Code Online (Sandbox Code Playgroud)

它是这样的(查看CodePen以获得完整的工作示例):

在此输入图像描述

这是另一个示例,您可以使用 minmax 设置值范围。在小屏幕上,宽度将设置为 50 个字符宽,在大屏幕上,宽度将设置为 70 个字符宽。

.container
{
  display: grid;
  grid-template-columns: 1fr minmax(50ch, 70ch) 1fr;
}

p {
  grid-column: 2 / 3;
}
Run Code Online (Sandbox Code Playgroud)

  • 没有意识到您可以在列上使用“ch”。迷人的。 (2认同)