[网摘]CSS z-index 属性

定位一直是WEB标准应用中的难点,如果理不清楚定位那么可能应实现的效果实现不了,实现了的效果可能会走样。如果理清了定位的原理,那定位会让网页实现的更加完美。

定位的定义

在CSS中关于定位的内容是:position:relative | absolute | static | fixed

static 没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级。
relative 不脱离文档流,参考自身静态位置通过 top,bottom,left,right 定位,并且可以通过z-index进行层次分级。
absolute 脱离文档流,通过 top,bottom,left,right 定位。选取其最近的父级定位元素,当父级 position 为 static 时,absolute元素将以body坐标原点进行定位,可以通过z-index进行层次分级。
fixed 固定定位,这里他所固定的对像是可视窗口而并非是body或是父级元素。可通过z-index进行层次分级。

CSS中定位的层叠分级:z-index: auto | namber;

auto 遵从其父对象的定位
namber 无单位的整数值。可为负数

定位的原理:

可以位移的元素 (相对定位)

在本文流中,任何一个元素都被文本流所限制了自身的位置,但是通过CSS我们依然使得这些元素可以改变自己的位置,我们可以通过float来让元素浮动,我们也可以通过margin来让元素产生位置移动。但是事实上那并非是真实的位移,因为,那只是通过加大margin值来实现的障眼法。而真正意义上的位移是通过top,right,bottom,left(下称TRBL,TRBL可以折分使用。)针对一个相对定位的元素所产生的。我们看下面的图:

我们看图中是一个宽度为200px,高度为50px,margin:25px; border:25px solid #333; padding:25px; 相对定位的元素,并且位移距上50px,距左50px。而下方是一块默认定位的黑色区块。我们看到这个处在文本流的区块被上面的相对定位挡住了一部分,这说明:“当元素被设置相对定位或是绝对定位后,将自动产生层叠,他们的层叠级别自然的高于文本流”。除非设置其z-index值为负值,但是在 Firefox等浏览器中z-index为负值时将不会显示。并且我们发现当相对定位元素进行位移后,表现内容已经脱离了文本流,只是在本文流中还为原来的相对对定位留下了原有的总宽与总高(内容的高度或是宽度加上margin\border\padding的数值)。这说明在相对定位中,虽然表现区脱离了原来的文本流,但是在文本流中还还有此相对定位的老窩。这点要特别注意,因为在实际应用中如果相对定位的位移数值过大,那么原有的区域就会形成一块空白。

并且我们注意,定位元素的坐标点是在margin值的左上边缘点,即图中的B点。那么所有的位移的计算将以这个点为基础进行元素的推动。当TRBL为正值时位移的方向是内聚的。由此可推,当TRBL为负值时位移的方向是外放的。在图片中有位移的箭头指向标识,带有加号的是正值位移方向,带有减号的是负值位移方向。关于位移方位,可以延伸阅读怿飞的《由浅入深漫谈margin属性(一)》

可以在任意一个位置的元素 (绝对定位)

如上所述:相对定位只可以在文本流中进行位置的上下左右的移动,同样存在一定的局限性,虽然他的表现区脱离了文本流,但是在文本流却依然为其保留了一席之地,这就好比一个打工的人他到了外地,但是在老家依然有一个专属于他的位置,这个位置不随他的移动而改变。但是这样很明显就会空出一块空白来,如果希望文本流抛弃这个部分就需要用到绝对定位。绝对定位不光脱离了文本流,而且在文本流中也不会给这个绝对定位元素留下专属空位。这就好比是一个工厂里的职位,如果有一个工人走了自然会要有别的工人来填充这个位置。而移动出去的部分自然也就成为了自由体。绝对定位将可以通过TRBL来设置元素,使之处在任何一个位置。在父层position属性为默认值时,TRBL的坐标原点以body的坐标原点为起始。看下图:

上图可知,文本流中的内容会顶替绝对定位无素的位置,一点都不会客气。而绝对定位元素自然的层叠于文本流之上。而在单一的绝对定位中,定位元素将会跑到网页的左上角,因为那里是他们的被绝对定位后的坐标原点。

被关联的绝对定位

上面说的是单一的绝对定位,而在实际的应用中我们常常会需要用到一种特别的形式。即希望定位元素要有绝对定位的特性,但是又希望绝对定位的坐标原点可以固定在网页中的某一个点,当这个点被移动时绝对位定元素能保证相对于这个原坐标的相对位置。也就是说需要这个绝对定位要跟着网页移动,而并且是因定在网页的某一个固定位置。通常当网页是居中形式的时候这种效果就会显得特别的重要。要实现这种效果基本方式就是为这个绝对定位的父级设置为相对定位或是绝对定位。那么绝对定位的坐标就会以父级为坐标起始点。

虽然是如此,但是这个坐标原点却并不是父级的坐标原点,这是一个很奇怪的坐标位置。我们看一下模型图示:

我们看到,这个图中父级为黑灰色区块,子级为青色区块。父级是相对定位,子级是绝对定位。子级设置了顶部位移50个像素,左倾位移50个像素。那么我们看,子级的坐标原点并不是从父级的坐标原点位移50个像素,而是从父级块的padding左上边缘点为坐标起始点(即A点)。而父级这里如果要产生位置移动,或是浏览器窗口大小有所变动都不会影响到这个绝对定位元素与父级的相对定位元素之间的位置关系。这个子级也不用调整数值。

这是一种很特别并且也是非常实用的应用方式。如果你之前对于定位的控制并不自如的话,相信看完对这里对定位的解释一定可以把定位使用得随心所欲。

总在视线里的元素 (固定定位)

由于广告的滥用,使得一些浏览器软件都开始有了广告内容拦截,使得一些很好的效果现在都不推荐使用了。比如让一个元素可能随着网页的滚动而不断改变自己的位置。而现在我可以通过CSS中的一个定位属性来实现这样的一个效果,这个元素属性就是曾经不被支持的position:fixed; 他的含义就是:固定定位。这个固定与绝对定位很像,唯一不同的是绝对定位是被固定在网页中的某一个位置,而固定定位则是固定在浏览器的视框位置。

虽然原来的浏览器并不支持过个属性,但是浏览器的发展使得现在的高级浏览器都可以正确的解析这个CSS属性。并且通过CSS HACK来让IE6都可以实现这样的效果(目前无法使IE5.x)实现这种效果。为了不使本文变成冗长的大论,这里只给出这个实例算是这篇文章的结束。关于这个实例的一些问题大家可以自行分析。有不理解的地方可以给我留言!

定位应用

运行代码框
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<meta name="Design Corp" content="jonmax.com" />
<meta name="Designer mail" content="maozhenzhi(at)gmail.com" />
<meta name="roots" content="jonmax.com" />
<meta name="Keywords" content="" />
<meta name="Description" content="" />
<title></title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" rev="stylesheet" type="text/css" media="print" href="jonStyle/css/print.css" />
<link rel="stylesheet" rev="stylesheet" type="text/css" media="screen, projection" href="jonStyle/css/master.css" />
<link rel="stylesheet" rev="stylesheet" type="text/css" media="screen, projection" href="jonStyle/css/master_color.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="/index.xml" />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="/rsd.xml" />
<link rel="start" href="" title="Home" />
<style type="text/css">
/*<![CDATA[*/
body {margin:0; padding:0 10px 0 10px; border:0; height:100%; overflow:auto;}
#menu {right:0; top:0; width:130px; position:fixed; padding:10px; text-align:center; font-weight:bold; background:#000;}

* html #menu {position:absolute; right:16px;}/*only for ie*/
html {overflow:auto !important; overflow:hidden;}

/*]]>*/
</style>
</head>
<!-- -->
<body id="" class="">
<div id="menu">
<a href="#" title="Dummy menu item">Mozilla</a>
<a href="#" title="Dummy menu item">Opera</a>
<a href="#" title="Dummy menu item">Netscape</a>
<a href="#bites" title="Dummy menu item">Firefox</a>
<a href="#" title="Dummy menu item">IE6</a>
<a href="#" title="Dummy menu item">Windows</a>
<a href="#" title="Dummy menu item">Style</a>
<a href="#" title="Dummy menu item">CSS</a>
</div>

<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>
<div>看右上角的内容,不论浏览器怎么滚动,它始终在那个地方!</div>

</body>

</html>

转载于:https://www.cnblogs.com/acis_/archive/2009/07/02/1515137.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2007最受欢迎的十大Ajax技术文章

DeveloperWorks 中国网站 Ajax 技术资源中心在 2007 年上半年里发表了很多和 Ajax 相关的技术文章、教程、多媒体课堂和专栏。我们特地整理出 2007 上半年最受读者欢迎的内容&#xff0c;希望通过这个排行榜&#xff0c;您可以了解最新的 Ajax 技术热点&#xff0c;及与 Ajax 开…

设计原则:色彩

背景 最初接触《彩色UML》的时候就给了我很大的触动&#xff0c;可惜一致没有内化这种触动&#xff0c;直到最近一次看“老大”画了一个彩色的分析图&#xff0c;又突然的重现了这种触动&#xff0c;然后在一个梦里内化了这种冲动&#xff0c;第二天发现团队的“贴纸”和“水笔…

中国移动云能力中心 Iaas 产品部软件开发工程师陈焱山:社区始于连接,也成就于连接...

社区始于连接&#xff0c;也成就于连接——陈焱山ApacheCon 是 Apache 软件基金会&#xff08;ASF&#xff09;的官方全球系列大会。作为久负盛名的开源盛宴&#xff0c;ApacheCon 在开源界备受关注&#xff0c;也是开源运动早期的知名活动之一。早在 1998 年&#xff0c;在 AS…

ZGY的Excel特征提取器初期版本完成

其实这个初期版本已经基本上把他要的功能都实现了&#xff0c;呵呵 他的要求是批量转Excel&#xff0c;把所有用黄色标出的单元格所在的列拷到一个新文件中 其实底层很简单&#xff0c;界面做了倒有一会&#xff0c;还是一如既往的喜欢SWT啊~ 附上Java利用Apache POI进行Excel文…

阿里大佬推荐初学者练习的 Java 开源项目

对于JAVA的新手来说&#xff0c;需要结合着相关书籍的学习和开源项目一起&#xff0c;才能达到比较好的效果。 在此推荐一些轻量级适合入门的JAVA开源项目&#xff0c;希望对题主的学习有所帮助。 项目名称&#xff1a;springboot-learning-example项目简介&#xff1a;sprin…

真·抬头发票!| 今日最佳

全世界只有3.14 %的人关注了青少年数学之旅&#xff08;图源迷惑行为大赏&#xff0c;侵权删&#xff09;

老歌新唱--使用VB6开发的ActiveX实现.NET程序的混淆加密

代码下载地址&#xff1a;http://files.cnblogs.com/wuhuacong/VBActiveX.rar 由于存在一下几种特点&#xff1a;1、.NET程序反编译容易&#xff0c;而使用一些混淆工具会导致有些程序不能运行2、VB6开发ActiveX控件&#xff0c;那叫一个快&#xff0c;VB代码也不是很容易被反编…

设计模式之适配器

适配器模式介绍介绍适配器模式的作用就是把原本不兼容的接口&#xff0c;通过适配修改到统一的过程&#xff0c;使得用户方便使用。在实际工作中&#xff0c; 有时候我们需要把各个业务线的各种类型服务做统一的包装&#xff0c;再对外提供接口进行使用。适配器模式要解决的主要…

qsort(bsearch,lsearch)—标准库排序,查找

2019独角兽企业重金招聘Python工程师标准>>> //对字符串排序 #include<iostream> #include<cstdlib> #include<string.h> #define N 8 using namespace std; int compare(const void *a,const void *b); int main(void) {int i;char s[8][10] {&q…

中科大博士写外挂被抓,非法牟利300多万!

全世界只有3.14 %的人关注了青少年数学之旅近日&#xff0c;扬州警方破获一起中科大博士伙同他人在网上销售外挂软件非法牟利超过 300 万的案件。2016年6月&#xff0c;北京某游戏公司发现网上有款名为“冰焰”的外挂软件大量销售&#xff0c;给他们的网游造成了巨大损失这款外…

C# WPF MVVM项目实战(进阶②)

这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发&#xff0c;今天主要是增加了一个用户窗体ImageProcessView&#xff0c;然后通过Treeview切换选择项之后在界面显示不同效果的图片。01—重要的知识点本篇内容基于CM框架编写&#xff0c;涉及以下知识点&#xf…

浏览器要是能这么做就好了

原文地址&#xff1a;http://www.laaan.cn/?p994 之前和搜狗浏览器的开发团队做过一些合作。主要是用户教育方便的事。需要他们给我开几个接口&#xff0c;让flash与浏览器通讯。都是很谨慎的。不过后来想一想&#xff0c;要是搜狗浏览器能开放一些接口供js或flash调用该有多好…

腾讯架构师讲解Java接口的继承与抽象类

在实施接口中&#xff0c;我们利用interface语法&#xff0c;将interface从类定义中独立出来&#xff0c;构成一个主体。interface为类提供了接口规范。 在继承中&#xff0c;我们为了提高程序的可复用性&#xff0c;引入的继承机制。当时的继承是基于类的。interface接口同样可…

说说大型高并发高负载网站的系统架构

By Michael 转载请保留出处&#xff1a;俊麟 Michael’s blog (http://www.toplee.com/blog/?p71) Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p71 我在CERNET做过拨号接入平台的搭建&#xff0c;而后在Yahoo&3721从事过搜索引擎前端开发&#xff0c;…

java基础之java输入输出语句

1、使用Scanner 使用时需要引入包importjava.util.Scanner;首先定义Scanner对象 Java基础学习&#xff1a;java输入输出语句 比如&#xff1a; Java基础学习&#xff1a;java输入输出语句 2、使用BufferedReader 用前需要引入importjava.io.Reader; Java基础学习&#xff1…

自制WiFiPineapple

什么是WiFiPineapple&#xff1f;关于这个问题&#xff0c;相信各位心里都有自己的答案&#xff0c;这里引用下radiowar的介绍&#xff1a;自从2008开始&#xff0c;WiFi PineApple成为了最受欢迎的安全测试设备&#xff0c;在开源无线安全审计软件社区的支持&#xff0c;WiFiP…

全世界的狗都没有“生殖隔离” | 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅动物界的“一拳超人”雀尾螳螂虾它有一双力大无比的铁拳出拳速度在五十分之一秒内最大速度可达80km/h产生约60kg的冲击力威力足以匹敌小口径手枪子弹&#xff08;图源冷知君&#xff0c;侵权删&#xff09;如何把清水一秒变可乐&…

聊聊Go的三色标记法

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达当然了&#xff0c;也会时不时加个餐&#xff5e;我的第「203」篇原创敬上大家好&#xff0c;我是 Z 哥。今天带来一篇久违的技术型文章。之前也有不少小伙伴会问&#xff0c;Z 哥你好久没发技术性文章了。其实主要原因有…

架构师讲解Java中websocket的应用

这篇文章主要来介绍一下在java项目中&#xff0c;特别是java web项目中websocket的应用。 场景&#xff1a;我做了一个商城系统&#xff0c;跟大多数商城系统&#xff0c;分为客户端和后台&#xff0c;客户端供客户浏览&#xff0c;下单&#xff0c;购买&#xff0c;后台主要管…

当你死后尸体如何处理?两种新玩法了解一下!

全世界只有3.14 %的人关注了青少年数学之旅据国外媒体报道&#xff0c;死亡是一个庄严肃穆的事情&#xff0c;但是依据不同的文化&#xff0c;人类死亡之后会被认为肉体与灵魂分离&#xff0c;采取的葬礼方式存在很大差异&#xff0c;你想过你的葬礼会是什么样吗&#xff1f;烟…