CSS成分定位6,CSS浓密理解之relative定位

CSS深刻掌握之relative定位

2018/05/25 · CSS ·
relative

原稿出处: micstone   

CSS position:absolute浅析,absolute浅析

壹 、相对定位的特点

纯属定位有所与变化一样的特色,即包裹性和破坏性。

就破坏性而言,浮动仅仅破坏了成分的冲天,保留了元素的肥瘦;而相对定位的成分中度和宽度都并未了。

请看上边代码:

澳门葡京 1 1
<!DOCTYPE html> 2 <html> 3 <head> 4 <meta
charset=”utf-8″> 5 <title>绝对定位的特征</title> 6
<style> 7 .box1,.box2,.box3 { 8 background-color: orange; 9
margin-bottom: 30px; 10 } 11 12 .absolute { 13 position: absolute; 14 }
15 16 .wraper { 17 display:inline-block; 18 margin-left: 300px; 19 } 20
21 .float { 22 float: left; 23 } 24 25 .box3 { 26 position: absolute; 27
} 28 </style> 29 </head> 30 <body> 31 <div
class=”box1″> 32 <img
src=””
alt=”A picture” style=”width:175px;height:100px” /> 33 <img
src=”” alt=”A
picture” style=”width:240px;height:180px” /> 34
<p>那是平时代时髦中的两幅图像。</p> 35 </div> 36 <div
class=”box2″> 37 <img class=”absolute”
src=””
alt=”A picture” style=”width:175px;height:100px” /> 38 <img
src=”” alt=”A
picture” style=”width:240px;height:180px” /> 39 40 <div
class=”wraper”> 41 <img class=”float”
src=””
alt=”A picture” style=”width:175px;height:100px” /> 42 <img
src=”” alt=”A
picture” style=”width:240px;height:180px” /> 43 </div> 44
<p>左图,将第②幅图像相对定位,其完全脱离文书档案流,并且覆盖在其次幅图像之上;因此来看,相对定位的破坏性不仅让要素没有了莫斯中国科学技术大学学,甚至未曾了大幅。</p>
45
<p>右图,将率先幅图像左浮动,其就算脱离了文书档案流,不过并从未覆盖在别的因素之上;浮动的破坏性仅仅破坏了成分的冲天,而保留了元素的上升幅度。</p>
46 </div> 47 <div class=”box3″> 48 <img
src=””
alt=”A picture” style=”width:175px;height:100px” /> 49 <img
src=”” alt=”A
picture” style=”width:240px;height:180px” /> 50
<p>将容器相对定位,显示其包裹性。</p> 51 </div> 52
</body> 53 </html> View
Code

 

② 、相对定位的貌似规则:

要素相对定位时,会完全剥离文书档案流,并相对于其涵盖块定位。

相对定位的隐含块,是其多年来的已定位的上代成分。

假定那一个祖先成分是块级成分,包涵块则为该祖先成分的内边距边界,即边框。

万一那些祖先成分是行内元素,包蕴块则为该祖先成分的内容边界,即内容区。

只要没有已定位的祖先成分,元素的盈盈块定义为始发包含块。

偏移属性:top、right、bottom、left。

假定相对定位的成分没有安装偏移属性,即使脱离文书档案流,不过它的职分是原地不动的。

偏移属性能够为负值,将元素定位到含有块之外。

代码在此地:

澳门葡京 2 1
<!DOCTYPE html> 2 <html> 3 <head> 4 <meta
charset=”utf-8″> 5 <title>相对定位的貌似规则</title> 6
<style> 7 body { 8 background-color: #ccc; 9 } 10 .container { 11
width:500px; 12 background-color: orange; 13 margin:20px auto 50px auto;
14 padding:20px; 15 border:2px solid red; 16 } 17 18 .box2 img,.box3
img, 19 .box4 img,.box5 img { 20 position: absolute; 21 } 22 23 .box3
img,.box4 img { 24 left:0; 25 bottom:0; 26 } 27 28 .box5 img { 29 left:
-30px; 30 bottom: -50px; 31 } 32 33 .block { 34 position :relative; 35
height: 200px; 36 } 37 </style> 38 </head> 39 <body>
40 <div class=”container”> 41 <div class=”box1″> 42
<p>成分绝对定位时,会完全退出文书档案流,并绝对于其富含块定位。相对定位的带有块,是其多年来的已稳定的祖宗成分。</p>
43 <img
src=””
alt=”A picture” style=”width:175px;height:100px” /> 44 <ul> 45
<li>假若那个祖先成分是块级成分,包涵块则为该祖先成分的内边距边界,即边框。</li>
46
<li>假诺那几个祖先成分是行内成分,包罗块则为该祖先成分的始末边界,即内容区。</li>
47
<li>就算没有已稳定的祖宗成分,成分的包括块定义为始发包含块(三个视窗大小的矩形)。</li>
48 </ul> 49 </div><!–关闭box1–> 50
</div><!–关闭container–> 51 <div class=”container”>
52 <div class=”box2″> 53
<p>不管有没有曾经稳定的祖先成分,只要没有偏移量,相对定位之后,原地不动,脱离文书档案流。</p>
54
<p>下边这一个早已相对定位的图像原地没动,可是曾经脱离了文书档案流。</p>
55 <img
src=””
alt=”A picture” style=”width:175px;height:100px” /> 56
</div><!–关闭box2–> 57
</div><!–关闭container–> 58 <div class=”container”>
59 <div class=”box3″> 60
<p>没有已经稳定的上代成分,有偏移量,相对定位之后,以开头包蕴块(一个视窗大小的矩形)为尺度举行偏移。</p>
61 <p>当偏移量为left:0;
buttom:0时,图像水平偏移到了启幕包罗块左下角(打开网页最开始的这个视窗的左下角)。</p>
62 <img
src=””
alt=”A picture” style=”width:175px;height:100px” /> 63
</div><!–关闭box3–> 64
</div><!–关闭container–> 65 <div class=”container
block”> 66 <div class=”box4″> 67
<p>有一度定位的上代成分,有偏移量,相对定位之后,以已经固定的祖先成分为基准实行偏移。</p>
68
<p>此处已经定位的先世成分为那么些图像的器皿div元素,偏移量为left:0;
bottom:0时,图像到了这一个容器的左下角(以边框为界)。</p> 69
<img
src=””
alt=”A picture” style=”width:175px;height:100px” /> 70
</div><!–关闭box4–> 71
</div><!–关闭container–> 72 <div class=”container
block”> 73 <div class=”box5″> 74
<p>有已经固定的祖先成分,有偏移量,相对定位之后,以已经固化的先人成分为准绳实行偏移。</p>
75
<p>此处已经固定的上代成分为这一个图像的容器div成分,偏移量为left:-30px;
bottom:-50px时,图像到了那么些容器之外(以边框为界)。</p> 76
<img
src=””
alt=”A picture” style=”width:175px;height:100px” /> 77
</div><!–关闭box5–> 78
</div><!–关闭container–> 79 </body> 80 </html>
View Code

 

 叁 、用margin调整相对定位成分的职位

相对定位的要素,除了能够应用top、right、bottom、left举办偏移之外,还可以够通过margin值举办精明确位,而且自适应性更好。

示例:

澳门葡京 3 1
<!DOCTYPE html> 2 <html> 3 <head> 4 <meta
charset=”utf-8″> 5
<title>用margin调整相对定位成分的地点</title> 6
<style> 7 .box1,.box2,.box3 { 8 display: inline-block; 9
margin-right: 150px; 10 border:1px solid blue; 11 } 12 13 span { 14
background-color: red; 15 } 16 17 .box2 span,.box3 span { 18 position:
absolute; 19 } 20 21 .meng { 22 margin-left: -3em; 23 } 24 25 .box4 { 26
border:1px solid red; 27 width: 500px; 28 margin: 50px auto 0 auto; 29
padding:20px; 30 } 31 32 li { 33 margin-bottom: 20px; 34 } 35
</style> 36 </head> 37 <body> 38 <div
class=”box1″> 39 <span>卡哇伊</span> 40 <img
src=””
style=”width:200px;height:300px” /> 41
<span>萌萌哒</span> 42 </div> 43 <div
class=”box2″> 44 <span>卡哇伊</span> 45 <img
src=””
style=”width:200px;height:300px” /> 46
<span>萌萌哒</span> 47 </div> 48 <div
class=”box3″> 49 <span>卡哇伊</span> 50 <img
src=””
style=”width:200px;height:300px” /> 51 <span
class=”meng”>萌萌哒</span> 52 </div> 53 <div
class=”box4″> 54 <ol> 55
<li>第二幅图,最开端的典范。</li> 56
<li>第①幅图,五个标签相对定位,可是不点名其余偏移量。</li>
57 <li>第③幅图,用margin负值调整“萌萌哒”的职分,完结。</li>
58 </ol> 59 </div> 60 </body> 61 </html> View Code

舍弃偏移属性而改用margin来调整相对定位成分,其原理在于:

相对定位的成分,在不设置偏移量的时候,它就算完全脱离了文书档案流,但它还在原先的任务。

选取偏移属性实行精分明位,其具体地点是在乎相对定位成分的盈盈块,差别的盈盈块将会有一齐不一致等的定点结果。

而使用margin实行精明显位,不重视于其余别的东西,特别可控。

在写那篇博文的时候,absolute让自个儿给relative带话,它说:“relative,你给自身滚好啊,作者那辈子都不想见到你!”

预感后事如何,请移步relative篇,多谢!

 

肆 、相对定位与完整布局

什么样用绝对定位来对页面实行全部布局?

总结凶残,不学就浪费啊!!!

澳门葡京 4 1
<!DOCTYPE html> 2 <html> 3 <head> 4 <meta
charset=”utf-8″> 5 <title>相对定位与总体页面布局</title>
6 <style> 7 * { 8 margin: 0; 9
}/*重置全体margin为0,这一步极其主要,不然布局必乱。*/ 10 11
html,body,.page { 12 width: 100%; 13 height: 100%; 14 overflow: hidden;
15 } 16 17 .page { 18 position: absolute; 19 top: 0; 20 right: 0; 21
bottom: 0; 22 left: 0; 23 background-color: #ccc; 24 } 25 26 .header {
27 position: absolute; 28 height: 50px; 29 left: 0; 30 right: 0; 31
background-color: purple; 32 padding: 0 5px; 33 z-index: 1; 34 } 35 36
.header>h1 { 37 line-height: 50px; 38 text-align: center; 39 } 40 41
.aside { 42 position: absolute; 43 top: 50px; 44 bottom: 50px; 45 left:
0; 46 width: 100px; 47 background-color: orange; 48 } 49 50 .footer { 51
position: absolute; 52 right: 0; 53 bottom: 0; 54 left: 0; 55 height:
50px; 56 background-color: purple; 57 } 58 59 .footer>h1 { 60
text-align: center; 61 line-height: 50px; 62 } 63 64 .content { 65
position: absolute; 66 top: 50px; 67 right: 0; 68 bottom: 50px; 69 left:
100px; 70 background-color: cyan; 71 overflow: auto; 72 } 73 74 .content
h1 { 75 margin-top: 100px; 76 margin-left: 50px; 77 } 78 79 .content li
{ 80 margin-left: 100px; 81 margin-top: 80px; 82 font-size: 24px; 83
line-height: 1.5; 84 } 85 86 ol { 87 margin-bottom: 80px; 88 } 89
</style> 90 </head> 91 <body> 92 <div
class=”page”> 93 <div class=”header”> 94
<h1>Header</h1> 95 </div> 96 <div class=”aside”>
97 <h1>Aside</h1> 98 </div> 99 <div
class=”content”> 100 <h1>实现原理</h1> 101 <ol> 102
<li>创造一个div.page,相对定位,铺满全屏。</li> 103
<li>创造二个div.header,绝对定位,设定中度。</li> 104
<li>创立1个div.aside,绝对定位,设定宽度。</li> 105
<li>创造一个div.footer,相对定位,设定中度。</li> 106
<li>创设二个div.content,相对定位,依照周围div的宽高设定它的宽高;<br
/> 107
以div.content成分取代原body元素,全体的页面内容都放在那里面。</li>
108 </ol> 109 </div> 110 <div class=”footer”> 111
<h1>Footer</h1> 112 </div> 113 </div> 114
</body> 115 </html> View
Code

 

position:absolute浅析,absolute浅析
① 、相对定位的天性 相对定位有所与变化一样的特色,即包裹性和破坏性。
就破坏性而言,浮动仅仅破…

《明白CSS.DIV网页样式与布局》录制6-10课总括图:

1.css margin足以改变容器的尺码
  元素尺寸
  可视尺寸–标准盒子模型中盒子的上升幅度是不包罗margin值的,clientWidth
  占据尺寸–包含margin的宽窄
outWidth不在标准之中,jquery中有相对应的艺术

1.前言

在前面的两篇文章:CSS深刻精晓之float浮动和CSS浓密精晓之absolute定位中,介绍了floatabsolute的特色和使用形式,即便大家仔细翻阅完了那两篇作品,相信你的CSS打怪技能又进步的一大截,那么趁着祥和多年来事态不错,就多给大家分享点本身日常所学的技能。一方面对友好的技能能够有二个计算,看本人终究领会透了没有,另一方面,以文章的款式分享出来,悦己同时悦外人。好了,开始进入前天的宗旨,前些天轮到另二个固定属性登场了——relative,咱们鼓掌欢迎。

澳门葡京 5

  margin与可视尺寸
    1.1用到十一分与没有设定width/height的普通block水平成分
    2.贰只适用于水平方向尺寸
    <body style=”background-color:#1a2b3c”>
      <div style=”border:4px 6px; background-color:blue”>
        文字<br />
        文字<br />
      </div>
    </body>
    当改变margin值时盒子的宽度会变卦。

2.relative的特性

relative,顾名思义,相对。在CSS中,大家都那样使用:position: relative,翻译成粤语正是周旋稳定。不明了大家在选取的进程中,有没有想过如此的一个题材:它到底是周旋哪个人定位呢?在揭示答案以前,大家还是以例子来表达难点。

<!–HTML代码–> <div class=”box”> <div class=”td”>
<div class=”element1″></div> <h3>使用margin</h3>
</div> <div class=”td”> <div
class=”element2″></div> <h3>使用relative</h3>
</div> </div>

1
2
3
4
5
6
7
8
9
10
11
<!–HTML代码–>
<div class="box">
    <div class="td">
        <div class="element1"></div>
        <h3>使用margin</h3>
    </div>
    <div class="td">
        <div class="element2"></div>
        <h3>使用relative</h3>
    </div>
</div>

能够直接看核心CSS代码:

/*CSS代码*/ .element1{ margin-top: -30px; } .element2{ position:
relative; top: -30px }

1
2
3
4
5
6
7
8
/*CSS代码*/
.element1{
    margin-top: -30px;
}
.element2{
    position: relative;
    top: -30px
}

在浏览器中的效果如下:

澳门葡京 6

在本例中,使用.element1.element2五个CSS类达到的机能不均等,使用margin负值改变成分的职位后,后边成分的职位跟着变动,而利用position: relativetop负值改变成分的职位,前边成分的地方并没有发生变更。其实,那么些事例表明了relative原则性的两大特点:

1)相对自个儿。使用relative定位的成分,其相对的是自己举行偏移。

2)无侵入性。使用relative定位的成分,能够知晓为产生了”幻影”,其真身依旧在原来的地点上,所以并不会影响页面中任何的成分的布局。本例中,使用relative那多少个字照旧在原先的职责上,而使用margin那多少个字则偏移了原本的职责。

 

    应用 :完毕一侧定宽的自适应布局
      <img width=”150px” style=”float:left;”>
      <p style=”margin-left:170px”>图片左浮动</p>

3.relative的范围成效

 

    margin与占用尺寸
    1.block/inline-block水准成分均适用
    2.与没有设定width/height值非亲非故
    3.适用于水平方向和垂直方向
    例
      <body style=”background-color:#1a2b3c”>
        <img style=”marign-bototm:-50″>
      </body>
    能够看出容器占据的尺码变小了。
    利用这一风味
    滚动容器内上下留白
      <div style=”height:100px; padding:50px 0;”>
        <img height=”300″>
      </div>
    里面盒子撑开外面盒子显示滚动条,当然这在非chrome浏览器中是从未有过留白效果的(上面有上边没有)。
    正确的做法是
    <div style=”height:100px; “>
      <img height=”300″ style=”marign:50px 0″>
    </div>

3.1 relative对absolute的界定作用

作者们领略,absolute定位的是其首先个祖先成分定位属性不为static属性,假设没有relative大概fixed定位的意况下,给absolute添加top/left、right/bottom等质量能够生出偏移,如下:

position: absolute; top: 10px; left: 10px;

1
2
3
position: absolute;
top: 10px;
left: 10px;

此刻,absolute元素就会快速定位到局里浏览器左边10像素,顶部10像素的地点。不过倘诺给父成分添加position: relative以往,则absolute的偏移能力被父成分限制住了,如下图所示:

澳门葡京 7

 

第三话:css margin与比例单位——精通margin百分比单位
      水平方向百分比/垂直方向百分比
      普通元素百分比/相对成分百分比

3.2 relative对overflow的范围成效

一向看上面包车型地铁那几个例子:

<!–HTML代码–> <div class=”box”> <div class=”son”/>
</div> <div class=”box” style=”position: relative”> <div
class=”son”/> </div>

1
2
3
4
5
6
7
<!–HTML代码–>
<div class="box">
    <div class="son"/>
</div>
<div class="box" style="position: relative">
    <div class="son"/>
</div>

.box{ overflow: hidden; width: 50px; height: 50px; background-color:
#dddddd; } .son{ position: absolute; width: 100px; height: 100px;
background-color: #cd0000; }

1
2
3
4
5
6
7
8
9
10
11
12
.box{
    overflow: hidden;
    width: 50px;
    height: 50px;
    background-color: #dddddd;
}
.son{
    position: absolute;
    width: 100px;
    height: 100px;
    background-color: #cd0000;
}

在那么些例子中,.boxCSS成分定位6,CSS浓密理解之relative定位。的宽和高都以50px,而.son要素的宽和高都以100px,纵然.box要素设置了overflow:hidden,但仍旧限制不了.son要素的大小,其宽和高都以100px,而当.box安装了固定属性relative后,.son要素的宽和高乖乖的变成了50px。如下图所示:

澳门葡京 8

要素定位

      百分比margin的猜想规则
        img{margin :10%;with:600px;heigth:200px;}
      普通成分的百分比margin都以对峙于容器的增长幅度总计的!所以那边的margin:百分之十;—->top:60px,left:60px;都是周旋与容器的升幅来计量的。

3.3 relative对层级z-index的限量成效

安装了永恒成分的z-index值为数值能够创设”层叠上下文”(在前面的篇章中会讲到)。在底下的第3幅图中,设置了margin负值,就算还要安装了z-index为数值,但是后面的要素还是覆盖了日前的成分,而当扩充了永恒属性position: relative后,制造了层叠上下文,前边成分的层叠顺序高,即便还要安装了margin负值,不过后边的要素依旧覆盖不了前面包车型地铁要素。如下图所示:

<!–HTML代码–> <div class=”son” style=”z-index: 3″/>
<div class=”son” style=”z-index: 2;margin-top:
-20px;background-color: tan;”/> <!–分割线–> <div
class=”son” style=”position: relative;z-index: 3″/> <div
class=”son” style=”z-index: 2;margin-top: -20px;background-color:
tan;”/>

1
2
3
4
5
6
<!–HTML代码–>
<div class="son" style="z-index: 3"/>
<div class="son" style="z-index: 2;margin-top: -20px;background-color: tan;"/>
<!–分割线–>
<div class="son" style="position: relative;z-index: 3"/>
<div class="son" style="z-index: 2;margin-top: -20px;background-color: tan;"/>

澳门葡京 9

下边抛出贰个难题,如若设置了相持属性top/bottomleft/right的争辩固定成分和相对定位成分,它们是哪些表现的?

在CSS深刻掌握之absolute定位那篇小说中,大家领略相对定位成分表现的是拉伸本性,从而能够保持流体性情,不过相对稳定却是”你死我活”的事态,相当于说,唯有1个样子的习性会生效,当top/bottom要素同时使用的时候,top生效,当left/bottom同时选用的时候,left生效。请看上边包车型客车那一个例子:

<div class=”box” style=”position: relative; top: 10px;bottom:
500px”></div>

1
<div class="box" style="position: relative; top: 10px;bottom: 500px"></div>

就算如此还要设置了top/bottom周旋属性,可是生效的却是top,如下图所示:

澳门葡京 10

从而,上边有些代码没有需求:

.demo{ position: relative; top: 10px; right: 10px;/*无效*/ bottom:
10px;/*无效*/ left: 10px }

1
2
3
4
5
6
7
.demo{
    position: relative;
    top: 10px;
    right: 10px;/*无效*/
    bottom: 10px;/*无效*/
    left: 10px
}

(1)float:left/right;

      相对定位成分的百分比margin
        img{margin:10%; position:absolute;}
      相对元素的百分比margin是周旋与第一个定点元素的祖辈成分具有(relative/absolute/fixed)的宽窄总结的。普通成分的是相对与父成分的来总结的。
        <div style=”width:1024px;height:200px;
position:relative;”>
          <div style=”width:600px; height:200px”>
           <img style=”margin:10%;position:absolute;”
/>

4.相对定点relative的使用原则-最小化

即使如此relative定位很好用,并且利用的频率很高,不过依据张鑫旭大神总括的布局实践标准,最好基于以下条件为好:

  1. 尽量防止使用relative,固然要稳定有个别因素,看能或不能够使用”无依靠的断然定位”完结;
  2. 一旦应用境况受限,一定要选择relative,则必须使relative最小化。

例如,我们想在某些模块的右上角永恒贰个图标,就算让您去布局完成的话,你该怎么布局呢?十有八九会如下边包车型客车主意贯彻:

<div style=”position: relative”> <img src=”icon.png”
style=”position: absolute;top:0;right:0″> <p>内容1</p>
<p>内容2</p> <p>内容3</p> … </div>

1
2
3
4
5
6
7
<div style="position: relative">
    <img src="icon.png" style="position: absolute;top:0;right:0">
    <p>内容1</p>
    <p>内容2</p>
    <p>内容3</p>
    …
</div>

但是,我们得以应用”relative的最小化使用规范”的方法完毕,其代码如上面包车型大巴法子贯彻:

<div> <div style=”position: relative”><img src=”icon.png”
style=”position: absolute;top:0;right:0″> </div>
<p>内容1</p> <p>内容2</p>
<p>内容3</p> … </div>

1
2
3
4
5
6
7
<div>
    <div style="position: relative"><img src="icon.png" style="position: absolute;top:0;right:0"> </div>
    <p>内容1</p>
    <p>内容2</p>
    <p>内容3</p>
    …
</div>

那正是说,基于”relative的最小化使用口径”的房依然促成有如何好处吗?原因及便宜如下:

relative定位成分的层叠水平增加了(敬请期待后续的小说),假若其子成分更加多,则影响的限制越广,从品类和可维护性的角度来看,假如中期不需求那么些小图标了,我们能够大胆地干调relative单元的要素即可,别的的成分则不供给任何的修改,然后放心的去陪妹子了。不过,假如relative在最外层的器皿上,你敢删除吗?你敢放心的去陪妹子吧?难道你固然影响别的的要素呢?所以您应当只会去除小图标,而不会删除的relative属性的。然后您的类别代码越来越臃肿,很多无用代码,看起来卓绝不好。这么一解析,你可知道”relative最小化使用口径“的便宜了啊~

左浮动;脱离普通文书档案流向左浮动(即向左对齐);float属性必须利用在块级成分上,相当于说浮动并不应用于行内成分,或然说当应用了float,那么那些因素将被钦赐为块级成分。

          </div>
        </div>
      利用特色
        宽高2:1自适应矩形
          .box{background-color:olive; overflow:hidden;}
          .box > div{margin:50%}
        那里还涉及一个只是点便是margin重叠。那里安装overflow
也是因为幸免margin重叠

5.最后

relative定位相对与absolutefloat的知识点要少很多,也相比好领悟,相信大家早就搞精通了相对固化属性的职能。前边最新篇章都会第权且间更新在自作者的民众号前端Talkking>里面,欢迎关切。

如上正是本文的全部内容,多谢阅读,假设有表明不正确的地点,欢迎留言指正!

诚如页面排版时大的div块都会用到float:left/right;来展开排版,可是处于页面底端的脚本div块一般都会采用clear:both;来扫除浮动影响。

其三话 margin重叠日常天性
  1.block水平成分(不包蕴float和absolute成分)
  2.不考虑writing-mode(文字书写方向是从上到下的),只产生在笔直方向的(margin-top/margin-bottom)

6.参考

  • 张鑫旭《CSS世界》


    作者简介:
    中文名:石头
    英文名:micstone
    某电商平台前端程序员一名,偶尔也写写后端代码,工作经验二〇一五.7~至今

    1 赞 3 收藏
    评论

澳门葡京 11

例如:

  margin重叠3种情境
    1.相邻的汉子儿成分
      p{line-height:2em;margin:1em 0;background:#f0f3f9;}
        <p>第一行</p>
        <p>第二行</p>
      那里就会产生margin重叠了
    2.父级和率先个/最后2个子成分
      .father{background:#f0f3f9}
      <div class=”father”>
        <div class=”son”
style=”margin-top:80px;”>son</div>
      </div>
      给子第二个或最后二个子成分设置margin等同于给父成分设置同样的margin值,子成分相同margin,子成分和父成分一样的margin值
    3.空的block元素
      .father{background:#f0f3f9}
      <div class=”father”>
        <div class=”son”></div>
      </div>
      那里son的惊人唯有1em,不是2em
      空block元素margin重叠其余标准化
        1.成分并未border设置
        2.成分没有padding值
        3.内部没有inline成分
        4.没有height,或者min-height

页面已用div分好块:#container、#banner、#content、#links、#footer(#container中带有其余div块)如下图:

      margin-top重叠
        1.1父成分非块状格式化上下文成分
        1.2父成分没有border-top设置
        1.3父成分没有padding-top值
        1.4父成分和率先个子元素之间从未inline元素分隔

澳门葡京 12

      margin-bottom重叠
        1.1父成分非块状格式化上下文元素
        1.2父成分没有border-bottom设置
        1.3父成分没有padding-bottom值
        1.4父成分和终极叁个子成分之间从未inline元素分隔
        1.5父元素没有height,min-height,max-height限制
      干掉margin-top重叠
        .father{background:#f0f3f9}
        <div class=”father”>
          <div class=”son”
style=”margin-top:80px;”>son</div>
        </div>
      1.父成分非块状格式化上下文成分 .father:overflow:hidden;
      2.父成分没有border-top设置
        .father:border:4px solid #ccc;
      3.父成分没有padding-top值
      4.父成分和首个子成分之间没有inline成分分隔
        <div class=”father”> 
          <div class=”son”
style=”margin-top:80px;”>son</div>
        </div>
        干掉margin-bottom重叠
        后边八个和margin-top一样,
          <div class=”father”
style=”height:100px”> 
            <div class=”son”
style=”margin-top:80px;”>son</div>
          </div>

若要将页面排版如下,如何用CSS设置?

    margin重叠的盘算规则
      1.正正取大值
        .a{margin-bottom:50px;}
        .b{margin-top:20px;}
        <div class=”a”></div>
        <div class=”b”></div>

澳门葡京 13

          .father{margin-top:20px;}
          .son{margin-top:50px;}
      <div class=”father”>
        <div class=”son”></div>
      </div>

——>>元素定位如下:注意float的采用

      .a{margin-top:20px;margin-bottom:50px}
      <div class=”a”></div>

澳门葡京 14

      上边的结果都以margin:50px;
    2.正负值相加
      .a{margin-bottom:50px;}
      .b{margin-top:-20px;}
      <div class=”a”></div>
      <div class=”b”></div>

 

      .father{margin-top:-20px;}
      .son{margin-top:50px;}
      <div class=”father”>
        <div class=”son”></div>
      </div>

澳门葡京,(2)position:absolute/relative;

      .a{margin-top:-20px;margin-bottom:50px}
      <div class=”a”></div>
      上边包车型客车结果都以30px
  3.负负最负值
    .a{margin-bottom:-50px;}
    .b{margin-top:-20px;}
    <div class=”a”></div>
    <div class=”b”></div>

CSS定位的原理

    .father{margin-top:-20px;}
    .son{margin-top:-50px;}
    <div class=”father”>
      <div class=”son”></div>
    </div>

把浏览器窗口想象成1个坐标体系:

    .a{margin-top:-20px;margin-bottom:-50px}
    <div class=”a”></div>
    上边的结果都是-50px
    margin重叠的意义是?
    网页诞生之初…………只是排版文字布局用,没有今日这样复杂。
      1.连接段落或列表之类,假如没有margin重叠首尾项间距会和任何兄弟标签1:2涉嫌,排版不自然;
      2.web中别的地点嵌套或直接放入任何裸div都不会影响原本的布局
      3.不见的空人三个p元素,不要影响原本的开卷排版

CSS定位的原理是:你可以将别的盒子(box)放置在坐标种类的别的位置上。

    实践:
      善用margin重叠
        .list{margin-top:15px;}
      更好完成
        .list{
          margin-top:15px;
          margin-bottom:15px;
         }
      更享有健壮性,最终二个因素移除或地点交流,均不会破坏原来的布局。
第4话:理解CSS中的margin:auto
    margin:auto 的机制
    成分有时候,就算没有安装width或height,也会自行填写
      div{background:#f0f3f9}

运用CSS定位技术来放置成分是那个标准的。绝对于采用表格、透明图像或别的艺术而言,CSS定位要简明得多。

    借使设置width或height,自动填写性格就会被遮住
      div{width:500px;background:#f0f3f9;}
      此时的margin值是0px
    假如设置值width或height,自动填写个性就会被覆盖。

纯属定位

    原来应该填充的尺码被width/height强制变更,而margin:auto正是为了填充那些改变的尺码设置的;
      div{width:500px;marign-right:100px;margin-left:auto;}

一个行使相对定位的因素不获得任何空间。这表示:该因素在被固定后不会留下空位。

    假如一侧定值,一侧auto,auto为结余空间尺寸,假使两侧均是auto,则平均剩余空间

要对成分进行绝对定位,应将position属性的值设为absolute。接着,你能够因此质量left、right、top和bottom来设定将盒子放置在哪个地方。

    为啥图片img{width:200px;marign:0 auto}不居中
    因为图片是inline水平的,尽管没有width,也不会占有整个容器。
    设置img{display:block;width:200px;marign:0 auto;}
    因为那时图片是block水平的,即使没有width,也会占据整个容器不可能在一行显示。

举个相对定位的例证,借使我们要在文书档案的两个角落各放置2个盒子:

    为什么明明容器定高,成分定高margin:auto 0 无法垂直居中

#box1
{ position:absolute; top: 50px; left: 50px;}#box2 { position:absolute; top: 50px; right: 50px;}#box3
{ position:absolute; bottom: 50px; right: 50px;}#box4
{ position:absolute; bottom: 50px; left: 50px;}

    .father{height:200px;background:#f0f3f9;}
    .son{height:100px; width:500px;margin:auto;}
    水平居中了,垂直不居中。

周旋固定

    解释:假若.son没有设置height:100px;中度会活动200px高吧?——NO
所以margin谈不上自行填充,强制安装宽度中度, 所以是不会自动填写的。
    注意:水平方向上借使实大于父,计算结果为负值的时候也是不居中的。

要对元素实行相对稳定,应将position属性的值设为relative。相对定位与绝对固化的界别在于总括地方的办法。

    实现垂直方向margin居中
      更改流为垂直方向,完毕垂直方向的margin:auto
      writing-mode与垂直居中(css3)
      .father{height:200px; width:100%;
wiriting-mode:vertical-lr;}
      .son{height:100px;width:500px;margin:auto;}
    absolute与margin居中
      .father{height:200px;position:relative;}
      .son{position:absolute; top:0px right:0px
bottom:0px;left:0px}
      .son没有width/height,absolute元素自动填满了容器。

使用相对固化的成分,其任务是周旋于它在文书档案中的原始地点计算而来的。这表示,相对稳定是因而将成分从原先的职位向右、向左、向上或向下活动来恒定的。采取相对固定的要素会收获相应的半空中。

    当设置了width和可观
      .father{height:200px;position:relative;}
      .son{position:absolute; top:0px right:0px
bottom:0px;left:0px;width:500px;height:100px;}
    原来拉伸铺满现在缩回来了。
      被拉伸的长空设置margin:auto;平均分配就会完毕程度垂直居中了
      .father{height:200px;position:relative;}
      .son{position:absolute; top:0px right:0px
bottom:0px;left:0px;width:500px;height:100px;margin:auto;}

举个相对固定的事例,我们能够相对于三张图纸在页面上的固有地方来对它们实行相对固化。注意这么些图片将在文书档案中分别的本来面目地点处留下空位。

    IE8+以上协理!
第伍话:css margin负值定位
    1.margin负值下的两端对齐(margin改变成分尺寸)
    例子
      .box{
        width:1200px; margin:auto;background:orange;
        .ul{overflow:hidden;}
        .li{
          width:380px;height:300px;
          margin-right:20px;
          background:green;
          float:left;
        }
      }
    实现的列表最终一个留有间隙。
      而通过margin负值来改变容器的大小,让容器变宽。能周密化解那一个题材
    .box{
      width:1200px; margin:auto;background:orange;
    .ul{overflow:hidden;margin-right:-20px;}
    .li{
      width:386.66px;height:300px;
      margin-right:20px;
      background:green;
      float:left;
     }
    }
    2.margin负值下的等高布局 margin改变成分占据空间
    margin与上下留白
    <div style=”height:200px;”>
      <img height=”300px” style=”margin:50px 0;” />
    </div>
    .box{overflow:hidden;resize:vertical;}
    .child-orange,
    .child-green{margin-bottom:-600px;padding-bottom:600px;}
    .child-orange{float:left;background:orange;}
    .child-green{float:left;background:green;}

#dog1 {
position:relative; left: 350px; bottom: 150px;}#dog2 {
position:relative; left: 150px; bottom: 500px;}#dog3 {
position:relative; left: 50px; bottom: 700px;}css里的position的值relative、absolute的实际意义

    通过设置极大的margin-bottom负值,和不小的padding-bottom填充缺点和失误的空中,完毕等高布局。原理:内容块状成分能够在padding中呈现.只要没有安装    

position属性其实是指本体对上面的固化。默许的属性值都以static,静态。

    background:clip,box-sizing:content
    3.margin负值下的两栏自适应布局,元素占据空间跟随margin移动

最要紧的是relative(相对)以及absolute(相对)。

    <div style=”float:left;width:100%”>
      <p style=”margin-right:170px;”>图片右浮动</p>
    </div>
    <img width=”150px;”
style=”float:left;margin-left:-150px;”/>

 

第陆话 css marign无效境况解析
  1.inline水准成分的垂直margin无效
  1个前提 1.非轮换到分,例如不是img成分;2.常规书写格局
  例
    <span style=”margin:0px”>marign:0px</span>
    给span设置margin233px;
    水平上有效性的,垂直方向是无用的。
    2.margin重叠
    3.display:table-cell
      display:table-cell/display:tab-row等声明margin无效!

如:

      例外的交替成分img,button

<div
id=”A”>

    4.position与margin
      相对定位元素非定点方向的margin值“无效”
      相对定位的margin值一贯有效,不只是像一般成分那样。
    5.鞭长莫及的margin失效
      bfc内容块中借使前面有变动成分那下贰个成分的margin是相对与外层的div总结的。
    6.内联导致的margin失效
      div[style=”height:200px;background-color:#f0f3f9;”]>img[style=”marign-top:30;”]
      当margin-top丰硕大的时候失效了。
      解释:内联成分要兑现和基线对齐,在图纸后加x能够见见,无论margin-top有多少距离,他都不会脱离容器外面。

    
<div id=”B”>

第七话margin-start和margin-end
    margin-start
    img{
      margin-left:100px;
      -webkit-margin-start:100px;
      -moz-margin-start:100px;
      margin-sart:100px;
    }
    1.好端端的流向,margin-sart等同于margin-left,两者重叠不添加;
    2.如果水平没有从右往左,margin-start等同与margin-right;direction:ltr(rtl)
    3.在笔直流电下(writring-mode:vertical-lr),margin-sart等同于margin-top
    webkit下的其余margin相关属性
      margin-before
        img{-webkit-margin-before:100px;}
私下认可流向的情形下,等同于marign-top
      margin-after
        img{-webkit-marign-after:100px;}
私下认可流向的场所下,等同于margin-bottom;
      margin-collapse 外边框重叠
        -webkit-margin-collapse: collapse|discard|separate
         控制margin重叠
         collapse默认-重叠
         discard 取消
         separate 分隔 没有重叠

     
</div>

</div>

 

当A的position为relative时,B的position为absolute才有效。那时候left:0、top:0就不再针对窗口文书档案,而是本着id为A的这几个div了。

position:absolute:
相对定位,是参照浏览器的左上角,合作TOP、福特ExplorerIGHT、BOTTOM、LEFT(下边简称TRBL)实行固定,在并未设定TRBL,暗中同意根据父级的坐标原始点为原始点。假如设定TRBL并且父级没有设定position属性,那么当前的absolute则以浏览器左上角为原始点进行固化,地方将由TRBL决定。

 

position:relative:
绝对固定,是参考父级的原始点为原始点,无父级则以BODY的原始点为原始点,协作TRBL实行定位,当父级内有padding等CSS属性时,当前级的原始点则参照父级内容区的原始点举办固定。

在意:相对在无父级时以BODY为原始点,而相对是以浏览器最左上角为原始点.

下边实例证实方面这句话:

<style>

#wrap{

width:500px;

background-color: red;

height:auto;

}

#column1{

position:absolute;

top:0px;

left:0px;

width:300px;

background-color: green;

}

#column2{

position:relative;

top:0px;

left:0px;

width:470px;

background-color: #FFFF66;

}

</style>

<body
style=”border:4px blue dotted”> /*那里本身用框框出来,好辨认*/

<div
id=”wrap”> 

<div
id=”column1″>这里是率先列</div>

   <div
id=”column2″>那里是第①列</div>

</div>

</body>

落到实处际效果益:

澳门葡京 15

3,

z-index属性:

(1)设置成分的堆叠顺序,拥有更高堆叠顺序的要素总会处于堆叠顺序较低的要素的日前,即,z-index的值越小则所处堆叠地方越低

(2)z-index可有负值

(3)z-index仅能在稳定成分上有效性(例如position:absolute;)

例子:

澳门葡京 16

 

澳门葡京 17

 

来得效果:

澳门葡京 18

 

——那种重叠,假使不设置z-index属性会是哪些效益?

展现效果:

澳门葡京 19

“青出于蓝”;所以要是想改变那种重叠,就要动用z-index属性)

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website