css+div 三种使网站背景图片自动适应浏览器大小的方法

作者: 淡蓝海域 分类: 前端其他 发布时间: 2012-03-28 11:46

不管你怎么变化浏览器窗口大小,背景图始终会自动调节大小。

1 . 第一次方法:

我第一个想法是需要使用一个 css 背景图,如果这张图够大,就能填充整个屏幕。当浏览器窗口大小没有图片大时,它将自动隐藏多余的部分。

  1. <head>
  2. ….
  3. <script type=”text/javascript” src=”js/jquery.js”></script>
  4. <script type=”text/javascript”>
  5. $(document).ready(function() {
  6. $(“img.source-image”).hide();
  7. var $source = $(“img.source-image”).attr(“src”);
  8. $(‘#page-body’).css({
  9. ‘backgroundImage’: ‘url(‘ + $source +’)’,
  10. ‘backgroundRepeat’: ‘no-repeat’,
  11. ‘backgroundPosition’: ‘top center’
  12. });
  13. });
  14. </script>
  15. </head>
  16. <body id=”page-body”>
  17. <img src=”images/image.jpg” alt=”” />
  18. </body>

上面的这些代码能够自动隐藏超出浏览器窗口部分的图片(image.jpg)多余部分,不会使浏览器产生滚动条。

这是第一次试验的效果

2 . 第二次方法:

第一次试验的效果并没有达到要求,并不是真的使得背景图片适应窗口大小,应该使用设置“宽度”和“高度”属性来控制图片的大小,如果我们能够得到浏览器窗口显示像素,就可以利用这个数字来控制图片大小,同时保持比例。

使用 jquery 和 dimensions plugin 可以获得这些参数。

  1. <script type=”text/javascript” src=”/js/jquery.js”></script>
  2. <script type=”text/javascript” src=”/js/jquery.dimensions.js”></script>
  3. <script type=”text/javascript”>
  4. $(document).ready(function() {
  5. var $winwidth = $(window).width();
  6. $(“img.source-image”).attr({
  7. width: $winwidth
  8. });
  9. $(window).bind(“resize”, function(){
  10. var $winwidth = $(window).width();
  11. $(“img.source-image”).attr({
  12. width: $winwidth
  13. });
  14. });
  15. });
  16. </script>

为了让这张图片更像一个背景图像,我们设置:

  1. img.source-image {
  2. position: absolute;
  3. top: 0;
  4. left: 0;
  5. }

因为因为背景图片加上了定位代码,那要加在背景图片上任何东西都需要定位,如果您的背景图像是竖条状的(特别的高),而你的浏览窗口特别的宽,很容易造成背景图片高度超过您的浏览器窗口的高度,为了防止这种情况,需要设定对超出的部分进行隐藏:

  1. body {
  2.   overflow: hidden;
  3. }

3 . 第三次方法(最好的):

Stu Nicholls version给出了最好的方法,这处理方式不需要任何的 JavaScript 就能完美的达到目的。

  1. #img.source-image {
  2. width: 100%;
  3. position: absolute;
  4. top: 0;
  5. left: 0;
  6. }

在 css 里直接设定背景图片宽度的百分比,这是这个方法的效果。这个方法是最好的,而且不需要任何的 JavaScript 。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论