利用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 20 Javascript
用jQuery技术实现Tab页界面之二
Sep 21 Javascript
IE与firefox下Dhtml的一些区别小结
Dec 02 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
Aug 06 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
AngularJS的Filter的示例详解
Mar 07 Javascript
详解Vue2 无限级分类(添加,删除,修改)
Mar 07 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
微信小程序之GET请求的实例详解
Sep 29 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 Javascript
ajax跨域访问遇到的问题及解决方案
May 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编码规范-php coding standard
2007/03/16 PHP
php面向对象全攻略 (五) 封装性
2009/09/30 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
django基础之数据库操作方法(详解)
2017/05/24 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python如何生成树形图案
2018/01/03 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
小学生演讲稿大全
2014/04/25 职场文书
环保项目建议书
2014/08/26 职场文书
心得体会的写法
2014/09/05 职场文书
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫