函数来计算html + css的显示高度

(以下问题: html列,其宽度根据其内容自动更改)</ p>

从PHP脚本, 我打印一些HTML代码,我想知道结果的高度是什么(用于分页计算)。 假设我有以下输入:</ p>


  • $ html代码我要打印(字符串); </ li>
  • $ css代码,包含完整详细信息 HTML(字符串)中出现的所有项目的字体和大小; </ li>
  • 所有相关的浏览器设置(字体,大小等); </ li>
  • page $ width,以像素为单位(int)。</ li>
    </ ul>

    我创建了一个如下所示的页面:</ p>

     &lt;  html&gt; 
    &lt; head&gt;
    &lt; style&gt; $ css&lt; / style&gt;
    &lt; / head&gt;
    &lt; body style ='width:$ width'&gt;
    $ html
    &lt; / body&gt;
    &lt; / html&gt;
    </ code> </ pre>

    我想知道,从PHP脚本中,从页面顶部到底部的像素数 编辑:</ p>

    编辑:我需要在服务器端执行此操作,在</ em>显示内容之前,因为我使用它来计算要放入的内容 。 例如,如果内容太高,我可能决定只放置上半部分等。</ p>

    另一种可能的用途是计算达到特定高度所需的宽度。 例如,我可能会尝试将它放在宽度为200px的div中,但结果可能太高了; 然后我尝试宽度400px等,直到找到宽度给出我想要的高度。</ p>
    </ div>

展开原文

原文

(Following this question: html columns whose width automatically changes according to their content )

From a PHP script, I print some HTML code, and I would like to know what will be the height of the result (for paging calculation). Suppose I have the following input:

  • $html code I want to print (string);
  • $css code, with full details of the font and size of all items that appear in the HTML (string);
  • all relevant browser settings (fonts, sizes, etc.);
  • page $width, in pixels (int).

I create a page that looks like this:

<html>
  <head>
    <style>$css</style>
  </head>
  <body style='width:$width'>
    $html
  </body>
</html>

I want to know, from within the PHP script, the number of pixels from the top of the page to the bottom of the text.

EDIT: I need to do this on the server side, before the content is displayed, because I use this to calculate what content to put. For example, if the content is too high, I might decide to put only the first half, etc.

Another possible use is to calculate what width is needed to achieve a particular height. For example, I might try to put it in a div with width 200px, but then the result may be too high; then I try width 400px, etc., until I find the width the gives the height that I want.

duana1986
duana1986 好的,但到那时,用户已经看过内容......我可能需要多次迭代-将内容放在宽度为800px的div中并测量高度,然后尝试宽度为600px并测量高度等直到我找到最佳宽度。如果我使用客户端度量,用户将在每次迭代中看到内容闪烁。我需要它是服务器端,以便用户只看到最终结果。
大约 8 年之前 回复
doushi7394
doushi7394 您不需要它是服务器端。只需在JavaScript中获取高度并将AJAX请求发送到PHP脚本,其中包含有关高度的信息。
大约 8 年之前 回复
drzrzzkh462254
drzrzzkh462254 我需要在服务器端执行此操作,因为我使用它来计算要放入的内容。例如,如果内容太高,我可能会决定只放置上半部分等。
大约 8 年之前 回复
douchuang1861
douchuang1861 使用jQuery不是更简单吗?
大约 8 年之前 回复

3个回答



如果要创建自己的服务器端浏览器,则会遇到加载时间问题。 如果这不是一个大问题,你可以解析css(类似这样:链接) 找出你的 $ html </ code>变量中使用的填充,边距,字体,行高等等,然后,如果你知道字体细节,你可以尝试计算内容高度(自然给出,来自 用户输入的浏览器)。 </ p>
</ div>

展开原文

原文

If you want to create your own server-side browser, you will have problems with load time. And if this is not a big problem, you can parse css (something like this: link) to find out what paddings, margins, fonts, line-heights and so on used in your $html variable, then, if you know font specifics, you can try to calculate content height (naturally given, from what browser the user entered).

douxu2081
douxu2081 不错的库,它不会做任何与显示相关的计算,它只会更改URL。
接近 8 年之前 回复
doukanwen4114
doukanwen4114 我认为这不是一个功能。 这将是一个很大的lib。 也许这会对你有所帮助
接近 8 年之前 回复
dongzhang1839
dongzhang1839 加载时间不是问题。 您知道已经进行计算的现有函数吗?
接近 8 年之前 回复
dongmi1864
dongmi1864 如果你知道浏览器设置和CSS样式,找出一个字母的宽度和高度不是一个大问题
接近 8 年之前 回复



您或许可以使用 TCPDF类来做到这一点。 根据此主题,该类限制了对CSS的支持,但如果你的 支持样式的想法是在writeHTML方法调用之前和之后检查当前位置(GetX()和GetY())。 </ p>
</ div>

展开原文

原文

You might be able to use the TCPDF class to do this. According to this thread the class has limit support for CSS but if your styles are supported the idea would be to examine the current positions, (GetX() and GetY()) before and after a writeHTML method call.



HTML呈现在客户端完成,而PHP驻留在服务器上。

因此,PHP无法确定HTML元素高度 服务器端。</ p>

但是,您可以使用JavaScript获取它。

请参阅:获取剪切DIV的完整高度 </ p>
</ div>

展开原文

原文

HTML rendering is done at client-side while PHP resides at server.
As such, PHP cannot determine HTML element height from server-side.

You would, however, be able to obtain that using JavaScript.
See: Get full height of a clipped DIV

douya6606
douya6606 此外,为了这个问题,假设所有浏览器设置都可用。
大约 8 年之前 回复
dsgni26260
dsgni26260 “它是渲染引擎(客户端的浏览器)渲染它” - 好的,渲染引擎是用一些编程语言编写的(例如C ++)? 因此,可以用PHP编写类似的程序。
大约 8 年之前 回复
dsideal2015
dsideal2015 当文本在服务器上时,数据并非全部存在。 文本的显示方式取决于用户的特定浏览器和操作系统。 即使您对每个浏览器/操作系统都包含特殊处理,您仍然不知道最终用户的字体大小设置为什么,等等。
大约 8 年之前 回复
douyongdao4046
douyongdao4046 这不可能。 HTML和CSS只是PHP的文本。 它是渲染引擎(客户端浏览器)的呈现引擎。 话虽如此,显而易见的是HTML元素的高度在浏览器与浏览器之间并不相同。
大约 8 年之前 回复
douguadao3883
douguadao3883 “只有文本形式的HTML标签” - 我也有完整的CSS。 因此,就像浏览器(这是一个计算机程序)可以采用HTML和CSS并决定如何显示它,PHP程序也是如此。
大约 8 年之前 回复
dqrsceg6279196
dqrsceg6279196 这是不可能的。 你必须在客户端进行,也许可以通过AJAX反馈它。
大约 8 年之前 回复
dtkp51520
dtkp51520 Javascript解决方案是不够的,因为它只计算显示后的高度,我需要知道显示它之前的高度,请参阅我的编辑。
大约 8 年之前 回复
douxiuyu2028
douxiuyu2028 有什么数据? 服务器端只提供文本形式的HTML标记。
大约 8 年之前 回复
dongxing8766
dongxing8766 “PHP无法从服务器端确定HTML元素高度” - 当然PHP无法直接访问HTML呈现,但必须有间接进行计算的方法。 毕竟,这是确定性的 - 所有数据都在那里。
大约 8 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问