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

以下是这种技术所要达到的效果:

  • 使用图片填充整个页面,没有空白
  • 根据需要依比例显示图片
  • 保持图片比例
  • 图片居中于页面
  • 不会有滚动条
  • 跨浏览器的兼容性
  • 不是某种华丽的伎俩例如Flash

这是非常高的要求,我们将使用各种技术来达到这样的效果。首先,由于图片要依比例缩放,传统的background-image属性已经不能够达到这样的效果了,使得我们只能使用行内图片。

技术1

这个行内图片将会被放置于一系列的封装元素之中,每一个封装元素都是我们为了达成目标所必不可少的。

<div id="bg"><div><table cellspacing="0" cellpadding="0"><tr><td><img src="data:images/bg.jpg" alt=""/></td></tr></table></div>
</div>

CSS代码是:

* {margin: 0;padding: 0;
}
html, body, #bg, #bg table, #bg td {height:100%;width:100%;overflow:hidden;
}
#bg {position: fixed;
}
#bg div {height:200%;left:-50%;position:absolute;top:-50%;width:200%;
}
#bg td {text-align:center;vertical-align:middle;
}
#bg img {margin:0 auto;min-height:50%;min-width:50%;
}

标记语言和CSS确实有些繁琐,但是效果却很好!做完这些已经可以完成工作了,但是如果我们希望页面上有真实的内容会怎样呢?将html和body元素的overflow属性设置为hidden是会让你对这一点有些担心的,因为在一个没有滚动条的网站上,那样会完全切除超出区域范围的内容。为了让可滚动的内容正确显示,我们将要介绍另外一个封装元素。它会位于背景的前面,宽度和高度是完全展开的浏览器的大小,而且将overflow属性设置回auto(可滚动)。然后我们就可以安全的将内容放入这个封装元素之中了。

<div id="cont"><div class="box"><!-- content in here --></div>
</div>
#cont {position:absolute;top:0;left:0;z-index:70;overflow:auto;
}
.box {margin: 0 auto;width: 400px;padding: 50px;background: white;padding-bottom:100px;font: 14px/2.2 Georgia, Serif;
}

目前存在的Bug

在Safar4和Chrome中,min-height属性不起作用,不能够垂直适应大小。

技术2

这里,我们可以不用JavaScript修复,只用CSS就能做到这一点。图片还是一个行内图片,class名称为"bg",没有额外的标记语言。这一点会让所有不喜欢额外标记的人满意的。

只有一点需要说明的是,这种方法并不能在任何布局下有效,在IE7中它不能居中,在IE6中完全不起作用,而且取决于原始图片的大小,可能不能总是按照比例显示。但是,由于这种方法很简单,而且没有bug,绝对是可供参考的。下面是CSS:

img.bg {/* Set rules to fill background */min-height: 100%;min-width: 1024px;/* Set up proportionate scaling */width: 100%;height: auto;/* Set up positioning */position: fixed;top: 0;left: 0;
}
@media screen and (max-width: 1024px){img.bg {left: 50%;margin-left: -512px; }
}
div#content {/* This is the only important rule *//* We need our content to show up on top of the background */position: relative; /* These have no effect on the functionality */width: 500px;margin: 0 auto;background: #fff;padding: 20px;font-family: helvetica, arial, sans-serif;font-size: 10pt;line-height: 16pt;-moz-box-shadow: #000 4px 4px 10px;-webkit-box-shadow: #000 4px 4px 10px;
}
body {/* These rules have no effect on the functionality *//* They are for styling only */margin: 0;padding: 20px 0 0 0;
}

转载注明本文地址: http://www.ablanxue.com/prone_10950_1.html

完美的css背景图片全屏显示,能比例缩小,不留空白相关推荐

  1. css背景图片全屏显示加居中显示

    css背景图片全屏显示加居中显示,屏幕过大平铺 屏幕过小居中裁剪 div { background:url(/i/bg_flower.gif); background-size:cover; -moz ...

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

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

  3. 微信小程序背景图片全屏显示

    微信小程序背景图片全屏显示 很多人在写小程序界面的时候希望背景图片是全屏覆盖显示的(包括顶部导航栏,如下图),那该如何实现呢? 以下是实现代码: wxml代码: <view class=&quo ...

  4. uniapp 背景图片全屏显示在整个页面

    要让uniapp中的背景图片全屏,可以在<style>标签中添加以下样式: page {background-image: url('/static/bg.jpg');background ...

  5. css背景图片全屏铺满自适应不拉伸

    可以使用 CSS 的 background-size 属性来实现全屏铺满背景图片,并且不拉伸.下面是一个例子: body {background-image: url(your-background- ...

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

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

  7. html中背景图片自动全屏显示,HTML设置body背景图片全屏显示

    JMeter中返回Json数据的处理方法 Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力 ...

  8. css背景图片全屏铺满自适应

    background-image: url('images/bg.jpg'); background-size: cover; min-height: 269px; background-positi ...

  9. css如何让图片全屏显示?

    一张清晰漂亮的背景图片能给网页加分不少,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块露白,简而言之,就是实现能自适应屏幕大小又不会变形的背景大图,而且背景图片不会随着滚动 ...

最新文章

  1. android列表时间轴,Android实现列表时间轴
  2. ping 不通容器 宿主_使用容器的正确方式,Docker在雪球的技术实践
  3. JNDI数据源的使用
  4. 搜索引擎(0xFE)--- 用机器学习再谈排序
  5. 【BZOJ3712】Fiolki(并查集重构树)
  6. 阿里巴巴对Java编程【命名风格】的规约
  7. 全员学习低代码,一汽大众领跑数智化转型背后的秘密
  8. Nagios 监控平台快速安装
  9. sqlyog备份数据和导入备份数据
  10. 107 岁的 IBM 以 340 亿美元吞下了 25 岁的“小”红帽!
  11. Grunt-jsdoc生成JS API文档
  12. SQL Server-【知识与实战I】条件查询、比较运算符查询、模糊查询、枚举查询、范围查询、空值查询、多重条件查询
  13. eclipse中基于maven构建多模块项目
  14. wap(dopra linux )命令,自行更换HG8321R千兆光猫记录
  15. c4d流体插件_C4D的Jet Fluids免费流体插件
  16. 数据不符合正态分布怎么处理呢
  17. linux安装mysql5.7(修改密码策略)
  18. 基于JDBC的JavaWeb开发项目之——网上教务系统
  19. vue里 a(){} 和a:()=>{}的区别
  20. 小木虫为什么会有不好的用户体验?

热门文章

  1. Java 代码精简之道 侵删
  2. OBD车载诊断系统、移动管家车联网汽车OBD诊断系统车辆信息管理硬件
  3. 数字孪生隧道为智慧交通运营保驾护航
  4. html 纵向导航,div+css纵向导航如何实现且为导航添加超链接
  5. 图(八):强连通分量
  6. Paper之EfficientDet: 《Scalable and Efficient Object Detection—可扩展和高效的目标检测》的翻译及其解读
  7. “中国第一程序员” 求伯君的传奇经历
  8. oracle 退出代码 255,sql – 奇怪的SSIS错误(进程退出代码255)
  9. JavaScript 动态渲染页面爬取(一) —— 基于 Selenium
  10. ESP8266 贝壳物联