利用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 相关文章推荐
js类 from qq
Nov 13 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
Dec 27 Javascript
JS 修改URL参数(实现代码)
Jul 08 Javascript
js使用for循环及if语句判断多个一样的name
Sep 09 Javascript
JS中prototype的用法实例分析
Mar 19 Javascript
JavaScript取得键盘按下方向键是哪个的方法
Aug 04 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
May 13 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
May 31 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
bootstrap表单示例代码分享
May 18 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
js+css实现打字效果
Jun 24 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/19 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
JS自调用匿名函数具体实现
2014/02/11 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
微信小程序App生命周期详解
2018/01/31 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
简单理解Python中基于生成器的状态机
2015/04/13 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
施工资料员的岗位职责
2013/12/22 职场文书
社区庆八一活动方案
2014/02/02 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
青春励志演讲稿
2014/04/29 职场文书
新闻编辑求职信
2014/07/13 职场文书
婚前协议书范本
2014/10/27 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
员工考勤管理制度
2015/08/06 职场文书
PHP解决高并发问题
2021/04/01 PHP
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript