将宽度和高度指定为百分比,而不会在HTML中倾斜照片比例

时间:2010-08-03 12:34:46

标签: html image resize size

我想知道在宽度和高度属性中,我可以指定宽度和高度作为百分比吗?

嗯,我猜这很明显,因为当我尝试这样做时,它会调整大小,但它似乎会影响我的图像质量。

以下是具有固定属性的标记示例:

<img src="#" width="346" height="413">

现在,在尝试将其缩小时,比如说减半,通过百分比:

<img src="#" width="50%" height="50%">

我得到的东西完全不同于:

<img src="#" width="173" height="206.5">

我认为我只是从根本上误认为我的百分比标记或其他东西,因为我的第二个和第三个例子在视觉上有显着差异。

更新 嘿,感谢大家所有有用的帖子!

我真的很喜欢Pat提出的jQuery建议,因为我建议使用一个片段,我实际上可以修改选择器并使其适用于所有受影响的fancybox影像,如此:

$('img.FancyBox').each(function(){
  $(this).width($(this).width() * 0.25);
});

真棒!

您可以在我的网站上查看实时效果: http://www.marioplanet.com/product.htm

它运行得很好,考虑到一旦我将它连接到我的SQL Server数据库,我就可以将一个jQuery代码段应用到我的产品页面上的所有FancyBox类图像。

谢谢你们!

8 个答案:

答案 0 :(得分:58)

第二个示例中的那些百分比宽度实际上是应用于<img>所在的容器,而不是图像的实际大小。假设您有以下标记:

<div style="width: 1000px; height: 600px;">
    <img src="#" width="50%" height="50%">
</div>

您生成的图像宽500像素,高300像素。

jQuery调整大小

如果您尝试将图片缩小到宽度的50%,可以使用jQuery片段来完成:

$( "img" ).each( function() {
    var $img = $( this );
    $img.width( $img.width() * .5 );
});

请确保先取下任何高度/宽度= 50%的属性。

答案 1 :(得分:17)

你可以设置一个或另一个(只是不是两个),这应该得到你想要的结果。

<img src="#" height="50%">

答案 2 :(得分:5)

区别在于:

这会将图像设置为原始大小的一半。

<img src="#" width="173" height="206.5">

这会将图像设置为可用演示区域的一半。

<img src="#" width="50%" height="50%">

例如,如果您将此作为页面上的唯一元素,它将尝试占据页面宽度的50%,从而使其可能大于其原始大小 - 而不是其原始大小的一半你期待着。

如果以大于原始尺寸的方式呈现,则图像将显示为极大像素化。

答案 3 :(得分:2)

如果我没有弄错的话,

width =“50%”和height =“50%”将width和height属性设置为父元素的宽度和高度的一半。如果你使用的是百分比,那么只设置宽度或高度应该将宽度或高度设置为父元素的百分比。

答案 4 :(得分:2)

由于缺乏有关原始图像尺寸的信息,指定宽度和高度的百分比将导致非常不稳定的结果。如果您要确保图片适合页面上的特定位置,那么您需要使用一些服务器端代码来管理重新缩放。

答案 5 :(得分:2)

尝试在css3中使用scale属性:

原作的75%:

-moz-transform:scale(0.75);
-webkit-transform:scale(0.75);
transform:scale(0.75);

原作的50%:

-moz-transform:scale(0.5);
-webkit-transform:scale(0.5);
transform:scale(0.5);

答案 6 :(得分:1)

来自W3Schools

包含元素的高度(以“20%”为单位)。

所以我认为他们指的是div所在的元素?

答案 7 :(得分:-5)

实际上有一种方法只使用html。只是设置:

if (c >= '0' && c <= '9') { ++ndigit[c-'0']; printf( "is digit '%c' ASCII=%d array_index=%d\n", c, c, c-'0' ); }