Javascript灵活的背景图片不起作用

标签 javascript jquery html css

我正在尝试创建一个 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。

关于Javascript灵活的背景图片不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189372/

相关文章:

javascript - 谷歌图表 : how to change color for negative values in Annotation Chart

javascript - 使用 API(带有两个 jQuery 版本和跨域的页面)

jquery 鼠标滚轮

html - 使用@media print 使嵌入的 Soundcloud 缩略图可打印

php - 图像数组在 PHP/HTML 中重复/复制

javascript - 使用 JavaScript 更改 url 参数字符串

javascript - 来自 javascript 的 HTML 验证

javascript - Javascript 库中名为 undefined 的变量

HTML/CSS - 没有明显原因的页面滚动 (y)

javascript - jQuery计算输入的剩余字符长度