如何让同级的亚克力盒子制作子级定位是各自的亚克力盒子制作

web前端学习笔记(CSS盒子的定位) - Stephen_Liu - 博客园
深入浅出、事半功倍
posts - 180, comments - 782, trackbacks - 0, articles - 0
& & &&使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对于它在原本的标准位置偏移指定的距离。相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它。& & &&使用relative,即相对定位,除了将position属性设置为relative之外,还需要指定一定的偏移量,水平方向通过left或者right属性来指定,竖直方向通过top和bottom来指定。以下为后面实验的基准代码。
&html xmlns="http://www.w3.org/1999/xhtml"&
&title&position属性&/title&
&style type="text/css"&
margin:20px;
font :Arial 12px;
background-color:#a0c8ff;
border:1px dashed #000000;
padding:15px;
background-color:#fff0ac;
border:1px dashed #000000;
padding:10px;
&div id="father"&
&div id="block1"&Box-1&/div&
& & &&这是一个很简单的标准流方式的两层的盒子,页面的效果如下图:
实验一:一个子块的情况&
& & &&下面的CSS样式代码中的Box-1处,将position属性设置为relative,并设置偏移距离,代码如下:&
backgroud-color: #fff0
border: 1px dashed #000000;
padding: 10
& & &&下图可以看出Box-1和原来的位置相比,它向右和向下分别移动了30像素,也就是说,&left:30px&的作用就是使Box-1的新位置在它原来位置的左边框右侧30像素的地方,&top:30px&的作用就是使Box-1的新位置在原来位置的上边框下侧30像素的地方。
& & &&这里用到了top和left这两个CSS属性,实际上在CSS中一共有4个配合position属性使用的定位属性,除top和left之外,还有right和bottom。这4个属性只有当position属性设置为absolute、relative和fixed时才有效。而且,在position属性取值不同时,它们的含义也不同。当position设置为relative时,它们表示各个边界与原来位置的距离。& & &&top、right、bottom和left这4个属性除了可以设置为绝对的像素数,还可以设置为百分数。此时,可以看到子块的宽度依然是未移动前的宽度,撑满未移动前父块的内容。只是向右移动了,右边框超出了父块。因此,还可以得出另一个结论,当子块使用相对定位以后,它发生了偏移,即使移动到了父盒子的外面,父盒子也不会变大,就好像子盒子没有变化一样。类似的,如果将偏移的数值设置为:right:30 bottom:30px,其效果图如下:
& & &&现在我们可以得到这样的结论,使用相对定位的盒子,会相对于它原本的位置,通过偏移指定的距离,到达新的位置。而该相对定位的盒子则仍然位于标准流中,它对父块没有任何影响。&
实验二:两个子块的情况&
& & &&下面讨论的是两个子块的情况。把上面的基础代码改为如下代码,在父div中放两个子div。首先对它们都不设置任何偏移。
&html xmlns="http://www.w3.org/1999/xhtml"&
&meta http-equiv="Content-Language" content="zh-cn" /&
&title&position属性&/title&
&style type="text/css"&
margin:20px;
font-family:Arial;
font-size:12px;
background-color:#a0c8ff;
border:1px dashed #000000;
padding:15px;
#father div{
background-color:#fff0ac;
border:1px dashed #000000;
padding:10px;
&div id="father"&
&div id="block1"&Box-1&/div&
&div id="block2"&Box-2&/div&
& & &&效果图显示如下:
& & &&从上面的代码中可以看出,现在对两个子块的设置还都空着。下面首先将Box-1盒子的CSS设置为:
bottom: 30
& & &&将子块1的position属性设置成了relative,子块2还没有设置任何与定位相关的属性。此时的效果如下图,与前面的图相比可以看到子块1的位置以自身为基准向上和向左各偏移了30像素。而子块2和前面的图相比没有任何变化,就好像子块1还在原来的位置上。
& & &&这一次又验证了前面实验1中总结出的结论,并且需要进行一小点儿的改进。因为,使用相对定位的盒子不仅对父块没有任何影响,对兄弟盒子也没有任何影响。那么如果同时设置两个子块的position都设置为relative,情况又会如何呢?现在把子块2也进行相应的设置,代码如下:
& & &&上面的实验是针对标准流方式进行的,实际上,对浮动的盒子使用相对定位也是一样的,都会相对于原有的位置进行指定的偏移并到达新的位置,而这一偏移并不会对其后面的兄弟元素带来任何的影响。
& & & 在了解了相对定位之后,下面开始分析absolute定位方式,它表示绝对定位。通过上面的例子可以了解到position属性需要通过配合偏移一定的距离来实现定位,而其中核心的问题就是以什么作为偏移的基准。绝对定位,盒子的位置以它的包含框为基准进行偏移。绝对定位的盒子从标准流中脱离。这意味着它们对其后的兄弟盒子的定位没有影响,其它的盒子就好像这个盒子不存在一样。 以下为后面实验的基准代码。
&html xmlns="http://www.w3.org/1999/xhtml"&
&title&absolute属性&/title&
&style type="text/css"&
margin:20px;
font-family:Arial;
font-size:12px;
background-color:#a0c8ff;
border:1px dashed #000000;
padding:15px;
#father div{
background-color:#fff0ac;
border:1px dashed #000000;
padding:10px;
&div id="father"&
&div &Box-1&/div&
&div id="block2"&Box-2&/div&
&div &Box-3&/div&
& & &&效果图如下。可以看到一个父div里面有3个子div,都是标准流方式排列。
实验三:使用绝对定位
& & &&下面尝试使用绝对定位,代码中找到对#block2的CSS设置位置,目前它还是空白的,下面将它改为:
& & &&这是的效果如下图,以浏览器窗口为基准,从右上角开始向下和向左各移动30像素。
& & &&是不是所有的绝对定位都以浏览器为基准来定位呢?答案是否定的,接下来对上面的代码做一处修改,为父div增加一个定位样式,代码如下:
background-color: #a0c8
border: 1px dashed #000000;
padding: 15
& & &&如下图所示效果发生了变化,偏移的距离没有变化,但是偏移的基准不再是浏览器窗口,而是它的父div了。
& & &&对于绝对定位的描述为:使用绝对定位的盒子以它的&最近&的一个&已经定位&的&祖先元素&为基准进行偏移。如果没有已经定位的祖先元素,那么会以浏览器窗口为基准进行定位。再有,绝对定位的框从标准流中脱离,这意味着它们对其后的兄弟盒子的定位没有任何影响,其他的盒子就好像这个盒子不存在一样。& & &&回到之前的实验,最初的代码中,在父div没有设置position属性时,Box-2这个div的所有祖先都不符合&已经定位&的要求,因此它会以浏览器窗口为基准来定位。而当父div将position属性设置为relative后,它就符合&已经定位&的要求了,它又是所有祖先中唯一一个已经定位的,也就满足&最近&这个要求,因此就会以它为基准进行定位了。以后将绝对定位的基准称为&包含块&。
实验四:绝对定位的特殊性质
& & &&对于绝对定位,还有一个特殊性质需要介绍。见如下代码:&
&html xmlns="http://www.w3.org/1999/xhtml"&
&style type="text/css"&
#outerBox {
width: 200px;
height: 100px;
margin: 10px auto;
background: silver;
#innerBox {
position: absolute;
top: 70px;
width: 100px;
height: 50px;
background: orange;
&div id="outerBox"&
&div id="innerBox"&&/div&
& & &&代码中,外面的盒子没有设置position属性,内部的盒子设置了绝对定位,但是只在垂直方向指定了偏移量,没有指定水平方向的偏移量,此时内部的盒子则因为设置了绝对定位属性,而外层div没有position属性,所以的它的定位基准是浏览器窗口。但是又由于在水平方向上没有设置偏移属性,因此在水平方向它仍然会保持原来应该在的位置,它的左侧与外层盒子的左侧对齐。因为在垂直方向上设置了&top:70px&,所以距离浏览器窗口顶部为70像素。
&& & &&由此实验可知,如果设置了绝对定位,而没有设置偏移属性,那么它仍然保持原有的位置。
固定定位:
&& & &&当position的属性值为fixed,即固定定位。它与绝对定位有些类似,区别主要在于定位的基准不是祖先,而是浏览器窗口或其它显示设备窗口。也就是当访问者拖动浏览器的窗口滚动条时,固定定位的元素相对于浏览器窗口的位置保持不变。
z-index空间位置:&
& & & &z-index属性用于调整定位时重叠块的上下位置,与它的名称一样,想象页面为x-y轴,垂直于页面的方向为z轴,z-index值大的页面位于其小的上方。z-index属性的值为整数,可以是正数也可以是负数。当块被设置了position属性时,该值便可以设置各块之间的重叠高低关系。默认的z-index值为0,当两个块的z-index值一样时,将保持原有的高低覆盖关系。&
注:该篇博客源自《CSS设计彻底研究》中的第四章,书中的例子简明扼要、通俗易懂,因此特copy下来与大家分享,同时也便于今后自己的在线查阅。彻底弄懂CSS盒子模式四(绝对定位和相对定位)
我的图书馆
彻底弄懂CSS盒子模式四(绝对定位和相对定位)
彻底弄懂CSS盒子模式四(绝对定位和相对定位)
作者:唐国辉
在用CSS控制排版过程中,定位一直被人认为是一个难点,这主要是表现为很多网友在没有深入理解清楚定位的原理时,排出来的杂乱网页常让他们不知所措,而另一边一些高手则常常借助定位的强大功能做出些很酷的效果来,比如CSS相册等等,因此自己杂乱的网页与高手完美的设计形成鲜明对比,这在一定程度上打击了初学定位的网友,也在他们心目中形成这样的一种思想:当我熟练地玩转CSS定位时,我就已是高手了。不管你怎么想,我只希望下面的教程能让你更深入地了解CSS定位属性。
先说说我这篇教程的思路,这对于你在正真开始阅教程前是有很大帮助的。我的思路是这样的:先给出定位较专业化精炼的解释,接下来再用打比如的方法形象地介绍它们,此时大家要和前面讲到的专业解释对比阅读。介绍完理论,将通过实例来介绍定位的各知识点,虽然实例不美,但每一则实例都是精心挑选的,如果要完整掌握CSS定位方法,请务必弄懂每一个实例的原理。最后将会带大家做一个较为酷的综合实例。如果你想提高你阅读本文的兴趣或者动力,你可以先跳到最后看综合实例的运行效果。
1.定位的专业解释
position : static | absolute | fixed | relative
从上面语法可以看出,定位的方法有很多种,它们分别是静态(static),绝对定位(absolute),固定(fixed),相对定位(relative)。在这个教程里,我不逐一讲,只讲最常用也是最实用的两个定位方法:绝对定位(absolute)、相对定位(relative)。
绝对定位(absolute):将被赋予此定位方法的对象从文档流中拖出,使用left,right,top, bottom等属性相对于其最接近的一个最有定位设置的父级对象进行绝对定位,如果对象的父级没有设置定位属性,即还是遵循HTML定位规则的,则依据 body 对象左上角作为参考进行定位。绝对定位对象可层叠,层叠顺序可通过 z-index 属性控制,z-index值为无单位的整数,大的在最上面,可以有负值。
相对定位(relative):对象不可层叠,依据left,right,top,bottom等属性在正常文档流中偏移自身位置。同样可以用z-index分层设计。
回头一看,下面我搞的“西瓜模型”还真的够复杂,建议读者跳过“定位的形象解释”部分内容,否则被“西瓜”`砸晕头我不负责。如果你读过了又没有被“西瓜”`砸晕,那恭喜你,你已经具备刻苦学习精神了,挖哈哈...
2.定位的形象解释
我先来架设一个虚拟的场景:有一个矩形的房间,里面还有一个水桶装了些水,水里还浸泡着一个西瓜,这个房间半空中还有不少的钩子用于挂东西用。现在我把网页元素与上面物件对应上,那么房间就是一个网页,水桶是网页中的一个板块,桶中的水就是文本流,西瓜就是将要被定位的对象。
(1)贡献的绝对定位(absolute)
对照前面解释,如果西瓜被赋予绝对定位,那么就等于把西瓜从水中捞起来挂在半空中的钩子上,水桶中西瓜原来占用的空间水会自动填补它(绝对定位对象会让出自己原先占用位置,所以说它是贡献的)。此时如果之前没有对水桶进行定位设定,那么被拿起的西瓜位置不会再受水桶位置影响,水桶怎么移动,西瓜还是挂在原来位置,至于西瓜要怎放,则以房间左上角(body左上角)为准,用left,right,top,bottom值来定位。但是如果水桶也给出了定位设置(通常是相对定位,下面有讲到这一实用技巧),此时西瓜的摆放就没有那么自由了,尽管此时西瓜被拿起来了不会影响水桶中的水(文本流),但它还是要听桶的话,桶会告诉西瓜“你可以活动,但应该在我的范围内走动,比方说我要你在我左上方1米处,你就要跟死这一点,我走你也要跟着走”,如果桶中有很多个西瓜,可以全部拿出来吊到半空中,它们将被安排在不同高度的空间(层),所以在房顶垂直往下看,有可能看到不同西瓜层叠在一起的情况(这个所谓的高度在网页中是不存在的,就像FLASH动画中的不同层上安排了元素,但它们在看时不会有深度感觉)。可见绝对定位的对象参考目标是它的父级,专业称之为包含块。
(2)自私的相对定位(relative)
相对定位一个最大特点是:自己通过定位跑开了还占用着原来的位置,不会让给他周围的诸如文本流之类的对象。相对定位也比较独立,做什么事它自己说了算,要定位的时候,它是以自己本身所在位置偏移的(相对对象本身偏移)。再拿前边作比如来解,那么此时西瓜似乎是有魔法的,如果西瓜通过相对定位在水桶中偏移了你会看到一个现实生活中不存在的现象:水中有一个地方水凹下去了,周围的水不能填补它,西瓜看起来在旁边,如果搅动一下桶中的水,那个凹的位置会发现改变(文本流对相对定位对象还存在影响),但是凹处到西瓜出现的距离始终保持一致。可见文本流与它之间还会互相影响,因为对象并没有真正脱离文本流,就像有两个人在同一层楼水平移动的过程中会有碰头的机会。
(3)总结两种定位的特征
绝对定位就像是把不同对象安排到了一栋高楼的不同楼层(一般指不是第一层,我们这里理解为文本流就放在首层),它们互不影响,但是它们怎么移动与你楼的地基和面积(父级)有关。相对定位指对象还是在首层楼与文本流一起存放,它们之间肯定存在影响。
(4)对特殊情况的补充
在用相对定位和绝对定位的时候,有一种情况是它们的定位值用到了负值则对象可沿相反方向移动,刚才说到的把对象安排在一栋楼的不同层,如果某个对象一开始就是背靠着最外边墙的,此时再用一个负值定位它,它就会神奇般地跑出墙外去了,当然现实中可没有这种惊险而又神奇的事发生,本人只为了延用上面的比如作形象解释。
3.实例强化对定位属性的理解
(1)无定位设置,对象遵循HTML定位规则。一般是子级不会跑出父级外边去(子级没有使用负边界情况),子级一般是靠在父级左上角的,父级放在最下层。
&提示:您可以先修改部分代码再运行
(2)给设定了定位属性的对象指定left,right,top,bottom属性中的至少一个,不然定位不起作用。下面实例中虽然给box2设定了定位属性position: absolute,但是如果没有指定其中一个方位定位值top: 0px,定位是不发生作用的,你可以删除我注释的样式再测试效果进行前后对比。
&提示:您可以先修改部分代码再运行
(3)绝对定位对象可以层叠,层叠顺序用z-index控制,如果没有指定则遵循其父对象的定位方法,就目前来说要做到不同浏览器正常浏览,最好不要给z-index指定负值,因为不同浏览器最终解释的效果有所不同,这是浏览器存在Bug引起的,为了解释这一现象,下面实例中的最底层图片我用到了负值,所以会出现在IE中可以看到3幅图层叠,而转到FF中你就只能看到两幅图层叠了。
&提示:您可以先修改部分代码再运行
(4)相对定位对象会占据它原来位置,在下面实例中,没有设定相对定位前,绿色小盒子是在蓝色盒子左上角的,之前也设定了绿色小盒子的浮动方式为左浮动,可以看到文本环绕在它右边,但是后来用相对定位方法把绿色小盒子重定位到外面去了,它还占着自己原来位置,因为你还可以看到文本流没有发生自动填补流动。因此这种直接的相对定位方法较少用,因为重定位对象后原来位置空了一块。相对定位常与绝对定位结合用,一般是给父级设定相对定位方式,子级元素就可以相对它进行方便的绝对定位了(请注意看后面的实例)。
&提示:您可以先修改部分代码再运行
(5)相对定位的对象不可以重叠。这一点也许比较难理解,先来这样理解吧,因为相对定位的对像没有脱离文本流,就像两个还是住在同一层楼的人,任何时候,他们脚下踩的地方不可能被另一个人踩着的,如果可以就意味着两个人共享一块地方了。在下面的实例中,两个小盒子都刚好排在大盒子上方,所以在大盒子中输入的文字被挤到了下面。上面两个盒子我再用相对定位的方法对调了它们的位置,当前它们下方的空间其实不是自己的,也正因为它们没有重叠,所以盒子上方还是有两个盒子占用的空间,下面文字无法向上流动(我已对盒子设定了浮动属性的了,如果不设定,即使有空间文本也不会往上流,上面盒子是块级元素,会独立占据一行)。
&提示:您可以先修改部分代码再运行
(6)高度自适应的妙用。在下面实例中,右边的紫色小盒子高度是没有设定的,它的高度是随着里面内容的增加而增高的,但我们又可以通过绝对定位方法把它始终定位在父盒子的右上角。同理,我们也可以只设定高度而让宽度自动随内容增加而变宽。
&提示:您可以先修改部分代码再运行
[[i] 本帖最后由 webflash 于
11:30 编辑 ]
喜欢该文的人也喜欢如果没有绝对定位,只需要&margin: 0 auto盒子即可实现水平垂直居中显示;如果盒子绝对定位了,margin: 0 auto就会失效。在父亲相对定位的前提下,要想实现绝对定位的儿子水平垂直居中显示,可以使用如下代码:
position:left:50%; // left设置为50%,这时盒子是以元素的左侧进行的水平居中,所以需要设置margin-left为负元素宽度的一半。top:50%; //
top设置为50%,这时盒子是以元素的上侧进行垂直居中显示,所以需要设置margin-top为负元素高度的一半。width:200height:200margin-top:-100margin-left:-100
阅读(...) 评论()豆丁微信公众号
君,已阅读到文档的结尾了呢~~
html网页布局设计,盒子模型,html盒子模型,盒子模型,css盒子模型,css3盒子模型,dnf盒子模型用不了,dnf多玩盒子模型,多万dnf盒子模型,lol盒子网页版,网页盒子
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
html网页布局设计,盒子模型
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口&!DOCTYPE html&
&head lang="en"&
&meta charset="UTF-8"&
&title&&/title&
width: 400px;
height: 200px;
background-color: red;
/*使用了position定位属性的盒子就无法使用margin:200居中了*/
position: absolute;
top:200px;
/*就要使用以下两种方式*/
/*1.盒子传统居中方式
margin-left:-200*/
/*2. 使用css3 来实现居中*/
/* 向左走自身宽度的一半*/
transform:translate(-50%);
&div class="box"&&/div&
CSS居中(一)--div盒子水平垂直居中
CSS盒子居中的几种方法
实现盒子水平居中,关于定位的问题
css3中通过transform设置盒子居中的解析
[web前端学习笔记]定位的盒子居中显示
17.定位的盒子居中显示
html常见盒子居中小结
盒子居中的几种方式
盒子居中(常用的方法)
html中盒子上下左右居中方法汇总
没有更多推荐了,}

我要回帖

更多关于 小米盒子5什么时候上市 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信