我希望我的背景图像拉伸和缩放取决于浏览器视口的大小。
我在Stack Overflow上看到过一些问题,比如拉伸和缩放CSS背景。它工作得很好,但我想使用背景放置图像,而不是使用img标签。
在其中放置了一个img标签,然后用CSS向img标签致敬。
width:100%; height:100%;
它的工作,但这个问题有点老了,并指出在css3调整背景图像的大小将工作得很好。我已经尝试了第一个例子,但它不适合我。
是否有一个好的方法来做背景图像声明?
我希望我的背景图像拉伸和缩放取决于浏览器视口的大小。
我在Stack Overflow上看到过一些问题,比如拉伸和缩放CSS背景。它工作得很好,但我想使用背景放置图像,而不是使用img标签。
在其中放置了一个img标签,然后用CSS向img标签致敬。
width:100%; height:100%;
它的工作,但这个问题有点老了,并指出在css3调整背景图像的大小将工作得很好。我已经尝试了第一个例子,但它不适合我。
是否有一个好的方法来做背景图像声明?
当前回答
您可以使用border-image: yourimage属性将图像缩放到边界。即使你给出了背景图像,边界图像也会被绘制在它上面。
如果你的样式表是在不支持css3的地方实现的,border-image属性是非常有用的。如果你使用谷歌Chrome或Firefox,那么我推荐使用background-size:cover属性本身。
其他回答
我同意图片在绝对div 100%的宽度和高度。确保在CSS中为主体设置100%的宽度和高度,并将边距和填充设置为零。使用此方法您将发现的另一个问题是,在选择文本时,选择区域有时会包含背景图像,这具有使整个页面具有所选状态的不幸效果。你可以通过使用user-select:none CSS规则来解决这个问题,如下所示:
<html>
<head>
<style type="text/css">
html,body {
height: 100%;
width: 100%
margin: none;
padding: none;
}
#background {
width: 100%;
height: 100%;
position: fixed;
left: 0px;
top: 0px;
z-index: -99999;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
#background img {
width: 100%;
height: 100%;
}
#main{ z-index:10;}
</style>
</head>
<body>
<div id="main">
content here
</div>
<div id="background"><img src="bg.jpg"></div>
</body>
</html>
同样,ie浏览器在这里是坏人,因为它不识别用户选择选项-甚至Internet Explorer 10预览也不支持它,所以你可以选择使用JavaScript来阻止背景图像选择(例如,http://www.felgall.com/jstip35.htm)或使用css3 background-stretch方法。
另外,对于搜索引擎优化,我会把背景图片放在页面的底部,但如果背景图片加载时间太长(也就是说,最初的背景是白色的),你可以移动到页面的顶部。
您可以使用CSS3属性很好地做到这一点。它会根据比例调整大小,因此不会产生图像失真(尽管它会放大小图像)。请注意,它还没有在所有浏览器中实现。
background-size: 100%;
谢谢!
但后来在谷歌Chrome和Safari浏览器上就不行了(拉伸可以,但图片的高度只有2毫米!),直到有人告诉我缺少什么:
尝试设置高度:auto;min-height:100%;
所以根据你的身高来改变: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 themes style.css中有这样的代码:
html,身体{高度:100%;} 页面#{背景:# ffffff;高度:汽车!重要;高度:100%,最低高度:100%;位置:相对;}
然后,我必须在Drupal中创建一个新的块,同时添加class=stretch:
< img alt=“” class=“stretch” src=“pic.url” />
只是用Drupal块中的编辑器复制图片是行不通的;必须将编辑器更改为非格式化文本。
如果你想让内容水平居中,可以使用这样的组合:
background-repeat: no-repeat;
background-size: cover;
background-position: center;
看起来会很漂亮。
您可以使用border-image: yourimage属性将图像缩放到边界。即使你给出了背景图像,边界图像也会被绘制在它上面。
如果你的样式表是在不支持css3的地方实现的,border-image属性是非常有用的。如果你使用谷歌Chrome或Firefox,那么我推荐使用background-size:cover属性本身。