我正在引用CSS Trick的整页背景并使用我在这里完美运行的Jquery方法:www.oxbowdesigns.com
但是,我无法更新jquery以使图像居中,而不是在出现溢出时保持固定在左侧。
以下两张图片展示了现在正在发生的事情以及我的目标:
这是我正在使用的代码:
$(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");
});
#bg {
position: fixed;
top: 0;
left: 0;
}
.bgwidth {
width: 100%;
}
.bgheight {
height: 100%;
}
<img src="images/Homepage/HomepageResize2.jpg" id="bg">
我尝试过使用CSS保证金:50%;和其他CSS技术没有运气。任何指导将不胜感激!
谢谢, 克里斯
答案 0 :(得分:0)
下面的代码可以满足您的需求:这是css方法,无需使用js
body {
background: url(../../images/HomepageResize2.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
答案 1 :(得分:0)
我想上次我的想法错了,当我再次访问你的链接时,我意识到Script
和CSS
是错误的,这里应该是正确的
首先是CSS
:
body, html {
overflow: hidden; // So there is no scrollbar
}
.bgwidth {
width: 100%; // No more need to use top:50%
}
.bgheight {
left: 50%; // No more need to use height:100%, because you never set the height, so it should always be 100%
}
和第二个Script
:
var theWindow = $(window),
$bg = $("#bg"),
aspectRatio = $bg.width() / $bg.height();
var imgWidth = $bg.width();
var imgHeight = $bg.height();
function resizeBg() {
var heightDifference = (theWindow.height() - $bg.height()) / 2;
if ((theWindow.width() / theWindow.height()) < aspectRatio) {
$bg.removeClass().addClass('bgheight');
$bg.css("margin", heightDifference + "px 0 0 -" + imgWidth / 2 + "px");
} else {
$bg.removeClass().addClass('bgwidth');
$bg.css("margin", heightDifference + "px 0 0 0");
}
}
theWindow.resize(resizeBg).trigger("resize");
请注意与之前的差异,imgWidth
和imgHeight
不再除以2,而var
函数中还有另一个resizeBg
来计算window
函数之间的高度差{1}}和img
除以2,然后在css
上,margin-top
设置为heightDifference
(因为它始终从顶部开始,所以没有需要使用top: 50%
),如果是bgheight
,则将margin-left
设置为imgWidth
的一半
所以基本上它总是centering
image
垂直,然后如果width
大于窗口,它会将image
水平居中
这是更新后的Fiddle
在查找您的网站后,我发现您使用的是position: fixed
图片,在这种情况下,您可以使用left
和margin
设置图片位置的样式
您需要的是将class
样式更改为此
.bgwidth { width: 100%; top: 50%; } // Center the position vertically
.bgheight { height: 100%; left: 50%; } // Center the position horizontally
然后在您的脚本中添加更多代码
function resizeBg() {
var imgWidth = $bg.width() / 2;
var imgHeight = $bg.height() / 2;
if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
$bg.removeClass().addClass('bgheight');
$bg.css("margin", "0 0 0 -" + imgWidth + "px"); // margin-left minus half of width
} else {
$bg.removeClass().addClass('bgwidth');
$bg.css("margin", "-" + imgHeight + "px 0 0 0"); // margin-top minus half of height
}
}
它的作用是,如果类为bgheight
,您希望水平居中image
,这就是为什么您首先将image
的位置设置在中心({{1然后,您将边距设置为left: 50%
,其中0 0 0 x
是x
宽度的负半边,因此它将显示图像的中心。上面的代码尚未测试,但如果image
这是example没有.css
,只是认为script
是当前窗口
答案 2 :(得分:0)
首先抱歉重命名css和变量。我正在为自己做一些事情,并且正在寻找如何使图像居中。我找到了解决方案,并认为我会分享它。
String urlParameters = URLEncoder.encode ("idRoute", "UTF-8") + "=" + URLEncoder.encode ("1", "UTF-8");
wr.writeBytes(urlParameters);
&#13;
$(window).on("load", function() {
var windowData = $(window),
wallpaper = $('#wallpaper'),
aspectRatio = wallpaper.width() / wallpaper.height();
function resizeWallpaper() {
var widthLarger = false;
if ((windowData.width() / windowData.height()) < aspectRatio) {
widthLarger = true;
wallpaper.removeClass().addClass('wallpaperHeight');
} else {
widthLarger = false;
wallpaper.removeClass().addClass('wallpaperWidth');
}
var imgWidth = wallpaper.width();
var imgHeight = wallpaper.height();
var diff = 0;
if (widthLarger) {
if (imgWidth > windowData.width()) {
diff = (imgWidth - windowData.width()) / 2;
}
wallpaper.css("margin", "0 0 0 -" + diff + "px");
} else {
if (imgHeight > windowData.height()) {
diff = (imgHeight - windowData.height()) / 2;
}
wallpaper.css("margin", "-" + diff + "px 0 0 0");
}
}
$(window).resize(resizeWallpaper).trigger("resize");
});
&#13;
body,
html {
overflow: hidden;
}
#wallpaper {
position: fixed;
top: 0;
left: 0;
}
.wallpaperWidth {
width: 100%;
}
.wallpaperHeight {
height: 100%;
}
&#13;