zoukankan      html  css  js  c++  java
  • CSS定位概述

    CSS中有三种基本的定位机制:普通流,浮动和绝对定位。

     

    1.相对定位:relative

    如果对一个元素进行相对定位,它将出现在它所在的位置上,然后可以通过设置垂直或者水平位置,让这个元素“相对于”它原来的位置进行移动,这时元素依然占据原来的位置,但移动后会覆盖其他的元素,可以通过z-index属性来对其显示位置进行设置。

    #mybox{
    
      position:relative;
    
      left:20px;
    
      top:20px;
    
    }

    2.绝对定位:absolute

    相对定位实际上依然是存在文档流中,但绝对定位则会使元素脱离文档流,绝对定位的元素是相对于距离他最近得已定位的祖先元素确定的,如果元素没有已定位的祖先元素,那么它的位置是相对于初始包含块的。

    绝对定位同样可以通过z-index来对其设置叠放层次。

    3.固定定位

    顾名思义,固定在浏览器某一位置。

    4.浮动:float

    浮动的框可以左右移动,直至其碰到包含框或另一浮动框的边缘。浮动同样会使元素脱离文档流。

    上面说浮动会使元素脱离文档流,文档流中的元素会将其当做不存在,实际上并非如此。当下一个元素存在文本内容时,文本内容会受到浮动元素的影响,会移动留出空间,实际上。创建浮动框使文本围绕图像。即浮动元素旁边的行框被缩短。

    要想阻止浮动元素对行框的影响,可以对包含这些行框的元素应用clear属性,其值可以是left,right,both或None;它表示框的那些边不应该挨着浮动框,其实质是浏览器对这些元素添加了一个外边距,使其下降位置到浮动框下边。

    通过更多例子来说明浮动和清理,假设有一个图片和文本,你想让图片在左,文本在右,两者被包含在一个div中。

    .news{
    
      background-color:gray;
    
     border:1px solid black;
    
    }
    
    .news  img{
    
      float:left;
    
    }
    
    .news p{
    
     float:right;
    
     }
    
    <div>
    
      <img src=""/>
    
      <p>some thing</p>
    
    </div>

     由于浮动元素不占据空间,所以运行结果如下图:

    解决办法通常有三种:

    1.添加一个新的div空元素在news里面,并对其设置clear属性,浏览器会自动赋予外边距。如图:

    缺点:添加无意义的元素。

     2.也可以对父元素添加overflow:hidden属性,该属性会自动清理包含的任何浮动元素。

    缺点:可能会对原来的布局有所影响,例如增加滚动条或截断内容。

    3.使用js代码动态控制。

  • 相关阅读:
    156
    More Effective C++ 条款24 了解virtual function,multiple inheritance,virtual base classes,runtime type identification的成本
    More Effective C++ 条款23 考虑使用其他程序库
    More Effective C++ 条款22 考虑以操作符复合形式(op=)取代其独身形式(op)
    More Effective C++ 条款21 利用重载技术避免隐式类型转换
    More Effective C++ 条款20 协助完成"返回值优化(RVO)"
    More Effective C++ 条款19 了解临时对象的来源
    More Effective C++ 条款18 分期摊还预期的成本
    More Effective C++ 条款17 考虑使用lazy evaluation(缓式评估)
    More Effective C++ 条款16 谨记80-20法则
  • 原文地址:https://www.cnblogs.com/Darlietoothpaste/p/6429745.html
Copyright © 2011-2022 走看看