CSS实例分析:完美的全页面背景图片

我们之前已经知道了可调整大小的背景图片的概念。但是读者Doug Shults发给了我一个链接,其中使用了非常酷的技术,我觉得这种技术要比之前的任何技术都要好。

上图所展示的背景图片以及所应用的这种技术来源于这个网站。

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

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

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

技术1

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

<div id="bg">
    <div>
        <table cellspacing="0" cellpadding="0">
            <tr>
                <td>
                    <img src=http://www.webjx.com/web/"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

还是像往常一样,非常感谢Doug Neiner提供了这种方法。

这里,我们可以不用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;
}

查看示例

原文:Perfect full page background image

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索技术
, 图片
, 封装
, background
, position
元素
,以便于您获取更多的相关知识。

时间: 2024-09-15 00:31:57

CSS实例分析:完美的全页面背景图片的相关文章

精通CSS+DIV网页样式与布局--页面背景

       上篇博客,我们主要简单的总结了CSS的图片效果,我们这回来讲讲CSS如何对网页的背景进行设置,网页的背景是整个网页的重要组成部分,她直接决定了整个网页的风格和色调.这篇博客简单的总结一下如何用CSS来设置背景颜色.背景图片.首先,我们来看一张图:                   接着,小编会随着上述思维导图的脉络,对各个知识点进行详细讲解,首先,我们来看页面背景色,例子代码和运行效果如下所示:         页面背景色 <span style="font-size:18

Android编程中聊天页面背景图片、标题栏由于键盘引起问题的解决方法_Android

本文实例讲述了Android编程中聊天页面背景图片.标题栏由于键盘引起问题的解决方法.分享给大家供大家参考,具体如下: 在一个群里面有人问到 聊天页面由于键盘弹出来,导致自定义的标题栏不见和背景图片都变形了,然后自己也折腾了一下,在stackOverFlow上面找到了一个解决方法. 解决方法很简单: 1.在AndroidManifest.xml文件里面的Activity配置: 复制代码 代码如下: android:windowSoftInputMode="adjustResize|stateAl

css-jsp页面 背景图片无法显示的问题

问题描述 jsp页面 背景图片无法显示的问题 这是图片路径: 这是css路径: 这是语句: 在css中按ctrl键能查看到图片,但是jsp页面中查看元素就无法显示 这是页面路径: 解决方案 用IE打开网页,按f12,打开调试面板,找到css,看下,你的图片路径到底是什么,对不对. 解决方案二: 加个这个"<%=request.getContextPath()%> 解决方案三: 不需要加Web root,从resources开始就可以了 解决方案四: 弄个干净的页面设置下你的背景图片,

android-Android 页面背景图片加载不出来

问题描述 Android 页面背景图片加载不出来 我有一个登陆页面,之前打开一直是好好的,但是后来在另一个地方打开的话,背景图片就消失了,这是正常的效果,,这是在其他地方打开时出现问题后的样子,谁知道大约出了什么问题吗? 解决方案 图片放在资源文件夹呗?有没有针对分辨率? 解决方案二: 你从xml能找到你的背景图片资源吗?

前端-为什么页面背景图片在电脑上能显示但是在手机上却显示不出?

问题描述 为什么页面背景图片在电脑上能显示但是在手机上却显示不出? #mylotterylist li { min-height: 140px; /*margin-top: 20px; padding-top: 20px;*/ /*padding-left: 12%;*/ list-style: none; cursor: pointer; background: url(../img/listbg.png) repeat-x; } 这里我为 设置了背景图片,然后在建立了html文件, 在电脑上

css如何设置全屏背景图片

如果你有一张比较绚烂的图片想做背景,可以这样设置: 代码如下: body{ background:url(img.jpg); background-position:center; background-repeat:no-repeat; } 但效果很可能会是这样: 图片没有重叠,居中,并且...她太小了,无法占领全部的页面. 很可惜,CSS2中并没有图片全屏拉伸的属性,所以我自己想了个办法. 利用一个DIV层,在里面装载一个IMG标签.然后设置DIV和IMG的大小为100%,并固定到屏幕最底层

JSP页面背景图片的设置技巧

最近做了一个项目,jsp页面的背景图片总是考虑它的大小,麻烦死了.结果去网上搜索了一种很好的方法,拿来和大家分享一下 <%@ page language="java" contentType="text/html" pageEncoding="utf-8"%> <html> <head> <title>背景</title> <style type="text/css&qu

页面背景图片的拉伸实现代码

 代码如下: <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><strong><span style="font-size:12px;color:#3333ff;">1.用js插入一张图片并控制图片宽高</span></strong></span>   代

CSS实例教程:完美解决IE6不支持hover的方法

文章简介:完美解决IE6不支持hover的方法. <style type="text/css">         p:hover,p.hover { background:#eee; }   /* 就是要多写一个.hover而已 */ </style> 下面这段代码要放到页面的底部在</body> 前: <script type="text/javascript">    //<!–  让所有标记支持hover