定位

作者: xiaoguo16 | 来源:发表于2017-04-24 10:44 被阅读0次

    3种定位机制:普通流、浮动、绝对定位。

    普通流:元素位置由其在Html文档中的位置决定;

    浮动:float

    绝对定位:absolute

    display:

    none | block | inline | inline-block;

    block:

    1.元素独占一行,block元素的宽度自动填满其父元素宽度;

    2.元素可以设置宽高属性,虽然设置了宽,但还是独占一行;

    3.可以设置margin和padding属性。

    inline:

    1.元素不会独占一行,其大小与元素内的内容有关;

    2.不可设置宽高属性;

    3.margin和padding属性在水平方向可以产生效果,竖直方向不能;

    4.水平间距可以调节margin padding border实现,垂直间距可以调节line-height实现。

    inline-block:

    1.将对象呈现为inline对象,但对象的内容作为block对象呈现。使其既可以在行内流动,又可以定义尺寸。

    典型案例:标题栏,其<li>可以定义为inline-block,使其既可以成为一行,又可以在块内点击,而非在元素上点击。

    不同链接之间的间隙是因为<li>与下一个<li>之间有空格,所以会有一个空格的间隙,消除这个li之间的空格即可。

    none:不占用文档空间。

    position:

    relative | absolute | static | fixed;

    相对定位:相对与起点进行移动,定位后仍然占据原来的空间。相对定位可以看作普通流的一部分,因为它是相对于在普通流中的位置进行定位的。

    绝对定位:相对与已定位的最近的父元素(position为除了static的其他值)进行移动。不占据空间,所以其他元素的定位就像它不存在一样。因为绝对定位的框与文档流无关,所以可以使用z-index设置其叠放次序。

    固定定位:可以看作一种特殊的绝对定位,其包含块为视口。

    浮动

    float: left | right | none | inherit;

    浮动属性可以使元素框脱离文档流,并左右浮动,直到外边缘遇到包含框或者另一个浮动框的外边缘为止。

    其他元素的定位就像其不存在一样。

    为什么要清理浮动:

    当容器的height为auto时,如果容器内有浮动元素,那么容器的高度不能自适应内容的高度,使得内容溢出,影响布局。

    如何清理?

    a. 给父元素设置足够的高度(此方法只适合固定高度的布局,有局限性)

    b. 在浮动元素后加空div,设置clear属性为left,right,both,会使其添加足够的外边距。clear:left | right | both |none |inherit;(此方法会添加多余元素)

    c.给父级div定义伪元素:after,和方法b原理相同。

        content:添加一个内容;

        clear:清除浮动

        display:清除浮动时需要留出足够的外边距所以为block

        height:设为0,不让其对布局产生影响

        visibility:让其隐藏

    d.给父级定义overflow属性,设置为hidden或者atuo。(弊端:有些情况会有滚动条或者对内容进行截断,不能和position属性配合使用)

    内容溢出属性:

    overflow-x: visible | hidden | scroll| auto | no-display | no-content;

    overflow-y: visible | hidden | scroll| auto | no-display | no-content;

    visible(默认值)

    hidden(隐藏内容,无滚动条)

    scroll(有无溢出都添加滚动条)

    auto(有溢出时添加滚动条)

    no-display(溢出时不显示元素)

    no-content(溢出时不显示内容)

    相关文章

      网友评论

          本文标题:定位

          本文链接:https://www.haomeiwen.com/subject/igqdzttx.html