Javascript mobile-根据屏幕尺寸以像素为单位计算元素尺寸



我想根据屏幕大小计算某些元素(img、ul、div等)的维度。我不能使用百分比值。我需要像素值。我也不想使用媒体查询和每种分辨率或屏幕大小的一组新图像来"硬编码"所有内容。

我想过用屏幕大小做这个。我只需要计算宽度。所以我添加了图像的初始宽度和它们之间的一些初始空间->总宽度,然后我使用屏幕宽度/总宽度获得缩放因子

现在我用这个因素缩放我所有的图像以及它们之间的空间。

这是一个非常简单的布局,只有几个图像和HTML元素。因此,这种扩展应该不昂贵。

如果这些设备能给我提供可靠的屏幕宽度测量,它就会起作用。但根据设备的不同,我对这个值有不同的理解。我正在使用屏幕宽度

在某些情况下,screen.width就是当前的宽度——在纵向中,它是一个小值,在横向中是一个大值。但在其他情况下,宽度总是相同的,即定义为设备宽度的值。

那么,在没有CSS%值的情况下,我如何根据当前屏幕宽度以与旋转一致的方式缩放布局呢?这是一种可以接受的布局缩放方式吗?

编辑:在尝试了Jasper的解决方案后,我必须添加更多的细节。这些图像在滑块中使用。滑块基本上是一个UL,每个LI都包含一个带有float:left的图像,因此所有图像都是一个接一个地水平附加的。隐藏溢出并填充时,只有当前幻灯片可见。现在,UL的官方宽度是所有包含的LI的宽度之和。这意味着,至少以我目前的知识状态,我不能对LI元素使用百分比大小,因为如果我使用了,这将是UL总宽度的%,这是非常大的,我以巨大的LI元素/图像结束

难道没有任何可靠的方法来获得所有设备的当前屏幕宽度吗?我已经有了工作代码,我只需要屏幕宽度的值是正确的。

新更新

这里有一个类似于我尝试做的方法:

http://ryangillespie.com/phonegap.php#/phonegap.php?

进入2011年6月18日";一屏分辨率统治他们所有";

我也尝试过在代码中复制粘贴这个例子。但它也不起作用。window.outerWidth与我在screen.width(以及JQuery$('body').width())中描述的问题相同。只要设备不旋转,它就可以工作——它初始化得很好。但在第一次旋转时,根据设备的不同,我会遇到问题。在一些情况下,它可以按预期工作,在另一些情况下它可以互换值,所以我在人像模式下得到大宽度,在风景模式下得到短宽度,在其他情况下它一直提供固定的宽度和高度,在另一种情况下它根本不旋转。。。。

这很可能单独使用CSS就可以实现(这通常对性能有好处):

img {
    width  : 100%;
    height : auto;
}

这将保持图像的所有纵横比,但将它们重新调整为100%宽度。现在,该宽度是基于图像的父元素宽度设置的。如果您使用的是jQuery Mobile,那么data-role="content"元素有一个15px填充,因此要删除它,您只需向删除填充的图像元素添加一个容器:

HTML--

    <div class="remove-page-margins">
        <img src="http://chachatelier.fr/programmation/images/mozodojo-mosaic-image.jpg" />
    </div>

CSS--

.remove-page-margins {
    margin : 0 -15px;
}​

还有walaa,您可以在没有大量代码或开销的情况下获得响应图像。

下面是一个使用容器和不使用容器的演示:http://jsfiddle.net/EVF4w/

巧合的是,我发现这是有效的:

$(window).resize(function() {
    updateScaling($('body').width());
}); 

这总是被调用并通过正确的宽度。据我记忆所及,它也适用于屏幕宽度

在updateScaling中,我计算了一个scalingFactor并调整了我的元素。

我尝试了响应CSS、媒体查询等,但在某个时候,它不再有意义了,因为我可以根据当前幻灯片和新宽度以及其他需要脚本的东西,重新计算滑块UL的裕度。所以我用脚本做了所有的东西。

我删除了window.onororientationchange.

相关内容

最新更新