css样式布局中position的那些事儿

哎,页面布局及设计开发,对于一个一直从事后台开发来说屌丝来说,确实是件很费时、费力,很艰难的一件事。

今晚是想实现把多张重叠在一起,或是标记一张图片中不同的位置然后赋以超链接。花了一晚上的时间,才算初步搞定,大致明白了以下几个css属性用法。

【1】将标签设置为float,和同事讨论:

html的标签有块级和行级(至于那些是块级,可百度之),每个块级会占用html文档的一行(之所以是一行,是因为块级后面会带有换行)。如果把块级标签设置为float时,则标签:(1)脱离原来父级标签。(2)可以在一行进行显示。

【2】position设置为fixed。

fixed是相对于整个浏览器。有兴趣的同学可以试验下,把一个有大小的标签设置为fixed,缩放浏览器,使浏览器产生滚动条(上下或左右),当拉动滚动条时,被设置成fixed的标签是不会改变其位置的。

【3】position设置为absolute。

absolute是相对于最近的父亲标签。依然是上面的那个试验,当拉动滚动条时,被设置成absolute的标签也会跟着html文档位置的改变而变动。

【4】position设置为relative。

relative是相对于原来该标签的位置。

下面结合今晚我做是试验图,来看下效果:

(1)a线是absolute

(2)b线是fixed。

上面图我主要的目的是,把圆盘中make1~8的位置给标记出来,然后给以超链接,具体的代码为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<!--<link type="text/css" rel="stylesheet" media="all" href="webCss.css">-->
<title>mydw</title>
<style>
body {
	background:#CCCCCC;
}
a.makeR1{ left:150px; top:45px; width:70px; height:80px;}
a.makeR2{ right:150px; top:45px;width:70px; height:80px;}
a.makeR3{ left:65px; top:135px; width:70px; height:80px;}
a.makeR4{ right:65px; top:135px;width:70px; height:80px;}
a.makeR5{ left:65px; top:265px; width:70px; height:80px;}
a.makeR6{ right:65px; top:265px;width:70px; height:80px;}
a.makeR7{ right:215px; top:365px;width:70px; height:60px;}
a.makeR8{ right:180px; top:160px;width:137px; height:137px;}
.makeR9{ right:180px; top:160px;width:137px; height:137px;}
.roundMakeBox{
	position:fixed;
	z-index:99992; 

	text-align:center;
	left:50%;
	margin-left:-250px;
	width:499px;
	height:501px;
	border:1px solid blue;
}
.roundLink{ position:relative; bottom:0px;z-index:99993;border:1px solid green;}
.roundLink a{ display:block;position:absolute;z-index:99994;border:1px solid red;background:#FFFF00;}
#img1{ display:block;position:absolute;z-index:99994;border:1px solid red;}
</style>
</head>
<body>
<div class="roundMakeBox">
	<div class="roundLink">
		<img src="makeRound.png">
		<a href="#" class="makeR1">makeR1</a>
		<a href="#" class="makeR2">makeR2</a>
		<a href="#" class="makeR3">makeR3</a>
		<a href="#" class="makeR4">makeR4</a>
		<a href="#" class="makeR5">makeR5</a>
		<a href="#" class="makeR6">makeR6</a>
		<a href="#" class="makeR7">makeR7</a>
		<a href="#" class="makeR8">makeR8</a>
		<img id="img1" class="makeR9" src="LOGObg.png" />
	</div>
</div>
</div>
</body>
</html>

另外

【1】关于roundMakeBox居中的问题:

left:50%;
margin-left:-250px; 

left:50%是标签的左边缘移动到父标签的50%处(一半),那为什么又要margin-left -250px呢?

因为当我left50%时,标签的左边缘虽然到了50%处,但整个的标签确实向右偏移了。我们所谓的标签居中,是想标签中心位置在父标签的中心位置处,left50%显然是多移动了标签一般的位置,原来标签是500px,因此就margin-left-250px了。

【2】关于makeR中每个a的像素位置,是怎么得到的?

弄清楚position的absolute后,剩下的就是测量位置了(用什么测?我是用尺,不知道是否还有其他更好的方式)。

好了,以上是我的理解,不知是否有表达清楚,或是我理解的有偏差,看官需要自己去实验测试。

时间: 2024-12-11 18:36:31

css样式布局中position的那些事儿的相关文章

CSS+DIV布局中absolute和relative区别

http://developer.51cto.com/art/201009/225201.htm CSS+DIV布局中absolute和relative区别 这里向大家简单介绍一下CSS+DIV布局中absolute和relative属性的用法和区别,定位为relative的元素脱离正常的文本流中,但其在文本流中的位置依然存在,而定位为absolute的层脱离正常文本流,但与relative的区别是其在正常流中的位置不在存在. 详解CSS+DIV布局定位 在用CSS+DIV进行布局定位的时候,一

css样式表中设置table的第一列的宽度是固定值

table{table-layout:fixed;}table tr td:first-child,table tr td:first-child{width:120px;} 首行第一个td定宽同列的宽度都会和他一样. *注意 第一行 第一个用的是 td 还是 th css样式表中设置table的第一列的宽度是固定值,布布扣,bubuko.com

css样式表中四种属性选择器

css样式表中四种属性选择器1> 简易属性 tag[class]{ font-weight:bold } It will affect all tag with any class. e.g. <h2 class="old" > or <h2 class="new"> 2>精确属性值 a[href="http://www.cnblogs.cn"][title="textTitle"]{fon

css样式表中的样式覆盖顺序

css样式表中的样式覆盖顺序 - - ITeye技术网站http://spartan1.iteye.com/blog/1526735 重点归纳: 查找一些教材中(w3schools等),只说css的顺序是“元素上的style”>“文件头上的style元素”>“外部样式文件”,但对于样式文件中的多个相同样式的优先级怎样排列,没有详细说明.经过测试和继续搜索,得知优先级如下排列: 或者以下也可以称之为一些优先原则(by liwei 20140803) 1.样式表的元素选择器选择越精确,则其中的样式

css样式表中的样式覆盖顺序(转)

转自:http://spartan1.iteye.com/blog/1526735 有时候在写CSS的过程中,某些限制总是不起作用,这就涉及了CSS样式覆盖的问题,如下 Css代码 #navigator { height: 100%; width: 200; position: absolute; left: 0; border: solid 2 #EEE; } .current_block { border: solid 2 #AE0; } 查找一些教材中(w3schools等),只说css的

html css 样式布局

一.position:fixed 锁定位置(相对于浏览器的位置),例如有些网站的右下角的弹出窗口. 示例: 二.position:absolute 1.外层没有position:absolute(或relative):那么div相对于浏览器定位,如下图中b(距离浏览器右边框为50像素,距离下边框为20像素). 2.外层有position:absolute(或relative):那么div相对于外层边框定位,如下图中bb(距离d的右边框50像素,距离d的下边框为20像素). 示例: 三.posit

Div+CSS网页布局中CSS无效的十个常见原因

学习Div+CSS网页布局的知识,可是兄弟连validation有时难以操作,但用它你可以查看由版面设计引起的差错,验证程序抛出大量差错和警告,说明你的XHTML尚未完善,可能无法在不同浏览器上保持一致功能,下面十个细微的失效问题难住了大批程序员,本文就告诉你如何解决,在本文开始前介绍一些使用兄弟连PHP培训的基础div+css验证程序时需要注意的问题. 1.不要担心验证程序的警告:如果验证程序说发现12处错误以及83处警告,不要理它,继续进行下一步. 2.一次更正一个错误:按顺序进展工作,从上

CSS网页布局中必须要了解的几个XHT…

应用div+css网页布局,你必须了解一些xhtml结构标签,原则上一个xhtml文档所有的标签都应该是结构标签,需要表现的地方都使用css来控制. 下面列一个完整xhtml的结构标签: 结构 body, head, html, title 文本 abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, 

CSS 样式表中padding 的用法

CSS中padding 描述的是内边距的意思,margin是外边距.QSS中同样的道理. 1. padding表示内边距的意思,margin---外边距.2. CSS的 padding 属性定义元素边框与元素内容之间的空白区域.3. padding 接受长度值或百分比值,但不允许使用负值.4. 示例:如果希望所有内边距都是10 像素,只需要设置:padding:10px; 就可以了.5. 也可以分别设置4个边的内边距,只需通过它们的单独属性,分别设置上.右.下.左内边距:* padding-to