• css-absolute relative float 之 absolute


    一 基础知识点

      css position 属性

    描述
    absolute

    生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

    元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

    fixed

    生成绝对定位的元素,相对于浏览器窗口进行定位。

    元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

    relative

    生成相对定位的元素,相对于其正常位置进行定位。

    因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

    static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
    inherit 规定应该从父元素继承 position 属性的值。

    float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

    如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。

    元素是文档结构的基础,在css里面,每个元素生成了包含内容的框(box),大家都叫“盒子”。但是不同的元素显示方式是不同的,有占据一整行的,有水平一个挨着一个的。比如:div 与span的方式不一样。

    什么是替换元素与非替换元素

    替换元素:

    替换元素是浏览器根据其标签的元素与属性来判断显示具体的内容。

    比如:<input /> type="text" 的是,这是一个文本输入框,换一个其他的时候,浏览器显示就不一样

    (X)HTML中的<img>、<input>、<textarea>、<select>、<object>都是替换元素,这些元素都没有实际的内容。

    非替换元素:

    (X)HTML 的大多数元素是不可替换元素,他们将内容直接告诉浏览器,将其显示出来。

    比如<p>wanmei.com</p>

    浏览器将把这段内容直接显示出来。

    除了这两字,还有两种非常属性的元素,显示元素,他分为两种情况,一种是‘块及元素’ ‘block’,还有一种是“行内元素”inline,大家也叫“内联元素”。

    块及元素

    他最明显的特征就是独自占领一行,自动充满父级元素的内容区域,绝不会让别人“侵略”(当然可以通过其他方式去改变他)。

    常见的有:div,p..等等。

    通过CSS设定了浮动(float属性,可向左浮动或向右浮动)以及设定显示(display)属性为“block”或“list-item”的元素都是块级元素。这个地方浮动是一个比较特殊的情况,可以详查浮动这个知识

    行内元素:

    上面说块及元素独自占领一行,行内元素就没这么霸道了,他可以左右都允许有元素,最常见的就是<a></a>

    通过display:'inline'设置以后都会变成行内元素。

    二  重要知识点总结*
     
      (1)absolute

    破坏性:元素设置了absolute之后,会使其父元素的高度(height)塌陷,无论父元素是什么position,float 也有同样的破坏性.

        这种塌陷的原因是:设置absolute属性的元素,其脱离了文档流,即脱离了父元素,所以父元素没有了该元素,所以高度会塌陷,如果去掉父元素的padding:10px,效果更明显,一点高度就都没有了。

    包裹性:在子元素不脱离文档流的情况下,给父元素加上absolute,会严丝合缝的完全包裹子元素。

        absolute的包裹性是对容器的absolute化。容器设置absolute后,容器变为了 inline-block,容器本身没有设置宽度和高度的话,那么容器的宽高就等于内容的宽高,表现结果就是容器把内容包裹起来。

    限制:用clear限制float,用relative限制absolute,relative和absolute是分离的,对立的. 独立的absolute可以摆脱overflow的限制,无论是滚动还是隐藏。

         绝对定位是根据其【包含块】来定位,因为其容器并未设置position为relative/absolute/fixed中的任何一个,自身就不形成 【包含块】,所以子元素的定位就不是按照其直接容器定位了,所以哪怕滑动位置也不会变。

    无依赖:当absolute不受relative的限制,并且不适用top,left,right,bottom,和auto作为值。

        1 脱离文档流:绝对定位会把这个元素首先从文档流中拉出来,然后,这个被拉出的元素会根据第一个定义了定位方式的(不定义默认是static)的非static方式的父元素,如果不满足,则相对于body元素生成一个新的块。

        2 去浮动:使用absolute时,float会失去作用

        3 位置跟随:元素是block那么absolute之后依然是block排列,inline时absolute后依然inline排列.  (在谷歌浏览器下,绝对定位之后,改变为display:block属性之后不会做任何渲染)

              IE7下用position:absolute;时,元素会成为inline-block,在外层套div解决这个bug

        4 精确定位:margin,支持负值定位,兼容ie6

        5 超越overflow:绝对定位absolute并不是相对于其父元素定位的,而是相对于其【包含块】定位的,如果给其父元素position:relative另其形成【包含块】,内部的关闭按钮就也会滚动了

    实例:

      

      1 图片图标覆盖,如左上角的“推荐”,“VIP”,“HOT”图标,有时候空格会被满宽的元素挤下来到新一行,从而影响之后的absolute元素。

      2 <ul>在<input>前,设置<ul>定位absolute定位,<input>坍缩到<ul>的位置。再用margring定位。

          如果父级是absolute或relative,ul 用fixed可超出边界。

      3 居中用text-align:center控制空格,空格后的img 用absolute定位。

       使course-fixed表现得像内联元素,但是text-align:right并不能对它起作用,而是对那个空格起作用,将空格定位在最右边。

       course-fixed成为内联元素后,可以与空格在同一行,但是由于空格已经在最右边了,所以如果course-fixed不加absolute的话,还是会被挤到下一行去

      4.处理文字前的星号 将星号绝对定位后其不占据任何空间,方便后面的文字左对齐

      5 处理文字溢出 利用absolute绝对定位使span不占据任何空间,从而使其不换行(注<span>必须紧跟前一个标签,不能有空格)

      6 图片与文字垂直对齐  对图标设置绝对定位,并设置margin为负值(为宽度值)

     

     

    脱离文档流:

     

    z-index =1 对多个绝对定位有什么作用?

    可以设置各个div的层级关系,如果两个div位置重合的话,z-index大的在上面,z-index小的在下面,z-index大的会遮盖z-index小的

     

    定位(top,left,right,bottom):absolute克星是position:relative/absolute/fixed/sticky

        相互替代性:绝对定位方向相反时,不是瞬间移动,而是拉伸,和设置width和height一样

        相互支持:1 容器无需设置width/height,内部元素亦可拉伸。
              2 容器拉伸,内部元素可用百分比的width/height

         left,right和width相互合作性:

            1 高度设置优先级高于方向定位

            2 当尺寸限制、拉伸以及margin:auto同时出现的时候,就会有绝对定位元素的绝对绝对居中效果;

              如下代码可以实现上下左右居中position: absolute;margin:auto;left: 0; top: 0; right: 0;bottom:0;50%;height:50%;备注:此方法适合IE8+

    absolute与页面整体布局(适合移动web布局策略):

    1、升降机的子div(假设类名为page)满屏走起:.page{position:absolute;left:0;top:0;right:0;bottom:0;background-color:#ccc;}
    绝对定位受限于父级,因此,page要愉快的拉伸,需要:htmlbody{height:100%;}
    2、各模块-头尾、侧边栏(pc端)各居其位
    header,footer{position:absolute;left:0;right:0;}
    header{height:48px;top:0;}
    footer{height:52px;bottom:0;}
    aside{250px;position:absolute;left:0;top:0;bottom:0;}
    3、内容区域想象成body
    .content{position:absolute;top:48px;bottom:52px;left:250px;overflow:auto;}
    此时的头部尾部以及侧边栏都是fixed效果,不跟随滚动。避免了移动端position:fixed实现的诸多问题。
    4、全屏覆盖与page平级
    .overlay{
    position:absolute;
    top:0;right:0;bottom:0;left:0;
    background-color:rgba(0,0,0,.5);
    z-index:9;
    }

  • 相关阅读:
    二维凸包
    luogu_P1287 盒子与球
    luogu_P1993 小K的农场
    luogu_P1712 [NOI2016]区间
    luogu_P2444 [POI2000]病毒
    luogu_P2154 [SDOI2009]虔诚的墓主人
    20191005-T3-U91353 放射性
    编译原理 笔记2 词法分析
    DFA到等价正则表达式的转化
    软件分析笔记10 Soundiness
  • 原文地址:https://www.cnblogs.com/poorpeople/p/6519067.html
Copyright © 2020-2023  润新知