检测div是否有多行

Kis*_*ány 10 html css

如何检测div是否有多行?我的意思是这样的:

div :multiline {
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想格式化有关行数(1或更多)的内容

jse*_*sea 7

我不会把这个解决方案称为可能导致解决方案的东西.我觉得你的问题很有趣; 所以我决定尝试一下CSS.

这就是我提出的.

它使用内部的当前宽度span(通过inline-block显示给出)来确定缩进宽度.我们使用calc()缩进100%减去其父宽度的200px最后一个缩进添加到它(30px).

如果单行内容未接近容器的整个宽度,则效果最佳.

快速笔记:

  1. 我注意到由于单行内容接近容器的整个宽度而导致的一些故障情况.(全宽度导致错误视觉效果的距离因浏览器而异,在Chrome 33,Firefox 25和Internet Explorer 11中进行了测试)
  2. 它使用calc()(支持列表)
  3. 它使用:before伪类(支持列表)
  4. 它需要使用内部inline-block元素来跟踪内容宽度.
  5. 它要求父元素具有已知宽度.
  6. 这只包括缩进,这是他们在其职位评论中试图实现的OP国家.

HTML代码:

<h1>Success Cases</h1>
<p><span class="indent">Single line Single line</span></p>
<p><span class="indent">The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog.</span></p>
<h1>Failure Cases</h1>
<p><span class="indent">Single line Single line Single 1</span></p>
<p><span class="indent">Single line Single line Single line</span></p>
Run Code Online (Sandbox Code Playgroud)

CSS代码:

p {
    background-color: #ccc;
    margin: 10px;
    width: 200px;
}

p > .indent {
    display: inline-block;
}
p > .indent:before {
    background-color: red;
    content: "";
    float: left;
    width: calc(100% - 200px + 30px);
    height: 1em;
}
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这只适用于缩进,这是OP在其原始帖子的评论中试图实现的.它不会检测多线,而是使用内容的宽度来缩小缩进宽度.我认为实际检测元素是否为多行的更通用的解决方案只适用于JavaScript.您可以确定它是服务器端并附加多行类,但如果用户代理的字体大小被覆盖,缩小或放大,它将失败.在您想要实现的情况下,我会推荐JavaScript. (2认同)

Eag*_*nam 6

如果您愿意使用 Javascript/JQuery,您可以检查 div 的高度,看看它是否大于仅一行文本的高度。当然,这并不是非常防错,但我不知道还有其他方法。

  • 我也不这么认为。又搜索了一下,没有发现任何 JS 的东西。 (2认同)