利用jQuery和CSS将背景图片拉伸


Posted in Javascript onOctober 16, 2015

现在WEB页面设计比较流行使用大背景图,那么您知道如何使用一张大背景图进行拉伸效果呢?也就是说使用一张固定尺寸的背景图片,让它在页面中随着浏览器尺寸进行拉伸,就像我们的电脑桌面壁纸效果。本文将带您一起使用jQuery和CSS实现背景图片拉伸效果。

利用jQuery和CSS将背景图片拉伸

将背景图片拉伸,而不是平铺,注意平铺效果我们可以使用CSS的background-repeat来实行背景图片的平铺效果,本文讨论的是背景图片的拉伸效果。这种效果在一些前卫的页面设计中已经广泛应用,尤其在一些独立页面,像登录页面使用拉伸的背景图片效果比较常见。
目前有两种解决方案可以实现背景图片拉伸效果,一种是CSS,我们可以使用background-size:cover实现图片的拉伸效果,但是IE8及以下版本不支持background-size,于是我们尝试使用微软的滤镜效果,但是IE6不支持,毕竟还有一些后进生在使用IE6。另一种解决方案是使用jQuery,完全解决浏览器的兼容性问题,还是jQuery威武。
CSS解决方案
我们准备一张背景图片,任意尺寸的,假设我们要做一个登录页面,页面中使用拉升的背景图。我们只需要在body中加入以下代码:

<div id="main"> 
...登录表单 
</div>

然后CSS这样写:

body{background:url(bg.jpg) center center;background-size:cover;height:900px;width:100%; 
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.jpg', sizingMethod='scale');} 
#main{position:absolute; top:50%; left:50%; width:420px; height:250px; 
margin:-125px 0 0 -210px; background:#ffc}

我们使用background-size实现了背景图片的拉伸效果,但是要兼容IE7,IE8就需要使用滤镜filter来实现,注意该方案中,必须指定容器的高度,本例中指定了height:900px。
CSS方案有一定的局限性,必须指定容器高度,IE6不兼容,那么比较完美的解决方案就是使用jQuery了。
jQuery解决方案
我们使用jQuery先向body中动态插入一个DIV,并且该DIV中包含一张图片,也就是我们要求拉伸效果的背景图片。然后使用jQuery获取浏览器窗口的大小,根据浏览器窗口大小,动态设置背景图片的尺寸(宽和高)。

$(function(){ 
  $("body").append("<div id='main_bg'/>"); 
  $("#main_bg").append("<img src='bg.jpg' id='bigpic'>"); 
  cover(); 
  $(window).resize(function(){ //浏览器窗口变化 
    cover(); 
  }); 
}); 
function cover(){ 
  var win_width = $(window).width(); 
  var win_height = $(window).height(); 
  $("#bigpic").attr({width:win_width,height:win_height}); 
}

上述代码中,cover()函数就是动态的设置了背景图片的尺寸,通过jQuery的append方法动态加入背景图片,当页面加载完成时已经浏览器窗口变化时都能实现背景图片的拉伸效果,也就是页面ready和resize都调用了cover()函数。

以上两种解决方案,是否都很满意?我比较喜欢jQuery解决方案总之希望能帮到大家更好地掌握jQuery和CSS使背景图片拉伸的技巧。

Javascript 相关文章推荐
用javascript实现计算两个日期的间隔天数
Aug 14 Javascript
JavaScript定义类的几种方式总结
Jan 06 Javascript
js canvas实现擦除动画
Jul 16 Javascript
jQuery实现弹幕效果
Feb 17 Javascript
如何写好你的JavaScript【推荐】
Mar 02 Javascript
详解vue-resource promise兼容性问题
Jun 20 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
Aug 24 Javascript
vue iView 上传组件之手动上传功能
Mar 16 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
Jan 22 Javascript
微信小程序-可移动菜单的实现过程详解
Jun 24 Javascript
JavaScript实现PC端横向轮播图
Feb 07 Javascript
基于jQuery实现的菜单切换效果
Oct 16 #Javascript
javascript判断复选框是否选中的方法
Oct 16 #Javascript
jquery判断复选框是否被选中的方法
Oct 16 #Javascript
基于jquery实现复选框全选,反选,全不选等功能
Oct 16 #Javascript
js生成随机数的方法实例
Oct 16 #Javascript
jQuery实现商品活动倒计时
Oct 16 #Javascript
js如何打印object对象
Oct 16 #Javascript
You might like
Adodb的十个实例(清晰版)
2006/12/31 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
JavaScript中this详解
2015/09/01 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
Python循环语句之break与continue的用法
2015/10/14 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
投标担保书范文
2014/04/02 职场文书
《搭石》教学反思
2014/04/07 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
婚内分居协议书范文
2014/11/26 职场文书
原告离婚代理词
2015/05/23 职场文书
感恩主题班会教案
2015/08/12 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
DIY胆机必读:各国电子管评价
2022/04/06 无线电