我希望我的背景图像拉伸和缩放取决于浏览器视口大小.
我已经在Stack Overflow上看到了一些关于完成这项工作的问题,例如Stretch和缩放CSS背景.它工作得很好,但我想使用background
而不是使用img
标签来放置图像.
在那个img
标签中放置一个标签,然后用CSS我们向img
标签致敬.
width:100%; height:100%;
它有效,但这个问题有点陈旧,并指出在CSS 3中调整背景图像的大小将会很好.我试过第一个这个例子,但它对我来说没有用.
是否有一个很好的方法来做background-image
声明?
1> Vashishtha J..:
CSS3有一个很好的小属性叫做background-size:cover
.
这会缩放图像,使背景区域完全被背景图像覆盖,同时保持纵横比.将覆盖整个区域,但如果调整大小的图像的宽度/高度太大,则部分图像可能不可见
如果纵横比不匹配,则覆盖裁剪图像,因此这不是一个好的通用解决方案.
@YannickMauray尝试:`background-size:cover; -ms-background-size:cover; -o-background-size:cover; -moz-background-size:cover; -webkit-background-size:cover; `
它似乎不适用于Firefox.但是,`background-size:100vw 100vh;`很好地解决了这个问题.
2> 小智..:
你可以使用CSS3属性来做得很好.它调整到比例,因此没有图像失真(尽管它可以放大小图像).请注意,它尚未在所有浏览器中实现.
background-size: 100%;
@nXqd这几乎就是完整的代码!创建一个带有"background-image"的容器并包含上面的属性.如前所述,浏览器支持还不是很好,并且有浏览器特定的版本.`-webkit-background-size`等参见[W3C CSS3模块:背景大小](http://www.w3.org/TR/2002/WD-css3-background-20020802/#background-size)和[ css3.info:background-size](http://www.css3.info/preview/background-size/)
要保留图像的纵横比,您应该使用"background-size:cover;" 或"background-size:contain;".我已经构建了一个在IE8中实现这些值的polyfill:http://github.com/louisremi/background-size-polyfill
建议添加"auto"以保持纵横比.
3> Fábio Antune..:
使用我提到的代码 ......
HTML
CSS
#background {
width: 100%;
height: 100%;
position: fixed;
left: 0px;
top: 0px;
z-index: -1; /* Ensure div tag stays behind content; -999 might work, too. */
}
.stretch {
width:100%;
height:100%;
}
这产生了预期的效果:只有内容会滚动,而不是背景.
对于任何屏幕尺寸,背景图像会调整大小到浏览器视口.当内容不适合浏览器视口,并且用户需要滚动页面时,背景图像在内容滚动时保持固定在视口中.
使用CSS 3,这似乎更容易.
但这不是背景图片.您只能对块执行此操作,但不能对输入[type = text]等内联元素执行此操作.还是我错了?
不需要class ="stretch",只需在CSS中使用#background img {}作为标识符
4> 小智..:
CSS:
html,body {
background: url(images/bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover; /* For WebKit*/
-moz-background-size: cover; /* Mozilla*/
-o-background-size: cover; /* Opera*/
background-size: cover; /* Generic*/
}
5> yeahdixon..:
background-size: 100% 100%;
拉伸bg以填充两个轴上的整个元素
6> Thorsten Nie..:
以下CSS部分应该使用所有浏览器拉伸图像.
我为每个页面动态执行此操作.因此,我使用PHP为每个页面生成自己的HTML标记.所有图片都在'image'文件夹中,以'Bg.jpg'结尾.
如果所有页面只有一张背景图片,那么您可以删除$pic
变量,删除转义反斜杠,调整路径并将此代码放在CSS文件中.
html{
background: url(images/homeBg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/homeBg.jpg', sizingMethod='scale');
-ms-filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/homeBg', sizingMethod='scale');
}
这是使用Internet Explorer 9,Chrome 21和Firefox 14测试的.
您的示例在向后兼容性方面不起作用,因为您只是忘记了供应商前缀的前导" - ".它必须是`-webkit-background-size`,`-moz-background-size`等等.请参阅https://developer.mozilla.org/en-US/docs/CSS/background-size#Browser_compatibility或者您可以将其包含在面向未来的简写属性中,例如`background:url(img/bg-home.jpg)无重复中心/盖固定;`
7> Kim Stebel..:
实际上,您可以使用img标签获得与背景图像相同的效果.您只需将其z-index设置为低于其他所有值,设置position:absolute并为前景中的每个框使用透明背景.
可能并且考虑到浏览器使用的发展,您可能只能在... 10年内使用它们?
8> RSH1..:
使用这个CSS:
background: url('img.png') no-repeat;
background-size: 100%;
9> 小智..:
您可以将此类添加到CSS文件中.
.stretch {
background: url(images/bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
它适用于:
Safari 3或更高版本
Chrome随时随地
Internet Explorer 9或更高版本
Opera 10或更高版本(支持Opera 9.5 background-size
,但不支持关键字)
Firefox 3.6或更高版本(Firefox 4支持非供应商前缀版本)
10> Aamer Shahza..:
由css-tricks解释
https://css-tricks.com/perfect-full-page-background-image/
演示:https://css-tricks.com/examples/FullPageBackgroundImage/progressive.php
代码:
body {
background: url(images/myBackground.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
11> 小智..:
为了根据容器大小适当缩放图像,请执行以下操作:
background-size: contain;
background-repeat: no-repeat;
12> Mahdi jokar..:
我使用它,它适用于所有浏览器:
Stretched Background Image
Stretch that Background Image!
This text appears in front of the background image. This is because we've used CSS to layer the content in front of the background image. The background image will stretch to fit your browser window. You can see the image grow and shrink as you resize your browser.
Go on, try it - resize your browser!
13> 小智..:
谢谢!
但后来它不适用于谷歌浏览器和Safari浏览器(拉伸工作,但图片的高度只有2毫米!),直到有人告诉我缺少什么:
尝试设置 height:auto;min-height:100%;
所以改变你的height:100%;
行,给出:
#### #background {
width: 100%;
height: 100%;
position: fixed;
left: 0px;
top: 0px;
z-index: -1;
}
.stretch {
width:100%;
height:auto;
min-height:100%;
}
就在新添加的代码之前,我在Drupal Tendu主题中有这个style.css
:
html,body {height:100%;}
#page {背景:#FFFFFF; height:auto!important; height:100%; min-height:100%; position:relative;}
然后我必须在Drupal中使用图片创建一个新块,同时添加class=stretch
:
只是用Drupal块中的编辑器复制图片不起作用; 必须将编辑器更改为非格式化文本.
14> Myke Black..:
我同意绝对div中的图像,宽度和高度均为100%.确保在CSS中为主体设置100%的宽度和高度,并将边距和填充设置为零.使用此方法可以发现的另一个问题是,在选择文本时,选择区域有时可能包含背景图像,这会使整页具有选定状态,这会产生令人遗憾的效果.您可以使用user-select:none
CSS规则来解决这个问题,如下所示:
content here
同样,Internet Explorer在这里是坏人,因为它无法识别用户选择选项 - 甚至Internet Explorer 10预览都不支持它,因此您可以选择使用JavaScript来防止选择背景图像(例如,http ://www.felgall.com/jstip35.htm)或使用CSS 3 background-stretch方法.
此外,对于搜索引擎优化,我会将背景图像放在页面的底部,但如果背景图像加载时间过长(即最初使用白色背景),则可以移动到页面顶部.
15> 小智..:
我想中心和缩放背景图像,而不是将其拉伸到整个页面,我希望保持纵横比.这对我有用,这要归功于其他答案中提出的变化:
在线图片:------------------------
CSS ----------------------------------
html {
height:100%;
}
#background {
text-align: center;
width: 100%;
height: 100%;
position: fixed;
left: 0px;
top: 0px;
z-index: -1;
}
.stretch {
margin: auto;
height:100%;
}
16> Ryan Den-Kaa..:
我结合使用了background-X CSS属性来实现理想的缩放背景图像。
background-size: cover;
background-repeat: no-repeat;
background-position: center;
background-attachment: fixed;
这使得背景始终覆盖整个浏览器窗口,并在缩放时保持居中。