CSS 图像大小调整

Posted

技术标签:

【中文标题】CSS 图像大小调整【英文标题】:CSS Image Resizing 【发布时间】:2011-03-18 05:30:57 【问题描述】:

我有这个 CSS 代码:

<style>
     body 
     position:absolute;
     background-image: url(art/c11.jpg);
     width:100%;
     height:100%;
     
</style>

当我在网上阅读时,我预计这会调整背景图像的大小并使其适合浏览器窗口。

但是没有。我想我显然做错了什么(我不知道足够的 CSS)。有什么建议吗?

更新:

我添加了孔示例(不起作用):

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>No Title</title>
<style type="text/css">
     body 
     position:absolute;
     background-image:url(art/c11.jpg);
     background-size:100%;
     background-repeat: no-repeat;
     width:100%;
     height:100%;
     
</style>
</head>
<body >
</body>
</html>

【问题讨论】:

你定位你的身体元素有什么原因吗?这应该不是必需的,但将主体的边距和填充设置为 0 通常是一个好主意。这会使一些浏览器的古怪默认值正常化。 【参考方案1】:

添加背景重复属性。

完成的代码应该是这样的:

身体 位置:绝对; 背景图片:url(art/c11.jpg); 背景大小:100%; 背景重复:不重复; 宽度:100%; 高度:100%;

【讨论】:

我不知道为什么,但是这两个例子都不适合我......无论如何,谢谢。 刚刚根据 amurra 的建议更新了代码。现在可以用了吗? background-size:100%; 节省了一天。【参考方案2】:

如果您要跨浏览器进行这项工作,最好将图像放在页面上,然后将所有内容包装在放在顶部的 DIV 中。例如

CSS

#background 
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;


#content 
  position: relative;
  z-index: 1;

如果你打算支持 IE6,那么添加这个 sn-p:

<!--[if IE 6]>
  <style type="text/css">
    html 
      overflow-y: hidden;
    

    body 
      overflow-y: auto;
    

    #background 
      position:absolute;
      z-index:-1;
    

    #content 
      position:static;
    
  </style>
<![endif]-->

HTML

<img id="background" src="art/c11.jpg"  />

<div id="content">
  Your content
</div>

Code in action.

【讨论】:

【参考方案3】:

我认为没有办法使用 CSS 来拉伸或控制背景图像的大小。但是,您可以使用 background-positionbackground-attachmentbackground-repeat 属性来获得替代结果..

或者您可以使用一些 javascript 将 Image 放入较低的 z-index 层并将该层设置为您的背景,但这有点hacking

【讨论】:

【参考方案4】:

使用css3可以实现透视图大小调整,

html  
background: url(bg.jpg) no-repeat center center fixed; 
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;

这适用于所有浏览器和 ie9+。 以下过滤器也适用于 ie7 和 ie8。

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.bg.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.jpg', sizingMethod='scale')";

【讨论】:

【参考方案5】:

您可以使用 background-size:100% 的 CSS3 属性,但对该属性的支持尚未全面,并且不适用于旧版浏览器。为了实现你想要的,你需要一堆技巧来让它工作。有许多像one 这样的博客会告诉你你需要做什么。我不建议这样做,因为如果你有一个大图像/慢速连接,你会看到图像加载。如果图像不是最好的质量,那么它在屏幕上或在不同的分辨率下都不会看起来很好。

【讨论】:

我不知道为什么,但是这两个例子都不适用于我......无论如何,谢谢。

以上是关于CSS 图像大小调整的主要内容,如果未能解决你的问题,请参考以下文章

如何在css中动态调整图像大小?

CSS 图像大小调整

在 css 中使用 % 调整图像大小

使用css和jquery调整图像大小后获取图像高度?

如何水平调整图像大小(通过 CSS)以适合框?

使用 CSS 按比例调整图像大小? [复制]