如何将像素(px)转换为百分比(%),就像我们将像素转换为字体大小的em单位一样?

4

我曾使用em,但在嵌套项中遇到问题,所以决定按照YUI的建议使用%

要更改字体大小,请始终使用百分比作为单位,因为它们呈现得比em一致,并且因为它们允许用户自行调整大小(而像素不允许)。

如何将px转换为%?该网站可以将px转换为emhttp://pxtoem.com/

编辑

我发现这个例子很好,但只能使用24px。

http://yuilibrary.com/yui/docs/cssfonts/cssfonts-size.html

如何根据此表格计算每个px大小对应的%大小。例如,根据此表格,45px对应的是什么%大小。


1
你应该使用“em”来解决问题,而不是强制百分比做它们并非为之设计的事情。 - mike3996
@progo - 你说得对,使用“62.5%”技术计算em很容易。但是当涉及到嵌套元素时,问题就出现了,“62.5%”会将默认字体大小设置为“10px”,这太小了,难以阅读。 - Jitendra Vyas
8个回答

12

已经有两个答案发布了,但它们是不正确的。每个接受百分比长度的 CSS 属性都定义了这些值的计算方式。在 font-size 方面,CSS 2.1 规范如下:

 

百分比:         相对于继承的字体大小。

它永远不会依赖于窗口大小或其他因素。

如何将像素转换为百分比: 在大多数情况下,16pxfont-size 的默认值 - 这是 100%。因此,45px 将是 100% * 45px / 16px = 281.25%


+1 谢谢 - 他们在这里使用相同的方法吗?http://yuilibrary.com/yui/docs/cssfonts/cssfonts-size.html 他们使用 body { font:13px/1.231 arial,helvetica,clean,sans-serif; *font-size:small; /* for IE */ *font:x-small; /* for IE in quirks mode */ } - Jitendra Vyas
从错误的假设开始会导致错误的结果。 - theflowersoftime
这个很棒的工具将帮助您进行CSS单位转换。https://pxtoem.net/ 查看自定义转换->像素 - 百分比 - Edward

1

百分比是针对流式布局的,它始终依赖于浏览器的实际大小,并且会随着调整大小而改变,而固定布局则不管浏览器大小如何都不会改变。

换句话说,你所要做的是,你需要假设一些永远不正确的东西。

例如,你可以假设100%等于1024像素,但在我的屏幕上,它将是1920像素...


3
我认为他在谈论字体大小,如果是这样,那么你是错误的。字体大小的百分比是基于最近的父级字体大小设置值计算的,与浏览器窗口大小无关。 - mekwall
与百分比有关的问题,通常都要涉及到基数。 - mekwall

1
如何将px转换为%?
你不能。百分比是父元素字体大小的比例,最终(当你到达元素时)回退到用户的偏好(这是一个未知值)。像素大小是以像素为单位的大小(可以根据DPI而变化)。
就像这个Px转换为em http://pxtoem.com/一样。
这假设了用户的默认字体大小。这种假设通常是错误的。
如果您想做出相同的假设,则1em与100%相同(0.75em与75%相同,依此类推)。
您甚至不需要自己进行转换...您链接的表格包括百分比值!

这只是基本的乘法。 - Quentin

0

所有主要的浏览器都使用像素进行内部计算,因此它将为您执行计算。你可以通过JavaScript获取字体的像素大小(在我的情况下,我使用jQuery),从而轻松地获得像素大小。

请参见 jsFiddle上的测试用例

编辑: 我需要更多的咖啡因,重新读了问题后才意识到你需要相反的东西。

为了获得相反的结果,你可以像这个测试用例中那样操作。

但是,你必须知道基础像素以进行比较。在上面的测试用例中,我同时从父级font-sizebody元素获取百分比。


1
我��道那种感觉。虽然我的问题通常是我无法阅读。 - Joonas
@Lollero 哈哈,我也尽力做相反的事情了,我认为效果不错! - mekwall

0

我曾经用过Firebug。 我曾将百分比放入字体大小中,并在“计算”选项卡中进行检查。 如果与实际文档中的字体大小相同,则知道我需要这个百分比值。 经过几次转换,您就会知道哪个百分比值适用于文档中的哪个像素。 不是非常简单,但也不难。


-1
将html和body标签设置为100%。然后使用百分比来设置每个元素的大小。这样就相对于这些标签进行布局,从而得到一个完美的流式布局。

-1

将PX转换为%的简单公式是TCR,即 Target % Context = Result * 100。

此公式适用于字体像素到%和固定内容框到百分比框的转换。

如果您的字体大小为45px(目标),内容值为默认值16(Content),结果为2.81并乘以100,则会得到281.25,您可以将其四舍五入为281%。


目标 / 上下文 = 结果,而不是目标 % 上下文 = 结果。 - Balaji K S

-2

例子1:在1000px的容器中,找到一个200px div的百分比宽度:

200 / 1000 = .2 => 将小数点向右移动两位,得到20%的宽度。

例子2:将div的左右padding转换为百分比,其中padding为10px,元素宽度为350px,所有内容都在1000px的容器中。由于我们只考虑padding,因此忽略整个容器,上下文是350px和目标是10px。我们的左右padding将是:

10 / 350 = 0.02857142857142857(保留整个小数以确保数学上的完美)=> 将小数点向右移动两位,得到2.857142857142857%的左右padding。


1
这与字体大小有什么关系? - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接