这篇文章最初发表于 2009 年 8 月 21 日,现已更新,因为它已 _完全修订_。两种原始方法都已删除,现在被四种新方法取代。
这里的目标是在网站上使用背景图片,该图片始终覆盖整个浏览器窗口。让我们对此进行一些具体说明
- 用图片填充整个页面,没有空白
- 根据需要缩放图片
- 保留图片比例(纵横比)
- 图片居中于页面
- 不会 _导致_ 滚动条
- 尽可能地跨浏览器兼容
- 不是一些像 Flash 这样的花哨把戏

很棒、简单、渐进的 CSS 方法
现在,由于 CSS 中的 background-size
属性,我们可以完全通过 CSS 来做到这一点。我们将使用 html
元素(比 body
更好,因为它始终至少与浏览器窗口的高度相同)。我们为它设置一个固定和居中的背景,然后使用设置为 cover
关键字的 background-size
来调整它的尺寸。
html {
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 无论什么+
- IE 9+
- Opera 10+(Opera 9.5 支持
background-size
但不支持关键字) - Firefox 3.6+(Firefox 4 支持非供应商前缀版本)
更新:感谢评论中的 Goltzman 指出 Adobe Developer Connection 文章,其中包含一些代码,可以使 IE 也执行覆盖背景。
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
但要注意,读者 Pierre Orsander 说他们尝试过这个方法,但页面上的链接出现了一些问题。
更新:Matt Litherland 写信说,任何尝试使用上述 IE 过滤器并遇到滚动条、死链接或其他任何问题(如上面的 Pierre)的人,应该尝试**不要**在 html
或 body
元素上使用它们。而是使用一个固定位置的 div,宽度和高度为 100%。
仅 CSS 技术 #1
再次感谢,像往常一样,感谢 Doug Neiner 提供了这个替代版本。在这里,我们使用内联元素,它可以在任何浏览器中调整大小。我们设置一个 min-height
,使其始终垂直填充浏览器窗口,并设置 100% 的 width
,使其始终水平填充。我们还设置了图片宽度的 min-width
,以便图片永远不会小于它的实际尺寸。
特别聪明的是使用媒体查询来检查浏览器窗口是否小于图片,并使用百分比-left 和负 left margin
的组合来保持它始终居中。
以下是 CSS
img.bg {
/* Set rules to fill background */
min-height: 100%;
min-width: 1024px;
/* Set up proportionate scaling */
width: 100%;
height: auto;
/* Set up positioning */
position: fixed;
top: 0;
left: 0;
}
@media screen and (max-width: 1024px) { /* Specific to this particular image */
img.bg {
left: 50%;
margin-left: -512px; /* 50% */
}
}
适用于
- 任何版本的良好浏览器:Safari / Chrome / Opera / Firefox
- IE 6:坏掉了 - 但如果你使用某种固定定位的垫片,可能可以修复
- IE 7/8:主要有效,在小尺寸下不会居中,但可以很好地填充屏幕
- IE 9:有效
仅 CSS 技术 #2
处理这个问题的一个相当简单的方法是将一个内联图片放在页面上,将其固定定位到左上角,并赋予它 100% 的 min-width
和 min-height
,保留它的纵横比。
<img class="bg" src="images/bg.jpg" alt="">
.bg {
position: fixed;
top: 0;
left: 0;
/* Preserve aspet ratio */
min-width: 100%;
min-height: 100%;
}
但是,这不会使图片居中,而这是这里一个非常常见的愿望……所以,我们可以通过将图片包裹在一个 div 中来修复它。我们将使该 div 的大小是浏览器窗口的两倍。然后,图片将被放置,仍然保留它的纵横比并覆盖可见的浏览器窗口,以及它的中心。
<div class="bg">
<img src="images/bg.jpg" alt="">
</div>
.bg {
position: fixed;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
}
.bg img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
min-width: 50%;
min-height: 50%;
}
感谢 Corey Worrell 提出了这个想法。
适用于
- Safari / Chrome / Firefox(没有测试过很早的版本,但最近的版本都没问题)
- IE 8+
- Opera(任何版本)和 IE 都以相同的方式**失败**(定位错误,不知道为什么)
- Peter VanWylen 写信说,如果你通过 JavaScript 添加图片,则 img 需要具有 width: auto; 和 height: auto; 才能在 IE 8、9 或 10 中起作用。
2018 年 1 月更新:试图在 Android 上让它工作?JL García 写信给我说,他需要在 html 元素中添加 height: 100%; 和 overflow: hidden; 才能使其正常工作。完整的代码段是
html {
background: url(images/bg.jpg) no-repeat center center fixed;
background-size: cover;
height: 100%;
overflow: hidden;
}
jQuery 方法
如果我们知道图片(我们要用作背景的内联
)的纵横比是否大于或小于当前浏览器窗口的纵横比,那么整个想法就会变得容易得多(从 CSS 的角度来看)。如果它更低,那么我们可以在图片上设置 _仅_ width
为 100%,并且知道它将填充高度和宽度。如果它更高,我们可以在图片上设置 _仅_ height
为 100%,并且知道它将填充高度和宽度。
我们可以通过 JavaScript 获取这些信息。像往常一样,我喜欢依靠 jQuery。
<img id="bg" src="images/bg.jpg" alt="">
#bg { position: fixed; top: 0; left: 0; }
.bgwidth { width: 100%; }
.bgheight { height: 100%; }
$(window).load(function() {
var theWindow = $(window),
$bg = $("#bg"),
aspectRatio = $bg.width() / $bg.height();
function resizeBg() {
if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
$bg
.removeClass()
.addClass('bgheight');
} else {
$bg
.removeClass()
.addClass('bgwidth');
}
}
theWindow.resize(resizeBg).trigger("resize");
});
这没有考虑居中,但你绝对可以修改它来做到这一点。感谢 Koen Haarbosch 提出了这个想法。
适用于
- IE7+(可能可以用固定定位的垫片在 IE6 中使用)
- 大多数其他桌面浏览器
更新(2012 年 6 月):读者 Craig Manley 写信介绍了一种根据屏幕加载适当大小背景图片的技术。也就是说,不要为 iPhone 加载一些巨大的 1900px 宽的背景图片。
首先,你会制作像 1024.jpg
、1280.jpg
、1366.jpg
等等的图片。然后,你不会加载图片,而是加载一个垫片。
<img id="bg" style="position: fixed; left: 0; top: 0;" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="">
如果你不喜欢 gif 垫片(我个人认为它还可以,因为它不是“内容”,而是一个背景),你可以加载其中一张真实的图片。这段代码将考虑这种情况。
然后你测试屏幕宽度,并根据它设置图片的 src
。下面的代码在调整大小时执行此操作,你可能需要也可能不需要这样做。如果你想,你只需运行一次代码。
(function() {
var win = $(window);
win.resize(function() {
var win_w = win.width(),
win_h = win.height(),
$bg = $("#bg");
// Load narrowest background image based on
// viewport width, but never load anything narrower
// that what's already loaded if anything.
var available = [
1024, 1280, 1366,
1400, 1680, 1920,
2560, 3840, 4860
];
var current = $bg.attr('src').match(/([0-9]+)/) ? RegExp.$1 : null;
if (!current || ((current < win_w) && (current < available[available.length - 1]))) {
var chosen = available[available.length - 1];
for (var i=0; i<available.length; i++)="" {="" if="" (available[i]="">= win_w) {
chosen = available[i];
break;
}
}
// Set the new image
$bg.attr('src', '/img/bg/' + chosen + '.jpg');
// for testing...
// console.log('Chosen background: ' + chosen);
}
// Determine whether width or height should be 100%
if ((win_w / win_h) < ($bg.width() / $bg.height())) {
$bg.css({height: '100%', width: 'auto'});
} else {
$bg.css({width: '100%', height: 'auto'});
}
}).resize();
})(jQuery)</available.length;>
注意,屏幕宽度不是选择图片大小时唯一可能的好信息。 参见这篇文章。
尽情享受
如果你使用这个方法,请随时在下面的评论中留下你使用的技术,以及你是否对其进行过任何修改。看到“现实中”的技巧总是很酷的。
仅仅为了后代起见,这里还有一个名为 table.php
的示例,它使用了曾经是本文一部分的旧技术。它有一些巧妙之处,但并不像上面介绍的两种 CSS 技术那样好。
其他资源
- Vegas jQuery 插件(Jay Salvat)
- 如何更改背景图片的不透明度(DigitalOcean)
当背景图片被放大时,它似乎对 Firefox(可能还有其他浏览器)来说很重,如果你滚动浏览网站,就会有明显的延迟。
不过效果不错,谢谢!
是的。在 Chrome 中,有延迟。
对上一篇文章的很好补充。我个人不会想到使用表格 - 网页设计中的魔鬼!
不过效果很好。
这太棒了!在 w200% 和 h200% 以及 -50% 定位中非常清晰!
表格非常完美,因为它只是容纳了一张图片。你关注的可访问性内容在 DIV 上。
好的!?如果你喜欢在语义和 HTML 元素的正确使用上乱来,表格就可以。
这个解决方案丑陋得要命,一个 JavaScript 解决方案会更加优雅(如果做得好的话)。
他说“便便”?:D 一定有孩子。哈哈
我总是很惊讶,表格在设计社区中引起了多少仇恨 :)
@ Josh #2
公然错误地使用表格会产生很多仇恨,而且是理所当然的。
哦,我认为这几乎是仇恨的定义,不是吗?它让你有点不理性。
表格的问题是到处都是大量表格,毫无理由。
另一方面,这是一个美丽的解决方案,带有一个很小的表格。哦,谁在乎呢?!:-)
我同意这是可以的——这并不意味着在现实世界中,你将为该网站获得奖项。
当然,div 的设计初衷是用于布局。但在商业意义上(这就是我们大家如何把食物放在餐桌上),有时更快的方法是在这里和那里使用一个表格。
除非另有说明,否则我真诚地怀疑客户或雇主会在乎——我还没有遇到过这样的客户或雇主。
这是一个极好的解决方案 + 特别是它跨浏览器兼容,这才是最重要的。
表格……天哪……那些抱怨表格有多糟糕的人,他们的网站本身通常也不完美……哈哈……如果使用得当,表格完全没有问题,这是一个非常好的使用例子。
做得好,谢谢
昨天想过如何做这个,然后你今天发布了这个。这真是太棒了!
谢谢
不错的技巧。顺便问一下,如果代码中的图像在 CSS 中怎么办?
只是一个小小的挑剔。
用图片填充整个页面,没有空白
在演示中,当窗口宽度小于 1125 像素时,顶部和底部确实有空白。
我认为,与窗口大于 2560 像素时(使用大图像和 overflow:hidden)出现空白相比,该空白更有可能出现在用户的屏幕上——后者在本演示中不是这种情况,但在这里
在 Chrome 2.0.172.39 中,我在页面顶部和底部看到背景(在您的示例和http://ringvemedia.com/ 上),在 Opera 9.64 中,我在您的示例上看到滚动条。在http://ringvemedia.com/ 上,滚动条没有显示。
最新的 Opera 看起来对我来说很好,但确实 Chrome(Mac)中有一个错误。在有我可以测试的最终 Mac 版本之前,我不会去关注它。
http://img29.imageshack.us/gal.php?g=chromeq.jpg 这些截图是从我的家用台式机上拍摄的,但问题在工作中也是一样的,我在工作中使用的是 XP,在这里使用的是 Win 7。
Opera 截图来自 10 beta 版,但我在 9.64 版上遇到了同样的问题。
那是在我努力解决一个新想法来修复焦点/滚动问题时拍摄的几分钟内……
但 Opera 仍然有点问题。
伙计,当你发布像这样的技巧时,Opera 用户真的会从幕后走出来。
感谢您查看并细化了这一点。我在该网站上也找到了一个更早的方法,https://css-tricks.org.cn/how-to-resizeable-background-image/,但我最终使用了 Anders 在http://www.cssplay.co.uk/layouts/background.html 上使用的那个方法。
看来总有几种方法可以完成同一件事……仍然不确定表格在这种情况下是如何工作的,但无论如何看看还是很有趣的。
谢谢!
Doug
CSSPlay 的方法似乎会调整图像大小,这可能是不希望的。
Anders 的方法没有保留纵横比,对吗?
我同意 Chris 的观点,扭曲的纵横比是相当不可取的。
如果我们能不用“布局表格”就能做到这一点就好了,但这是一个非常棒的效果,非常适合照片博客、作品集等。
感谢分享!
不错的效果,Chris,我肯定会把这个用起来。干得好。
这种技术(至少是演示和 ringvemedia 网站)在 Safari 4.0.2 中运行得不太好。
水平缩放有点用,但垂直缩放不行。
截图
似乎是图像上的 min-height 属性在 Safari 4 中不起作用。不知道解决方案是什么。不幸的是,可能需要用到 JavaScript。
不错的概念证明,我喜欢这种类型的帖子。谢谢。
我使用的另一种方法是使用 jQuery,就像这样
解释一下,使用 jQuery,我获取了窗口的高度和宽度,然后使用 PHP GD 将我的背景调整到合适的尺寸。
您使用 jQuery 和 PHP 做这件事取得了什么样的成功?它在所有浏览器中都能正常工作吗?
这是一种处理全屏背景的非常糟糕的方法,geekbay。我猜你会在 $(window).resize() 上运行它,而不是 $(document).ready()?这意味着每次窗口大小改变时,你都会调用一个 PHP 脚本并让 GD 调整图像大小!你知道这将使用多少内存吗?!
只是一个小小的故障
$(body).style('background','url(phpthumb.php?src=bg.jpg&w='+w+'&h='+h+')');
很聪明 =)
您能解释一下吗?这个函数是在 document ready 函数中吗?在实现方面,再深入一点,能让我更好地理解。
谢谢
据我所知,这要么
a) 不随窗口大小调整
b) 每次更改窗口大小时都会重新请求图像。
更重要的是,这种技术会阻止浏览器缓存背景图像——对于像这样的大型图像来说,这是至关重要的。
非常酷的技巧。CSS3 也可以实现吗?我知道它目前还不支持 IE。只是好奇。
我以前也见过这个。最初就是受它启发的。
嗯,在 FF3.5 上,如果我按“空格键”,整个页面会滚动……
我通过使用 JavaScript 添加一个隐藏的输入并设置焦点来修复空格键问题。有点hacky,但暂时修复了这个bug。
好的,我已经在文章底部记录了目前已知的错误。如果您找到修复方法或更多错误,请告诉我。
页面滚动实际上可以用空格键完成,也可以用方向键完成,用于水平和垂直滚动。
我想这应该是一个焦点问题;无论如何,为了可访问性,最好将焦点放在中心元素上。
所以这意味着……JavaScript。
我看到唯一的难题是图像清晰度。 如果你在一个小窗口中加载一个巨大的图像,重新缩放可能会使它看起来很奇怪,或者说一个 1280 像素大的图像在巨大的屏幕上会显示大像素。 我通常会加载一个 1280 像素的标准图像作为背景,并在屏幕更宽时使用 Ajax 覆盖一个更大的图像。 这种情况下没有重新缩放,但至少可以绝对控制背景图像的质量。
这对我很有效:Supersized
这让我想起了我最近创建的全新 WPC2 系统。
我不能透露太多,但这确实让我想要用我的 WPC 页面调整大小技术重新创建你的示例,看看是否能消除你大部分的 bug。 如果我取得成功,我会回复这条评论并告诉你。
太棒了! 我以为这只有使用 Flash 才能实现。 感谢你的帖子。 我一定会用它来制作一个照片画廊页面。
如果你将鼠标悬停在图像上,IE 6 会显示图像栏。
即 IE 叠加的“保存打印”等按钮。
你可能想关闭它,它破坏了效果,我相信有办法做到这一点。
非常不错,我会试一下。 谢谢!
我也在看这个网站的背景图像解决方案。
http://www.type3digital.com/
提醒 - 他们是怎么做到的?
是啊,这个问题也一直在我的脑海中…:D
我会在我的一个客户项目中使用它。 真的比我之前用的 JavaScript 好多了。 谢谢!
在演示中,至少在 IE8 中,鼠标滚轮只在光标位于白色文本容器内时才会滚动内容,而且在高分辨率下有点迟缓。
太好了,它可以使用 CSS,但 bug 太多,无法有效使用。
我使用 supersize 2.0 来实现相同的效果(它也支持过渡)。 我在 这里 使用了它。
同意。 Supersize 2.0 看起来很棒。 它有 bug 或不一致的地方吗? 如果用户没有启用 JavaScript 会怎样?
Opera 9.6 中有一个滚动条,它滚动到空白区域。
感谢你的分享 - 太巧了,我正好需要这个!
Opera 10b3 中也存在垂直滚动条,但它是用于文本的 - 然而,如果我向下滚动(没有先点击文本),它会滚动图像而不是文本。
事实上,如果我在页面上进行中键单击,我可以在 Opera、Firefox 3.5、Chrome、Safari4 和 IE8 中滚动以显示 y 轴和 x 轴上的空白区域。 这在 whatstheweather 上也是如此,但只是在右侧。
~ Nix
FF3.5 中的滚动条“bug”不是 bug。 那是任何页面上向下滚动的键盘快捷键。 在此页面上试试,或者 Google 新闻,或者任何地方。 这个快捷键在 Chrome 和 IE8 中也有效。
这个“bug”指的是这个技巧,而不是 Firefox 本身。
如果浏览器的高度比图像的纵横比更大,我确实会在顶部和底部看到空白区域。 这需要进行缩放居中。
能有人解释一下为什么这个效果需要使用表格吗? 我假设表格有一些内在功能让它成为可能,但我不知道是什么。 从一开始学习 xhtml,我对表格不太熟悉;)
嗯,理论上很不错,但当前的浏览器在调整大小和滚动时似乎很滞后 - 而且除非你使用高分辨率图像,否则你很有可能看到非常不专业的伪影。 不过,这对将来很有帮助 =)
嗨,Chris。 感谢你的发布。 北面 网站具有类似的功能,但看起来他们使用了 Flash 解决方案。
我喜欢这个! 这是我最喜欢的 CSS Tricks 之一,我喜欢在 RSS Feed 中看到它出现! 很多人似乎不喜欢它,因为有小 bug 和互联网设计表格这个邪恶的小恶魔。 我个人的观点是,我讨厌表格,但如果它可以在不使用 Flash 或 JavaScript 的情况下完成工作,那么表格是可以接受的。 只有当你能够负担得起时,语义才是好的,并且是遵循的指南。 我们都要记住,目标是设计外观漂亮、功能正常的网站。 这些 CSS Tricks 真是太棒了!
感谢你的这个很棒的技巧! 我想我将在很多网站上使用这个技巧;) 这个技巧在 ie 5.5 上有效。 干得好!
我做了类似的事情。
http://dump.myxcp.net/de…..ound.html
缺乏垂直居中,但无论如何都很好用。 或者你可以把它设置为 100% 的高度和 100% 的最小宽度(这样它就可以轻松地水平居中)。
@monkey56657 我注意到在你的示例中,如果你的浏览器没有按比例调整图像大小,它不会垂直覆盖整个背景。
在技巧 1 中,当浏览器变得非常短时,会有一些奇怪的地方。
但技巧 2 很有效 :) 谢谢。
在技巧 2 中:如果你将 img.bg bottom: 0 设置为而不是 top: 0,你可以将图像锚定到浏览器窗口的底部,而不是将它锚定到顶部。 如果你有一个城市景观或其他底部设计的图像,这将变得非常重要。
技巧 2 是本文非常好的补充。
@Chris: 你能以某种方式表明这篇文章已经更新了吗?
感谢你的发布。 一个问题,为什么要使用表格? 有人尝试过在没有表格的情况下实现它,并且它有效吗?
FF3 中存在一个问题:如果我使用鼠标滚轮,我可以向左和向下滚动,就会出现空白区域。
如果你只用鼠标滚轮滚动它,你会看到周围有空白区域。
你检查过吗?
Chris,干得好。 全页面背景是我一直感兴趣的事情,但我一直没有真正理解它,因为图像尺寸、屏幕分辨率等不同。
我有点认为你应该根据客户端浏览器大小动态选择特定图像。
不过,这个看起来还不错!
嗨,Chris,
我在 Vista Business 64 位上的 Opera 9.64 中只看到“图片”占位符文本。 而 Firefox 在短暂地用背景图片呈现页面后,会重定向到你的 404 错误页面…
问候
Mathew
嗨,各位,
我喜欢 这个解决方案。 显然它是嵌入的 swf。 有人知道 .fla 文件中的 Action Script 代码长什么样吗? :)
这不是 Flash。 它是 JavaScript。
我可能漏掉了,但还有其他人用 IE7 或 8 显示背景图片时遇到问题吗?它在其他所有浏览器中都能完美运行,但在 IE 中却显示的是损坏的图片 logo,太糟糕了!我已经尝试过这两种方法了。
我对这个印象深刻,现在 Doug 想出了一个纯 CSS 的解决方案,它甚至更好了!
感谢您提供的精彩课程。但是,坦白地说,我犹豫是否要将这种技术应用到我的网站中。有时我会在 DIV 标签中包含表格,而表格会跳出主包装器。
非常好,我会在我的下一个项目中尝试一下。
最后,我终于找到了一个好教程,谢谢。
酷,我要把它添加到我的收藏夹中。
我最近不得不自己解决这个问题,想出了一个相当不错的解决方案,它符合标准,代码最少(只有一个额外的 div),不使用 Flash,而且似乎在所有浏览器中都能正常工作。试试这个:http://blog.urbanmainframe.com/2009/05/create-a-dynamically-resizing-background-image-using-css/
太棒了!而且时间刚刚好...
我之前见过这个网站,很好奇他们是怎么做到的。然后我就不管了,因为我无法通过代码弄清楚!
感谢这篇文章!
http://normalbookmark.com/ 有一个不错的 JS 全屏背景实现方式。
我个人更喜欢使用 swf(Flash)解决方案。swf 文件可以小于 15kb(压缩后)。我还查看了上面人们发布的 Flash 示例,所有示例在所有浏览器中看起来都完美无缺。纯 CSS 解决方案很好,但可能取决于你的图片大小,如果要调整大小,在我看来会有点棘手。另外,使用 Flash,Flash 可以更好地处理调整大小(从经验中说)......http://www.beyondfayte.com 使用 Flash 背景,是的,该网站是完整的 Flash 网站,但请注意背景是如何精美构建和过渡的。现在,假设一下,用这个 swf 文件实现你的网站(html 和 css)......。
虽然效果不错,但效果很好。
我之前见过这个技巧,也用过...它就像魅力一样,但在目前,使用 Safari 时出现了一些问题。它不会垂直适应。当窗口不是“宽”的时候,图片不会变形,在这个演示中会显示白色背景,在被引用网站上会显示“加载”背景。但我记得之前看到那个网站时,没有注意到这个问题。
问题 - 如何才能两全其美?一个带有全静态背景的滚动页面。他们在这里展示了一个 - http://ringvemedia.com/introduction.
嗨,Chris,
首先,感谢您提供的精彩文章。
我正在使用技术 #2,当我开始在内容包装器中添加额外的 div 时,遇到了一些奇怪的行为。
我不想在这里放太多代码,但这是在线页面
http://www.brentwoodrestaurant.com/bg_test.html
如您所见,我试图使用边距在 div 之间留出一些距离,但当我将边距应用于一个 DIV 时,边距由于某种原因被应用到了父 div 上。
我希望我能解释清楚我的问题,并且您有解决方案。
我不确定这是脚本的 bug 还是我的错误。
提前感谢。
没关系,我认为这完全与我嵌套的 div 有关,与脚本无关。
有趣的方法,效果很好,谢谢 :-)
好的,那么我们如何将其应用于 WordPress 主题呢?
我们可以为 WordPress 用户提供一些帮助吗?没有人谈论过将这段代码放在哪里,以及是否有人在 WordPress 下使用它。任何帮助都将不胜感激。
我认为这做得很好,但我有一个理论...
如果你不反对将你的解决方案与一些 php 和 javascript 结合起来,那么你可以使用 js 获取窗口的高度和宽度,然后使用 Joe Lencioni 的智能图片调整大小器,你可以这样定位你的图片
我认为你实际上可以调整图片的大小,而不是仅仅缩放它们,从而最大限度地减少下载时间。虽然这可能只会创建页面加载时的调整大小图片...然后你的其余解决方案可以从那里缩放它...
这仅仅是大声思考。我喜欢 Joe 的解决方案,并且一直使用它,我认为你可以将它整合到这个想法中,并产生很大的效果。
Supersized (http://buildinternet.com/project/supersized/) 工作得很好,可以调整以允许带有滚动的内容。
这里有一个例子:SOUND Phuket http://www.soundphuket.com
查看日历页面,它有一个滚动条。
Yo,你的描述中有一个错误!
快改改吧。我花了一个小时才弄明白。我想其他人都从演示网站上获取代码,那里是正确的,所以其他人没有注意到。(或者我一开始可能漏掉了什么:P)。
无论如何,在技术的描述中
html, body, #bg, #bg table, #bg td {
height:100%;
width:100%;
overflow:hidden;
}
但!在演示网站上
html, body, #bg, #bg table, #bg td, #cont {
…
.
缺少的是 #cont 的 100% 高度和宽度。如果没有它,滚动功能在任何浏览器中都无法正常工作。
干杯。
对于技术 1,如果您使用滚轮或键盘箭头向下,在 Opera 10 中似乎存在问题。
确实,这样您就会看到不希望看到的空白。
解决方案是将以下内容添加到 CSS:
#bg { position: fixed; }
这在所有浏览器中都有效。不错的帖子,我不是 100% 的粉丝,但这个似乎效果很好,我甚至可能在我的一个网站设计中尝试一下,所以感谢您分享。
试图弄清楚为什么图片在 DW 中不显示?我甚至用 EW3 测试过,在那里它可以正常工作...有什么想法吗?
允许显示内容的 div 容器在页面中间留下一个很大的白色框。
我请求一个更详细的教程,解释如何使所有代码框透明,与图片融为一体,以便我们可以将我们想要的所有链接和内容发布到我们各自的网站上。
只需要额外的信息,我们就可以实现任何功能。
我很高兴找到它,确实如此。我是一名摄影师,有时我会开发一些摄影网站,作为前平面设计师。
注意,如果我们 F11 浏览器,技术 #2 会拉伸图片。
感谢分享!
好吧,我的网站上还有一个问题需要解决。如何让内容框使段落标签分开。
我的主页上有很多段落标签,但它们都堆在一起,而不是放入内容框后分散开来。
我有点晚才注意到这个,但我真的很喜欢!这将显著改变我的设计方法。谢谢克里斯。
这似乎是一个很好的解决方案,特别是对于那些对向访客显示的内容很挑剔的客户而言。我能想到的唯一缺点是,对于更大屏幕的插值/分辨率与背景文件大小之间的关系。很棒的内容。谢谢
太棒了…!
它解决了我的所有“哦,不!-没有图片背景”问题。:D
它帮助我很多,尤其是在我的计算机项目中。
-点赞-
谢谢,很棒的文章。除了 CSS3 以外,我发现所有技术都是部分的,是短期的解决方案,在语义上存在问题,并且如上所述,存在性能挑战。我不会为了解决这类问题而牺牲缓存。
请参阅我在 stage-center.org 上实施的 CSS3 解决方案。
在 CSS 纯技术 #2 中,图像的正确样式应该是
#bg img {
position:absolute;
top:25%;
left:25%;
right:25%;
bottom:25%;
margin:auto;
min-width:50%;
min-height:50%;
}
请注意 25% 的定位,这是正确放置图像所必需的。这就是该方法在 Opera 中失败的原因。我还没有在其他浏览器中测试过它。
但根据 CSS 2.1 中的“视觉格式化模型详细信息”,绝对定位的图像无法通过 margin:auto 居中,这是一个真正的 bug。
很棒的帖子,谢谢 yaa。
新的 CSS3 方法太棒了。我似乎被要求在我的不到一半的项目中使用这种技术。我想从现在开始,我会结合使用 CSS3 方法,并使用其他技术为旧浏览器提供回退。
感谢克里斯,又一篇很棒的文章!
我一直探索各种非 Flash 全屏解决方案,用于我的设计。我想找到一个跨浏览器解决方案,它
a) 使用图像的中心而不是顶部进行调整大小
b) 能够在页面加载时淡入(具有完整的“预加载”控制)
c) 使用最少的代码以实现快速页面渲染。
Supersize 是我的首选之一。但是它的 JS 与其他元素冲突,我不喜欢图像无法始终如一地淡入。根据页面加载时的具体情况,无法确保控制该过程。
后来我找到了另一种方法,据我所知,该方法在所有浏览器中都能正常工作,不使用 JS 或 Flash,并且满足了我的需求。
它结合了 CSS 和表格的使用。我知道… 它不“纯净”,但它确实非常有效…
我能够使用 JQuery 针对 img 元素,使其在页面加载时淡入,就像我想要的那样 - 只有当图像真正准备好显示时才进行淡入 - 没有任何错误空间,也没有任何 JQuery 在图像完成下载之前启动淡入操作的余地。
我在以下网站上实现了它:http://www.cadranhotel.com/。
感谢:http://www.g2geogeske.com/ 提供此技术(我最初是在那里看到这个概念,并从中扩展而来)。
这是我的解决方案,一个 Dojo Toolkit 模块。如果可能,它使用 CSS3,否则回退到 JS。
http://code.ttcon.hu/fullscrn/
哇,以前不知道这个 CSS3 属性,这对于未来来说太棒了。
我喜欢 CSS3 越来越好…
感谢克里斯的帖子
这真的太棒了,谢谢!我将尝试“很棒、简单、渐进的 CSS3 方法”。迫不及待地想试试它….
谢谢!我现在用了它,它在我的 http://optikaikeret.hu 上运行良好:)
(匈牙利眼镜等网上商店)
嗨,
感谢您提供的绝妙提示!:) 我在我的即将推出的网站上成功实现了它。
不过,有一个快速的问题,可能不适合在这里发布,但您永远不会知道:有没有办法使这些背景随机?我目前使用的是 Joomla 网站,我只是想让每次有人访问页面时都能循环显示图片。我认为我可以使用某种 jQuery 或更好的 PHP 插件来实现,但我欢迎任何建议。
谢谢!
不错的帖子,我喜欢全屏背景,您提供了一些高质量的排序方法!干杯
谢谢,我今天正打算做这件事。真是太棒了,太巧了:P
全屏背景如果做得好的话真的很不错,您提供了各种各样的示例,我以前也研究过 Supersized,但我们从未实现它,虽然在看到这么多关于 Supersized 的正面评价后,将来我们会考虑实现它。LT
以下链接是我使用 jQuery 创建的一个网站,它模拟了 Flash 网站的外观和功能。
http://www.aurumdesign.com
背景是全屏背景,通过嵌套的 div 标签进行切换。它已经过测试,可以回溯到 IE6,并且在大多数浏览器中都能正常工作。由于根据客户的要求添加了一些随机 jQuery 功能,它在旧浏览器中的运行速度略慢。
很棒的帖子,感谢您的教程和代码。非常感谢。
嗨,我很好奇 TouchArcade.com 使用了哪些技术 - 我想让我的博客看起来像它一样,使用酷炫的背景图像
我不得不说我喜欢它,但像往常一样,它在 IE 6(灭绝的恐龙)上不起作用,我必须说我喜欢 jQuery 方法,因为我喜欢 javascript,感谢您的帖子,它很有帮助:)
很棒的文字,感谢您的帮助
当然,您始终要注意背景图片的大小。我通常会尝试将它们保持在 200kb 以下,以避免页面重量过大。在优化 JPEG 时,您通常需要牺牲图像质量来换取下载速度。
干得好,jQuery 在 IE7 和 FF3.6 上运行良好。但我可以看到图像在缩放之前就出现了。
有没有可能在后台加载图像,并在加载完成后显示?也许可以进行平滑淡入?我使用了 jquery.html。谢谢!
谢谢!
CSS #2 运行良好 - 请查看:http://keaneangle.com/idosocial
但在 ie7 和 ie6 中存在一些定位问题..
嗨,是否可以使用 javascript 在第一种方法(仅 CSS)中更改背景图像?
我不知道如何访问 html 标签。
以下代码不起作用
function changeBg(source){
document.html.background = source;
}
这太棒了,难怪您的帖子这么多,每个人都想了解如何做。谢谢。
CSS-only #2 太棒了!我同意 @GreLI 的建议,虽然这不会使图片居中,但这仍然是一个不错的 IE7 备用方案。我建议您也包含一些图像渲染属性以获得更流畅的结果
image-rendering: optimizeQuality; /* Gecko */
-ms-interpolation-mode: bicubic; /* IE */
嗨 Chris,你可能还想看看 jQuery 插件 fullscreenr 我刚在一个项目中开始使用它,效果很好!
嗨 Andy,我想分享一个做同样事情的 jQuery 插件:http://srobbin.com/blog/jquery-plugins/jquery-backstretch/#demo
Chris,好文章!
嘿 Chris,非常棒,感谢你的发布。
我的网页有粉红色的背景屏幕图片。但以这种方式将是一个非常好的图片。谢谢
只有 jQuery 和 CSS#1 在最新的 Opera 中正确运行。CSS#2 如文章中所述失败,而简洁的 CSS3 基本上可以工作,但背景图像会抖动(可能是由于 CSS 处理延迟?)。在禁用 JS 的情况下,jQuery 方法会崩溃,只剩下 CSS#1 是唯一可以正常运行的选项。太可惜了……
我的选择可能是
1. 使用 CSS#1 中的默认 1280px 宽图片,
2. 添加其他图片版本(800px、1920px,可能更多),并使用 jQuery 覆盖 CSS#1 技术。在禁用 JS 的浏览器中,1280px 宽的图片可能看起来不错,而在所有其他浏览器中,图片将完美显示,不会(或尽量少)进行上缩放,同时尽可能少地浪费带宽。
还要记住,在许多情况下,图像不需要进行缩减,有时仅显示图像的一部分(如同裁剪)就足够了。
我在公司网站上使用的方法是,图像在边界附近逐渐淡化为黑色(虽然它没有填充整个页面,但只填充页眉)。图片宽 1600px。在我的 1440px 宽屏幕上看起来完美,但我还在 1920px 宽屏幕上对其进行了测试,看起来完全可以接受。我想这取决于你脑海中的网站设计。
这正是我最新项目需要的!我的客户会很高兴,谢谢您!<3
感谢这篇文章。我有一个客户需要一个全页面背景,多亏了这篇文章,我能够做到。
这很有趣,因为我在工作中有一个项目需要完成这个功能,我被告知使用这个名为 BgStretcher 的插件(来自 ajaxblender.com)。
它使用 jQuery,但我并不介意尝试仅使用 CSS 3 来完成相同的目标。
使用 bgstretcher 有什么缺点吗?
非常感谢您
我已经在我的 html 代码中折腾了很长时间,现在终于一切正常了
感谢这篇文章!如果您不介意,它在我们博客上被推荐和链接(只是一段摘录):-)
如果图片是渐变 png 并且用与 background-color 相同的颜色覆盖,看起来会更好
有一个 IE 过滤器可以使这个 CSS3 技巧在任何 IE 版本中工作
http://cookbooks.adobe.com/post_Scale_Background_image_to_browser_size-17590.html
太可惜了,那个过滤器不会保留图片的纵横比。
好文章!我尝试在这里使用过滤器,但当它应用后,页面上的所有链接在 IE8 中都失效了(这意味着它们会显示出来,但不可点击)。如果我删除过滤器代码,所有链接都将再次可点击,但显然不再有背景了。有没有人遇到过这个问题并找到了解决方案?
Chris,你是我的英雄。我希望当我长大后能像你一样!
访问.. 好的信息.. 来吧 IE,成为最好的浏览器…… 我对 IE 太失望了,那里有很多错误。
不错的概念,喜欢它!
它运行正常,但在 IE 中会显示一些错误。
您好,我将使用 CSS3 选项,并且非常想让背景图片成为链接,有人知道如何实现吗?
您的第一个技巧(css3)存在问题。
我看到图像的左侧和右侧有一个像素的空白,具体取决于窗口的大小。
有时它在那里,有时它不在。
有解决方法吗?
Chris 是个传奇,就个人而言,只要 hack 方法简单直接且有效,我不会争论哪种方法更好。我将其应用于客户的 Joomla CSS,效果很好。网络社区再次慷慨解囊!
太棒了
有没有办法动态地更改此元素的背景? - 比如
<a>更改背景</a>
那太好了!有什么想法吗?
编辑者注:当然,使用 JavaScript,您可以监视对该锚链接的点击,选择 HTML 元素,并应用不同的背景。=)
抱歉 - 上一篇文章中更改背景的 html 代码写为 onclick=”document.html.background …
运行完美…… 只使用了提供的 css 并更新了图片…… 谢谢!
PS 我使用了 CSS 选项 #2
查看这里……
http://dsn.versusdsn.com
它在 opera 中不起作用
背景图片被调整大小并位于左上角
有人知道如何在我的背景图片上叠加一个图像,使其随着背景图片的缩放而缩放并保持位置(就像地图上的标记)吗?
太棒了。非常感谢您。我会在一些即将到来的项目中使用它 :)
运行完美,很棒的教程。
谢谢。
这些都是好信息。
作为新手,有什么想法这个网站是如何制作的吗?
http://www.yabupushelberg.com
谢谢!
对于旧版本的 IE 是否有有限版本,或者我可以实现一些特殊的脚本使背景壁纸更稳定?
好的,有人能帮我吗?
我想让这张图片
http://t2.gstatic.com/images?q=tbn:ANd9GcRd66tQRZBspVVECmBHu4pMluIer0Zl6lhzcfd-75xlp-_kIus2
成为我的 Tumblr 页面背景。 http://connerftw.tumblr.com/
但它只是平铺了 20 次。我希望它成为整个背景的一张图片。
我该怎么做?我完全弄不明白。
您好,
非常感谢您的教程!我已经成功运行它了,但在 iPhone 上遇到了高度被切断的问题。
是否需要为移动设备添加一些东西?索引页面没有问题,但当我进入她的博客页面时,它就被切断了,无法让用户向下滚动。
http://vanessafiola.com/blog
最好的问候,
Katrina
ie6 和 ie7 也存在同样的问题。也许 body 或 html 的 overflow-y:scroll; 可以解决问题.. 但您应该将其隐藏在其他浏览器中..
这个背景图片看起来很不错
http://www.setupsigning.nl/diensten.html
背景图片保持固定比例。图片平滑地调整大小。
我如何实现这个结果?
我爱你!!!!!!
CSS 技术 2 对我有效!但对于 IE 6 很可惜(你知道它仍然被很多人使用)
CSS 技术 2 对我有效。但对于 IE 6 很可惜(你知道它仍然被很多人使用)
在 IE8+ 中使用“很棒,简单,渐进,CSS3 方式”获得了有趣的视觉效果。
在客户的网站上,应用 CSS 后,以及上面 Adobe 提供的额外内容以使 IE 正常工作……所有链接都不可点击……
见这里:…客户测试网站…
想法?
顺便说一下,感谢你……Chris,你的视频和文章让我开启了新的职业生涯!我将永远感激你。你做了一件多么无私的事情,教导我们,我对此表示感谢。
Aaron
更新……
当使用“选项 #2”解决方案时,也会出现此问题……
我现在想揍比尔盖茨一顿……哈哈
有什么想法吗?
a
我现在认为问题出在
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader
到目前为止,我尝试过添加
hasLayout = 'true'
以及
在 css 中 alpha 语句的末尾添加不同的 z-index 值……
像这样
-ms-filter: “progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’/testSite/wp-content/themes/BareBones/images/bg3.png’, sizingMethod=’scale’, hasLayout = ‘true’)”
说真的,我确实开始对这个问题失去耐心……任何建设性的帮助或指导都将不胜感激。
a
我修复了它!!!!
在 body 标签后,将此添加到头部……
将 css 更改为以下内容
我和你遇到完全相同的问题,但我不太理解你如何解决的。你是否有使用过这种方法的网站?
#bg_image{
position: absolute;
top:0;
left:0;
right:0;
bottom:0;
margin:auto;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’/testSite/wp-content/themes/BareBones/images/bg3.png’, sizingMethod=’scale’);}
min-width:100%;
min-height:100%;
html{
background: url(/testSite/wp-content/themes/BareBones/images/bg3.png) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover; }
看起来只适用于微软“合作伙伴”100 万台设备的大型企业安装中的一台专有硬件。对我来说从未奏效。感谢您提供的精彩复制粘贴内容。在某个地方,嗯……
哇,Chris,这太棒了,正是我一直在寻找的东西,因为我的网站有点问题,非常感谢你
嗨,各位,
不错的教程,谢谢。我遇到了一个问题,想请教大家帮忙。我有一个客户希望用一张大图片作为背景,但它不应该缩放。我将在中心放一些内容,如果分辨率低于原始分辨率,背景不应该移动。我的意思是,背景图片应该始终具有固定高度、宽度,它应该居中,如果浏览器窗口宽度小于图片宽度,图片应该从两侧(左右)裁剪,而不是缩放。这样,我将始终获得正确的背景覆盖内容。
是否可以这样做?任何帮助都将不胜感激。
AB
嗨,AB
请提前原谅我拙劣的英语……
也许这会对你有所帮助
我设法将图像附加到底部,使用 top:auto; bottom:0px
对于 2560×1600 的图片,使用 min-height:640px 和 min-width:1024px,它几乎可以很好地适应任何分辨率/窗口大小……*隐藏*
尝试 top:0px;bottom:0px;left:auto;right:auto
希望它能有所帮助 :)
CSS 技术 2 对我有效。非常感谢您。
jQuery 方法对我来说很棒!!简直完美;) 谢谢!!
CCS3 方式大赞!在两个主要网站上添加后,它们似乎运行完美!!!
嘿,这确实是拥有漂亮背景的最干净、最简单的方法!
但我似乎无法在 DIV 中使用它。应该是可以的,对吧?
我的 DIV 具有流体宽度和 200px 的固定高度。
我希望背景图片始终适合宽度,保持纵横比并居中。
但是如何使用这些代码来管理呢?
我也有同样的问题,如果有人找到解决方案!
我使用了 jQuery 方法,它对我很有效。我只是喜欢 jQuery,尽管 css 可能“更干净”。感谢您提供的优秀文章
我在 jQuery 方法中遇到了一个问题……有时我需要刷新页面才能看到全尺寸图像……只是有时……存在延迟……有人可以帮忙吗?
谢谢!!
编辑说明:以上代码已更新以解决此问题。
这几乎完美地工作,但在大型屏幕上存在一个无法完全解决的故障。我将在此描述它,希望有人可以确认故障并查看是否有任何解决方案,或者是否是 background-size 属性中 cover 值的故障。
如果没有垂直滚动条,一切都完美地工作,
当存在垂直滚动条时,似乎左侧有大约 1% 的边距。当视口很大时,间隙开始变大,如果视口变小,间隙消失,工作正常,
如果我不写“no-repeat center center fixed”,而是写:no-repeat 49% center fixed,左侧边距问题将得到解决,但右侧将出现 1%,这比较好,但仍然不完美。
结论
我认为 cover 值做了一些近似处理,由于某种原因,至少在 Chrome、Opera 和 Safari 中,当存在垂直滚动条时,输出是错误的。只有 Firefox 和 IE 工作正常。
“很棒,简单,渐进的 CSS3 方式”对我有用!谢谢!
感谢您提供的精彩教程,图片尺寸应该是什么?
注意,当您使用 CSS3 方式执行此操作时,Windows 8 中的 Snap 模式存在错误。
[这里有一个带有此截图的 Dropbox 链接。](https://www.dropbox.com/s/7je5f19vxp9bwxb/iebug.png “这是一个包含 Dropbox 截图的链接。”)
如果您找到了解决方案,请告诉我。
我将它用于 body 元素,以使用条件 css 文件修复 IE8。
IE8 在整个公司中使用,因此在 IE 测试器中对其进行测试至关重要。
我的错误,body 元素上的 position fixed 不起作用,而是使用了以下内容
}
谢谢,css3 方式对我有用!
嗨,Chris……我对这个主题感兴趣。这可能已经晚了……但我尝试了基于教程的全屏背景。但添加了一些技巧……以下是我的代码
HTML
CSS
Jquery
$(window).load(function() {
var theWindow = $(window),
$bg = $(".home");
if(theWindow.width() != $bg.width())
{
$bg.css("width",theWindow.width());
}
if(theWindow.height() != $bg.height())
{
$bg.css("height",theWindow.height());
}
function resizeBg() {
if(theWindow.width() != $bg.width())
{
$bg.css("width",theWindow.width());
}
if(theWindow.height() != $bg.height())
{
$bg.css("height",theWindow.height());
}
}
console.log($bg.width() + " " + $bg.height());
console.log(theWindow.width() + " " + theWindow.height());
theWindow.resize(resizeBg).trigger("resize");
});
而且我成功地每次更改浏览器缩放比例时都加载它。感谢您的文章。
嘿,如果背景有 3 张图片。一张在顶部,一张在底部,中间一张垂直重复。我无法让它在一些较短的页面上拉伸。你可以在 http://www.konji.rs 上看到,我在一些页面上使用插件做到了,但这是一个问题。可以用两个做到:顶部和重复的,但没有自由度。有什么建议吗?谢谢
我经常使用这种方法,但我已经在一个客户的网站上实现了它,她使用 Windows 手机查看她的网站,背景没有拉伸。
我在 IOS 和 Android 上测试过,一切正常?有什么想法吗?
嗨,如何使非全屏背景(居中)但固定。
我有一个纯 CSS3(带 SASS)的解决方案,支持 Retina,IE 回退,并且它会根据屏幕分辨率加载图像。
HTML
SASS
混合器
SASS 样式
现在你需要 8 个版本的背景图片
例如,这些图片在
/assets/images/background/
文件夹中,所以你的绝对路径应该是yourdomain.com/assets/images/background/_768.jpg
,然后你需要这个+fullscreen('/assets/images/background', '.jpg')
使用 @media 查询,它将根据屏幕分辨率加载图片,如果它是 Retina 显示器,它将加载 Retina 图片(
双倍分辨率)
在 Firefox 25、Chrome 31 和 IE 7、8、9、10 中测试过
感谢这篇文章和 retina.js 的
(-webkit-min-device-pixel-ratio : 1.5)
解决方案在第 4 行,你可以找到这个
$image_p : '../images/' + $image_path + '/'
这取决于你的 CSS 位置。在我的解决方案中,图片在
/assets/images/background/moon/
和 CSS
/assets/stylesheets/style.css
. 所以,我需要在 $image_p 中添加
../images/
,并将混合器与+fullscreen('background/moon', '.jpg')
一起添加。这需要根据你的文件位置进行调整
谢谢!
嗨,迪诺,这看起来很棒。
你有没有想法,如何在包含多个背景图片的单页网站上实现这个效果?
谢谢,
卡洛斯
嗨,你可以将背景图片设置为一个类,并用 JavaScript 更改它。使用我上面的代码,做一些类似这样的事情
HTML
SASS
JQuery
你如何更改类并不重要。只需将 fullscreen 混合器设置为一个类,你就可以更改它。
感谢你迅速的回复。我稍后会尝试一下。
感谢你!:)
谁能告诉我,html/wordpress 主题的头部背景图片的最小安全尺寸是多少?是 1600 像素或更小吗?
这真的取决于你的主题和任何内置的限制,但考虑到大多数用户如今的屏幕至少有 1280 像素宽,我认为最好不要低于 1600 像素。
对于全屏图片或包含全宽图片的网站,我总是将它们设置为 1920×1280。我发现这是最好的尺寸,在 15 英寸笔记本电脑上看起来不错,在 27 英寸显示器上看起来也不错。
克里斯,刚才发生了两件事,我们都希望你的天才能够解决这个问题,因为多年来我们一直享受着你的背景“覆盖”方法。
1) 我的桌面 IE11 无法识别你的“覆盖”变量,它似乎使用了实际的尺寸,并且随着液体背景图片比例固定,以及背景尺寸相对于窗口尺寸,当窗口的比例(无论窗口大小)不符合设定的背景图片比例时,背景图片的侧边会在窗口边框内缩小。你可能知道,斯图·尼科尔斯在 2002 年使用一只白兔图片玩过这个操作系统敏感性问题。
那只兔子(今天比以往任何时候都更有效).
阿比谢克和观察我的盒子窗口块的其他微软工程师可能会感兴趣,所以我们会让他们看看。无论如何……我们怀疑他们比我们知道的更多。
2) 哦,同时,使用 Safari、Chrome 或 IE,Mac 或 PC,你这段评论中的评论会重叠,所以无法阅读,很遗憾。
2013 年圣诞节 W3C 范式转变?另一个全球 bug?谷歌/微软的战斗?主要影响(还有什么)IE 的本地化(希望如此)的网络交付问题?
怎么了,lol(很多笑声)。
我建议使用 imagecover.js 插件,它可以很好地用图片覆盖元素(它支持 CSS2 和 CSS3)
https://github.com/Metalchocobo/imagecover/
我刚刚在我的 CSS 中添加了这个,对我来说运行良好。
`{
margin:0;
padding:0;
}
/————————-
通用样式
————————–/
html{
/ 这张图片将全屏显示 /
background-image:url(images/bg1.jpg);
background-repeat:no-repeat;
background-position:center;
background-size:cover; / 魔法 */
}`
当我使用 CSS#1 时,我的部分文字在图片下方。如何解决这个问题?
我可以看到文字在图片下方,因为当我将 CSS 中的 top: 0px 更改为 top:60px 时,文字突然就出现了。
不用担心,使用 z-index 就解决了;)
使用了第二个技巧,但现在如果我在上面写东西,它就不会显示。
比如,如果我使用
<
p> 标签,它就不会显示,只有图片显示在浏览器中。
你需要添加
#bg {z-index: -10}
或任何其他比页面上其他元素更低的 z-index。#2 是迄今为止最好的解决方案,我已经尝试过多种方法/方式,但它从来不好看,尤其是对于散景图片来说。
感谢克里斯和科里·沃雷尔:)
我想让图片的顶部保持固定(这样它在宽屏上就不会消失),我应该使用什么方法,以及需要对代码进行哪些更改(如果有)?谢谢!
不工作。它没有调整图片大小。
很棒的资源。不过,我发现,如果过度使用过滤器,旧的 IE(IE6 和 7)有时会崩溃。只是需要注意一下。
感谢这些实用的代码片段!我使用了 jQuery 方法,但修改了它,使其始终保持图片居中。
是否可以有多个全页图片作为背景图片?
例如,如果你在 HTML 中有几个图片,你想让每个图片都具有浏览器的高度和宽度,以及与 background-cover 一样的比例缩放,但也要保持在文档流中,以便你可以像往常一样向下滚动页面。
基本上就像技巧 2,但没有在父元素上使用固定定位?
抱歉,我已经让它工作了。只需使用绝对定位而不是固定定位,并让一个相对定位的父元素来保持流。
但是,许多移动浏览器不支持 position: fixed。所以技巧 #1 可能不是一个好的选择。
嗨,它可以工作!谢谢。
我可以问一下,它在 jQuery Mobile 上也可以工作吗?网站可以,但是移动版是否相同?
我使用的是 >>>
body {
background-repeat: no-repeat;
background-attachment: scroll;
background-image: url(../image/mainbg.png);
max-height: auto;
max-width: 100%;
margin: 0px;
padding: 0px;
height: 800px;
background-position: 0px 0px;
width: 1280px;
}
那么,这在移动应用中对背景也有效吗?
谢谢 :)
对我来说,第一个选项不起作用。使用:background-attachment:fixed; 使其生效。
我尝试在一个由 jQuery 和 Angular 控制大小的块上使用 CSS3 方法。当我滚动它到视图之外,然后回到页面顶部时,背景要么消失,要么被分成多个部分。我根据 Juliana Bicycles 网站修改了下面的代码,它工作完美。
真的!查看代码源… 我们已经走了很远。为什么使用脚本替换默认的 DOM 标准?