利用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函数
Jul 21 Javascript
javascript面向对象编程(一) 实例代码
Jun 25 Javascript
基于jquery的时间段实现代码
Aug 02 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
Feb 25 Javascript
js小数计算小数点后显示多位小数的实现方法
May 30 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 Javascript
jQuery实现文档树效果
Feb 20 Javascript
Angular 4依赖注入学习教程之简介(一)
Jun 04 Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 Javascript
JS算法教程之字符串去重与字符串反转
Dec 15 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实现PDO操作mysql存储过程示例
2019/02/13 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
Python绘制七段数码管实例代码
2017/12/20 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
python多线程下信号处理程序示例
2019/05/31 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
2014年三八妇女节活动总结
2014/03/01 职场文书
文艺演出策划方案
2014/06/07 职场文书
欢迎标语大全
2014/06/21 职场文书
学期个人工作总结
2015/02/13 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
win10清理dns缓存
2022/04/19 数码科技