CSS hack前传——背景图片全屏
在之前的博客CSS hack中我有提到,一个问题的解决让我对CSS hack的态度从不屑一顾,到认真研究了实验一下,事情是这样的,最近产品发布,向来狂妄的我被一个bug纠缠住了,甚至丧气的表示我做不出来,说来也惭愧,难住我的并不是造火箭这样的难题,只是个背景图片。。。
前世今生
最近为产品做了一个扁平化的新Theme,看起来很美观,公司的艺术家看后表示需要一张有深意的背景图片,发给我了

放上去后一看艺术家就是艺术家,果真和Theme很搭而且让网站高端了很多(自我感脚),兴冲冲的就发布了上去,主要代码大概是这样的
<html>
<head>
<title>Test</title>
<style type="text/css" >
body
{
height:100%;
width:100%;
background:url(images/bg.png);
}
</style>
</head>
<body> </body>
<html>
很不错的样子

然而发布到产品测试站点后我的悲催一天就开始了,当页面有纵向滚动条的时候,网页是这样的

细心的同学马上就明白为什么了,图片在纵向上repeat了,而图片上下边的颜色不一样,在相接的地方不吻合,肿么办呢?
修改背景图片
相信大部分同学第一反应和我一样,让艺术家换个图片,把图片上下边、左右边的颜色修的一样就可以了,但是!但是。。。艺术家不为所动,坚持这样是最好的效果,好吧,展示技术的时候到了。
改变背景图片size
既然图片还得是这张图片,那么就改变它的大小,让其拉伸铺满整个网页,使用window在设壁纸的时候不经常这么干嘛,可可可怎么该背景图片的大小呢,用CSS3吧
background:url(images/bg.png);
-moz-background-size:cover;
-ms-background-size:cover;
-webkit-background-size:cover;
background-size:cover;
效果是这样的

聪明的同学第一时间就会想到你让IE可咋整?是呀,江湖传言这样就可以
background:url(images/bg.png);
-moz-background-size:cover;
-ms-background-size:cover;
-webkit-background-size:cover;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/bg.png,sizingMethod=scale);
哎呀妈呀,真好使

自己觉得很完美了,可可可,人家说你的效果已经不对了。
神马!纳尼!Where!
在IE下效果是对了,但是Chrome、Firefox下本来应该在中间的高亮区cover效果原因整个图片长宽都被拉伸而被移到了右上角,不对称了。。。
这这这
这可肿么办,逼我,嚼烂了我的HB铅笔后我写了这样的代码(代码写在MasterPage中,所以不必担心逐个页面更改问题)
<html>
<head>
<title>Test</title>
<style type="text/css" >
body
{
height:1000px;
width:100%;
margin:0;
} .cover
{
width:100%;
height:100%;
position:absolute;
z-index:-10;
} .cover img
{
width:100%;
height:100%;
border:0;
}
</style>
</head>
<body>
<div class="cover">
<image alt="" src="data:images/bg.png"/>
<div>
</body>
</html>
乍一看效果我还蛮开心的,可一拉滚动条

擦,你高度100%计算的是ViewPort的高度,不是scrollHeight啊!
固定住图片
咬碎了一只HB之后我想到一招,既然刚才的方法差点儿都好使了,只有滚动的时候不好使,那么让图片相对于屏幕固定住就可以了,不随网页滚动而动,也就是使用position:fixed不就搞定了吗
body
{
height:1000px;
width:100%;
margin:;
} .cover
{
width:100%;
height:100%;
position:fixed;
z-index:-10;
} .cover img
{
width:100%;
height:100%;
border:;
}
这次我按捺住了,拉了滚动条才敢乐

但是只乐了几秒,因为我看了一下IE。。。,尼玛!

关于怪异模式
因为网站是很久前写的代码,大家标准意识没有那么前卫,处于对table 100%计算与padding冲突等原因,在设计的时候没有加doctype,这就是耳闻能祥的怪异模式!
IE6本身就不支持position:fixed,这个还好,公司产品针对美国市场,不用兼容IE6了,但是IE所有版本在怪异模式下也不支持position:fixed,聪明的同学肯定会说前面你不说有MasterPage了吗,在里面加上DocType不就可以了,我也是这么想的,但却没这么做,加上后之前写的大部分控件还有很多页面布局会乱掉,唉!一着不慎,满盘皆输,不能加DocType,肿么办。。。
CSS hack
等了这么久主角CSS hack终于可以登场了,亏我没去学导演,主角要指定砍我,也不必太激动,刚才不是使用-moz-神马的了吗,也算是露脸儿了,这次让它领衔,看看怎么使用CSS hack让怪异模式的IE也能有类似于position:fixed的效果
.cover
{
width: 100%;
height: 100%;
position: fixed;
z-index: -10;
_position: absolute;
_top: expression(eval(document.body.scrollTop));
_left: expression(eval(document.body.scrollLeft));
}
本来前缀”_”只有IE6能够认识,不过在怪异模式下所有IE都能认识,所以IE下hack代码会覆盖上面的代码,可以expression表达式了解一下,还有在怪异模式下document.documentElement.scrollHeight这样的写法是取不到正确结果的,得像上面document.body.scrollTop这么写,聪明的同学如果看过CSS hack也能够很轻松的写出正常模式下的code了。最后偷偷上传个实际效果图

最后
就是这么个东东,让我对CSS hack有了新的认识
CSS hack前传——背景图片全屏的更多相关文章
- HTML设置body背景图片全屏显示
在head标签中添加body属性设置: <head><style>body{background:url(timg1.jpg) top left;background-size ...
- 用css来写一个背景图片的切换
代码如下: <!DOCTYPE HTML> <htmllang="en-US"> <head> <meta charset="U ...
- html-css控制背景图全屏拉伸不重复显示
在HTML中,当我们设置背景图,只能采用是否重叠.居中.重叠方向这几个选项 CSS3中设置 body { background:#3d71b8 url(../back_main.png); backg ...
- 微信小程序点击图片全屏
作为一个只懂简单HTML,jQuery,JS的web后台开发者,最近在学习小程序开发,现在将小程序的点击全屏功能的相关内容记录下来.如果有不对的地方或者有更简单的方法,请留言指教 0_0~ .js 文 ...
- css网页中设置背景图片的方法详解
在css代码中设置背景图片的方法,包括背景图片.背景重复.背景固定.背景定位等 用css设置网页中的背景图片,主要有如下几个属性: 1,背景颜色 {">说明:参数取值和颜色属性一样 ...
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
史上最全的CSS hack方式一览 2013年09月28日 15:57:08 阅读数:175473 做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我 ...
- HTML+css实现图片全屏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS background-color 、image 背景图片
背景颜色 background-color 语法: background-color:<color> 默认值:transparent 透明 适用于:所有元素 继承性:无 动画性:是 计算 ...
- jquery简单的大背景banner图片全屏切换
详细内容请点击 这个是我初毕业刚进公司那会帮同事(同时也是同学)写的一个PC端的全屏图片切换效果,对于刚毕业的我来说写出来那会的喜悦之情是无法言表的,那时的我还是什么不懂的小白白,俗称菜鸟.个人网站上 ...
随机推荐
- 使用spring的特殊bean完成配置
1.分散配置 beans.xml配置如下: 使用占位符变量代替bean装配文件中的硬编码配置.占位符采用${variable}形式. 说明:当通过context:property-placeholde ...
- Git入门仅这篇就够了
版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/5978937.html 前言 大家好,我是Cavalier ...
- 跟我学-Java底层技术系列文章
对于工作中经常用到的东西,还是多看看实现原理,这样用着才能放心. 源码思想学习计划: 1.java基础库 HashCode深入理解 java线程框架窥探 2.集合类 java枚举类使用 递归 ...
- 陨石坑之webapi使用filter
首先为什么说这是一个坑,是因为我们在webapi中使用filter的时候也许会先百度一下,好吧,挖坑的来了,我看了好几篇文章写的是使用System.Web.Mvc.Filters.ActionFilt ...
- MongoDB基本命令用
成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显 ...
- fastjson自动转化参数报错
开发环境:spring-mvc4.1.7.fastjson1.2.7 问题描述:系统采用的前后端完全分离方式,前端页面使用ajax调用后台服务时,想用fastjson自动转化请求参数对象. // 前端 ...
- POJ 2096 Collecting Bugs (概率DP)
题意:给定 n 类bug,和 s 个子系统,每天可以找出一个bug,求找出 n 类型的bug,并且 s 个都至少有一个的期望是多少. 析:应该是一个很简单的概率DP,dp[i][j] 表示已经从 j ...
- VM12安装OS X10.11步骤及说明
参考文献: 1. http://www.crsay.com/network/enable-hardware-based-dep.html 2. http://jingyan.baidu.com/art ...
- bootstrap框架 导航条组件使用
本文记载boot 导航条组件使用方法 导航条组件 导航条是在您的应用或网站中作为导航页头的响应式基础组件.它们在移动设备上可以折叠(并且可开可关),且在视口(viewport)宽度增加时逐渐变为水平展 ...
- 用Python写爬虫爬取58同城二手交易数据
爬了14W数据,存入Mongodb,用Charts库展示统计结果,这里展示一个示意 模块1 获取分类url列表 from bs4 import BeautifulSoup import request ...