利用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隐藏控件的方法
Sep 21 Javascript
jquery选择器使用详解
Apr 08 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
bootstrap fileinput 插件使用项目总结(经验)
Feb 22 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
May 02 Javascript
bootstrap的工具提示实例代码
May 17 Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
Vue中CSS动画原理的实现
Feb 13 Javascript
如何测量vue应用运行时的性能
Jun 21 Javascript
微信小程序后台持续定位功能使用详解
Aug 23 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
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
JQuery 入门实例1
2009/06/25 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python命令行解析模块详解
2018/02/01 Python
django加载本地html的方法
2018/05/27 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
python tkinter实现连连看游戏
2020/11/16 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
六个一活动实施方案
2014/03/21 职场文书
迟到检讨书
2015/01/26 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
机关保密工作承诺书
2015/05/04 职场文书
叶问观后感
2015/06/15 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android