在写主题样式的时候经常会碰到用背景图铺满整个背景的需求,这里分享下使用方法

需要的效果

  1. 图片以背景的形式铺满整个屏幕,不留空白区域
  2. 保持图像的纵横比(图片不变形)
  3. 图片居中
  4. 不出现滚动条
  5. 多浏览器支持

以图片bg.jpg为例

最简单,最高效的方法 CSS3.0

归功于css3.0新增的一个属性background-size,可以简单的实现这个效果,这里用fixed和center定位背景图,然后用background-size来使图片铺满,具体css如下

  1. html {
  2. background: url(bg.jpg) no-repeat center center fixed;
  3. -webkit-background-size: cover;
  4. -moz-background-size: cover;
  5. -o-background-size: cover;
  6. background-size: cover;
  7. }

这段样式适用于以下浏览器

  • Safari 3+
  • Chrome
  • IE 9+
  • Opera 10+ (Opera 9.5 支持background-size属性 但是不支持cover)
  • Firefox 3.6+

这里你会发现ie8及以下版本不支持,这些蛋疼浏览器则需要添加下面的css来设置兼容

  1. filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.bg.jpg', sizingMethod='scale');
  2. -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.jpg', sizingMethod='scale')";

这个用滤镜来兼容的写法并不是很完美,首先是图片路径,这里只能是相对于根目录的路径,或者用绝对路径;然后是图片纵横比改变了,是拉伸铺满的形式。尽管如此,总比留空白好多了吧(如果背景图bg.jpg的宽高够大,则可以不用这段,变成简单的平铺,比图片变形效果好写,大家可以尝试下)

如果你觉得上面的方法不是很满意,那试试下面这种

用img形式来实现背景平铺效果

首先在html中加入以下代码

  1. <img src="bg.jpg" class="bg">

然后通过css来实现铺满效果(假设图片宽度1024px)

  1. img.bg {
  2. min-height: 100%;
  3. min-width: 1024px;
  4. width: 100%;
  5. height: auto;
  6. position: fixed;
  7. top: 0;
  8. left: 0;
  9. }

下面这个是为了屏幕小于1024px宽时,图片仍然能居中显示(注意上面假设的图片宽度)

  1. @media screen and (max-width: 1024px) {
  2. img.bg {
  3. left: 50%;
  4. margin-left: -512px;
  5. }
  6. }

兼容以下浏览器

  • 以下浏览器的所有版本: Safari / Chrome / Opera / Firefox
  • IE9+
  • IE 7/8: 平铺效果支持,但是在小于1024px的屏幕下居中效果失效

下面再说一种方法

JQ模拟的方法

html部分

  1. <img src="bg.jpg" id="bg" alt="">

css部分

  1. #bg { position: fixed; top: 0; left: 0; }
  2. .bgwidth { width: 100%; }
  3. .bgheight { height: 100%; }

js部分

  1. $(window).load(function() {
  2. var theWindow        = $(window),
  3. $bg              = $("#bg"),
  4. aspectRatio      = $bg.width() / $bg.height();
  5. function resizeBg() {
  6. if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
  7. $bg
  8. .removeClass()
  9. .addClass('bgheight');
  10. } else {
  11. $bg
  12. .removeClass()
  13. .addClass('bgwidth');
  14. }
  15. }
  16. theWindow.resize(resizeBg).trigger("resize");
  17. });

支持浏览器

  • 以下浏览器的所有版本: Safari / Chrome / Opera / Firefox
  • IE7+

其实我自己一般用的是(因为够用了,咱不挑/其实上面的都是俺翻译过来的)

html部分

  1. <div class="bg"></div>

css部分

  1. .bg{
  2. position: fixed;
  3. top: 0;
  4. left: 0;
  5. width: 100%;
  6. height: 100%;
  7. background: url(bg.jpg) no-repeat #000;
  8. background-size: cover;
  9. z-index: -1;
  10. }

如果图片宽度没有达到1900px以上,我会加上ie的滤镜来支持ie8(这里我故意用了绝对路径,请知晓,代码长的我想砸了ie)

  1. -ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.http://huilang.me/bg.jpg', sizingMethod='scale')";
  2. filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://huilang.me/bg.jpg', sizingMethod='scale');

浏览器支持

  • ie7+
  • 绝大多数主流浏览器

延伸阅读


▶ Walkthrough007

完美的背景图全屏css代码 – background-size:cover?相关推荐

  1. background 互联网图片_完美的背景图全屏css代码 – background-size:cover?

    在写主题样式的时候经常会碰到用背景图铺满整个背景的需求,这里分享下使用方法 需要的效果 图片以背景的形式铺满整个屏幕,不留空白区域 保持图像的纵横比(图片不变形) 图片居中 不出现滚动条 多浏览器支持 ...

  2. css禁止背景图拉伸_html-css控制背景图全屏拉伸不重复显示

    在HTML中,当我们设置背景图,只能采用是否重叠.居中.重叠方向这几个选项 CSS3中设置 body { background:#3d71b8 url(../back_main.png); backg ...

  3. HTML背景图全屏显示

    要在HTML中实现全屏显示的背景图,可以使用CSS的background属性和一些特定的值来实现.以下是一种方法: HTML: <!DOCTYPE html> <html> & ...

  4. 背景图全屏水平垂直居中的方法

    在开发登录页面或者其他全屏背景图的页面,需要背景图全屏并且水平垂直居中,根据浏览器窗口大小自适应.尝试多种方法后,使用了最简单的两行代码搞定. /* 要想实现全屏高度需要单独设置 html 和 bod ...

  5. html背景图片手机端全屏,css 背景图全屏显示,兼容移动端

    .login { background: url(img/login.jpg) no-repeat center center; background-size: cover; background- ...

  6. HTML背景图片全屏CSS

    前言:小刘经常自写项目需要用到背景图片,好看又自适应太难了! 背景图片自适应屏幕 body {background-image: url('http://www.17sucai.com/preview ...

  7. 完美的css背景图片全屏显示,能比例缩小,不留空白

    简介:完美的css背景图片全屏显示,能比例缩小,不留空白,我们之前已经知道了可调整大小的背景图片的概念.但是读者DougShults发给了我一个链接,其中使用了非常酷的技术,我觉得这种技术要比之前的任 ...

  8. html自适应屏幕大小渐变背景色,CSS实现背景渐变和自动全屏的代码

    CSS 关于背景渐变和自动全屏的问题 主编在css开发时发现了一个致命的问题: 在设置了背景颜色渐变后好不容易调成了全屏覆盖 但按下了F11的时候崩溃的世界开始了 所以这篇文章主要介绍CSS背景渐变色 ...

  9. css 全屏显示一张图片_css3背景图片全屏显示的例子

    背景图片全屏这个功能只需要定义重复即可解决了当然这个是有一些技巧了,下面我们就来看一篇关于css3背景图片全屏显示例子了,具体的如下所示. 如何用css背景图片拉伸 以及100% 满屏显示呢?这个问题 ...

最新文章

  1. systemd设置静态IP
  2. 该项研究降低了使用大脑信号控制机器人手臂的位置误差
  3. 在物体检测任务上进行预训练的实验分析
  4. 小程序子组件向父组件传值_一套组件化、可复用、易扩展的微信小程序 UI 组件库...
  5. 商海致富独家秘诀:微笑可以当钱花
  6. 在ASP.NET中自动给URL地址加上超链接(好东东)
  7. java char i=2+#039;2#039;;_P039 二维数组的字符按列存放到字符串中 ★★
  8. urllib.error
  9. layui数据表格如何获取id_LayUI之table数据表格获取行、行高亮等相关操作
  10. 【计算几何】【分类讨论】Gym - 101243I - Land Division
  11. linux 渗透 密码,linux渗透中常用命令+Tip
  12. muduo源代码分析--Reactor在模型muduo使用(两)
  13. 3dmax 计算机中丢失,3dmax材质丢失怎么快速找回-解决3dmax材质不见了的方法 - 河东软件园...
  14. Package com.myapp signatures do not match the previously installed version
  15. 了解Maxicode二维码
  16. CORDIC算法收敛性证明
  17. vue移动端和pc适配,搭建网站布局
  18. 模拟网络状态的利器TC
  19. KDD CUP 2009年数据集介绍及链接
  20. android手机蓝屏代码,android手机进入蓝屏蓝屏怎么关机

热门文章

  1. Git/Bitbucket Workflow
  2. 软件设计师笔记之计算机硬件基础(一)
  3. 2.序贯最小二乘估计(仅包含滤波)
  4. python 实战37 让自己的微信变成计算器
  5. 【一】、创建虚拟机Linux系统Centos镜像并且配置静态IP
  6. STM32物联网智能鱼缸智能家居系统设计方案 【评论区里留言领取资料】
  7. vue 仿el-table原理实现表格
  8. iOS(OC、swift) 结构体和类的区别
  9. 人工智能 归结原理实验报告
  10. JavaScript-0817