利用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 嵌套的函数(作用域链)
Mar 15 Javascript
js脚本获取webform服务器控件的方法
May 16 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
Aug 07 Javascript
取得元素的左和上偏移量的方法
Sep 17 Javascript
js中style.display=&quot;&quot;无效的解决方法
Oct 30 Javascript
jquery判断iPhone、Android设备类型
Sep 14 Javascript
浅谈js的ajax的异步和同步请求的问题
Oct 07 Javascript
Javascript的动态增加类的实现方法
Oct 20 Javascript
vue项目打包部署到服务器的方法示例
Aug 27 Javascript
vue element upload组件 file-list的动态绑定实现
Oct 11 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
vscode中Vue别名路径提示的实现
Jul 31 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+ajax实现无刷新分页
2015/11/18 PHP
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
js中this的用法实例分析
2015/01/10 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
python中global与nonlocal比较
2014/11/21 Python
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
简单介绍Ruby中的CGI编程
2015/04/10 Python
安装dbus-python的简要教程
2015/05/05 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python分数表示方式和写法
2019/06/26 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
python能开发游戏吗
2020/06/11 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
中专毕业生求职简历的自我评价
2013/10/21 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
感恩节活动策划方案
2014/05/16 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
ubuntu下常用apt命令介绍
2022/06/05 Servers
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL