问题描述
|
我正在尝试创建一个flexibg图像,但是它不起作用。
我遵循了此指南:http://kimili.com/journal/flexible-scalable-background-image
您可以在这里看到问题:
http://mobilhimlen.dk/
我的flexi.js:
var flexiBackground = function(){
/**
CONfigURATION:
Define the size of our background image
*/
var bgImageSize = {
width : 1050,height : 800
};
/**
Declare and define variables
*/
var $window,$body,imageID = \"expando\",tallClass = \'tall\',wideClass = \'wide\',$bgImage,$wrapper,img,url,imgAR;
/**
Are we dealing with ie6?
*/
var ie6 = ($.browser.msie && parseInt($.browser.version,10) <= 6);
/**
Set up the action that happens on resize
*/
var resizeAction = function() {
var win = {
height : $window.height(),width : $window.width()
};
// The current aspect ratio of the window
var winAR = win.width / win.height;
// Determine if we need to show the image and whether it needs to stretch tall or wide
if (win.width < bgImageSize.width && win.height < bgImageSize.height) {
$body
.removeClass(wideClass)
.removeClass(tallClass);
} else if ((win.w < bgImageSize.width && win.height >= bgImageSize.height) || (winAR < imgAR)) {
$body
.removeClass(wideClass)
.addClass(tallClass);
// Center the image
$bgImage.css(\'left\',Math.min(((win.width - bgImageSize.width) / 2),0));
} else if (win.width >= bgImageSize.width) {
$body
.addClass(wideClass)
.removeClass(tallClass);
$bgImage.css(\'left\',0);
}
// Need to fix the height of the wrapper for IE6
if (ie6) {
$wrapper.css(\'height\',win.height);
}
};
return {
/*
Sets up the basic functionality
*/
initialize : function() {
// No need for any of this if the screen isn\'t bigger than the background image
if (screen.availWidth <= bgImageSize.width || screen.availHeight <= bgImageSize.height) {
return;
}
// Grab elements we\'ll reference throughout
$window = $(window);
$body = $(\'body\');
// Parse out the URL of the background image and drop out if we don\'t have one
url = $body.css(\'background-image\').replace(/^url\\((\"|\')?|(\"|\')?\\);?$/g,\'\') || false;
if (!url || url === \"none\" || url === \"\") {
return;
}
// Get the aspect ratio of the image
imgAR = bgImageSize.width / bgImageSize.height;
// Create a new image element
$bgImage = $(\'<img />\')
.attr(\'src\',url)
.attr(\'id\',imageID);
// Create a wrapper and append the image to it.
// The wrapper ensures we don\'t get scrollbars.
$wrapper = $(\'<div></div>\')
.css({
\'overflow\' : \'hidden\',\'width\' : \'100%\',\'height\' : \'100%\',\'z-index\' : \'-1\'
})
.append($bgImage)
.appendTo($body);
// IE6 Doesn\'t do position: fixed,so let\'s fake it out.
// We\'ll apply a class which gets used in the CSS to emulate position: fixed
// Otherwise,we\'ll simply used position: fixed.
if (ie6) {
$wrapper.addClass(\'ie6fixed\');
} else {
$wrapper.css({
\'position\' : \'fixed\',\'top\' : 0,\'left\' : 0
});
}
// Set up a resize listener to add/remove classes from the body
$window.bind(\'resize\',resizeAction);
// Set it up by triggering a resize
$window.trigger(\'resize\');
}
};
}();
$(document).ready(flexiBackground.initialize);
和我的HTML:
<head>
<script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\" type=\"text/javascript\" charset=\"utf-8\"></script>
<script type=\"text/javascript\">
$(document).ready(function() {
// simple example,using all default options
$(\'div.expandable\').expander({slicePoint: 0});
});
</script>
<style type=\"text/css\" media=\"screen\">
body {
padding: 0;
margin: 0;
background-image:url(../images/bg_page_defaults.jpg);
background-position: top center;
background-repeat: no-repeat;
background-attachment: fixed;
margin-top:50px;
}
img#expando {
position: absolute;
display: none;
z-index: 1;
-ms-interpolation-mode: bicubic;
}
.wide img#expando,.tall img#expando {
display: block;
}
.wide img#expando {
width: 100%;
height: auto;
}
.tall img#expando {
width: auto;
height: 100%;
}
.ie6fixed {
position: absolute;
top: expression((ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + \'px\') !important;
}
</style>
</script><script type=\"text/javascript\">
var border = RUZEE.ShadedBorder.create({ corner:8,shadow:16,border:2 });
border.render(\'round_me\');
</script>
</head>
<body>
<script src=\"flexibg.js\" type=\"text/javascript\" charset=\"utf-8\"></script>
</body>
解决方法
不知道哪里出了问题。认为我确实更新了Jquery。