zoukankan      html  css  js  c++  java
  • [网页基础]DIV+CSS学习笔记(三)盒子的定位与浮动

    DIV+CSS学习笔记()

    一、盒子的浮动

    从这个例子开始学习:

    <style type="text/css">

    body{margin:50px;font-family:Arial; font-size:12px;   }

    .father{background-color:#ffff99;border:1px solid #111111;padding:5px;}

    .father div{padding:10px;margin:15px;border:1px dashed #111111;background-color:#90baff;}

    .father p{border:1px dashed #111111;background-color:#ff90ba;}     

    .son1{/* 这里设置son1的浮动方式*/}

    .son2{/*这里设置son2的浮动方式*/}

    .son3{/*这里设置son3的浮动方式*/}

    </style>

    <body>

        <div class="father">

                       <div class="son1">盒子-1</div>

                       <div class="son2">盒子-2</div>

                       <div class="son3">盒子-3</div>

                       <p>这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字. 这里是浮动框外围的文字.</p>

             </div>

    </body>

     

        一)设置第1个浮动的div

    .son1{float:left ;height:10px;}/*盒子1浮动,且高度稍微缩小以便看出盒子2的状态*/

    看看效果,如图:

     

    说明:盒子2占据原来盒子1的位置,此时盒子1的宽度不再伸展,而是能容下最小宽度。盒子2的左边在原来盒子1的位置,因为此时盒子1己经脱离标准流,标准流中的盒子2会顶到原来盒子1的位置,而文字会围绕着盒子1排列。

    二)设置第二个浮动的div

    .son2{float:left;height:8px;}

     

    说明:盒子3顶到原来盒子1的位置,但字符围绕着盒子1和盒子2排列。

    三)设置第3个浮动的div

    .son3{float:left;height:5px;}

     

    说明:盒子1-3都浮动了,就象不存在了,最后的文字盒子占据第一个位置,但量,文字会围绕浮动的盒子排列。

    四)改变浮动方向(将盒子3改为向右浮动)

    .son3{float:right;height:5px;}

     

    说明:盒子3向左浮动后,文字被挤在盒子2和3之间。

    挤小浏览器窗口时如图:

     

    再挤小浏览器窗口时如图:

     

    挤到不能再小时,如图:

     

    注意:并不一定都是盒子3被挤到下边,被挤到下边的盒子是越写在后边的盒子,越最先被挤到下边。

     

    五)全部都向左浮动时:

    当盒子1比较高时,缩小浏览器,谁会被挤到什么位置呢?挤到盒子1的下边还是盒子2的下边呢?这个很有趣:

    .son1{float:left ;height:30px;}

    .son2{float:left;height:8px;}

    .son3{float:left;height:5px;}

    <div class="father">

                       <div class="son1">盒子-1<br/>盒-1a</div>

                       <div class="son2">盒子-2</div>

                       <div class="son3">盒子-3</div>

                       <p>…… </p>

             </div>

     

    说明:盒子3被挤到下一行,并向左移动,到了这个拐角的地方就会被卡住,而停留在盒子2的下边。

    六)使用clear属性清除浮动的影响

    clear 属性可以设置为left,right,或者both;特别注意:对clear属性的设置要放到文字所在的盒子里,例如一个p段落的CSS设置中,而不要放到对浮动盒子的设置里面。经常有人误以为在对某个盒子设置了float属性后,要消除它对外面的文字的影响,就要在它的CSS样式中增加一条clear,其实是没有用的。

    .father p{border:1px dashed #111111;background-color:#ff90ba;clear:left;}

     

    说明:这是清除左边,因为左边比较高,没看出右边的影响,意思是如果右边很高,清除左边,右边也可能会盖住文字的。

    七)扩展盒子的高度

    如果将文字所在的段落删除,这里在父div里面只有3个浮动的盒子,它们都不在标准流中,这时观察浏览器的效果如图:

     

    父div缩成一条,是由padding和border构成的,也就是说一个div的范围是由它里面的标准流内容决定的,与里面的浮动内容无关,如果要使父div的范围包含这3个浮动盒子,有一个不算很理想的办法:

    .father .clear{margin:0;padding:0;border:0;clear:both;}

    <body>

        <div class="father">

                       <div class="son1">盒子-1<br/>盒子-1a</div>

                       <div class="son2">盒子-2</div>

                       <div class="son3">盒子-3</div>

                       <div class ="clear "></div>

             </div>

    </body>

     

    二、盒子的定位

    一)static静态定位

    默认的就是静态定位,表示块在原来应该在的位置上,即该值没有任何移动的效果。下边以这个静态例子作为试验讲解:

    CSS代码如下:
    <style type="text/css"> 
    body{
     margin:20px;
     font :Arial 12px;
    }
    #father{
     background-color:#a0c8ff;
     border:1px dashed #000000;
     padding:15px;
    }
     
    #block1{
     background-color:#fff0ac;
     border:1px dashed #000000;
     padding:10px;
    }
    </style>

    BODY代码如下:

    <body>
     <div id="father">
           <div id="block1">Box-1</div>
     </div>
    </body>

     

        二)相对定位position:relative;

        #block1{
     background-color:#fff0ac;
     border:1px dashed #000000;
     padding:10px;
     position:relative;      /* relative相对定位 */
     left:30px;
     top:30px;
    }

     

    说明:这里不是左边30,上边30像素,而是相对原来的位置(或应该在的位置),左边加30,上边加30像素的移动。还要记住:相对定位的盒子仍在标准流中,它对父块没有任何影响。

    详细的比较,可以多设置几个子块来进行实验,总之相对偏移后,其它的子块会“以为”它还在原来的位置。

    对于相对定位,就是以盒子本身在标准流中或者浮动时原本的位置作为偏移基准的。

    三)绝对定位position:absolute;

    以下边这个例子作为分析对象:

    body{
     margin:20px;
     font-family:Arial;
     font-size:12px;
    }
    #father{
     background-color:#a0c8ff;
     border:1px dashed #000000;
     padding:15px;
    }
    #father div{
     background-color:#fff0ac;
     border:1px dashed #000000;
     padding:10px;
     }
    #block2{
    }
    <body>
     <div id="father">
           <div >Box-1</div>
           <div id="block2">Box-2</div>
           <div >Box-3</div>
     </div>

     

    1、使用绝对定位测试

    #block2{
    position:absolute;
    top:0px;
    right:0px;}
     

     

     

     

    说明盒子3紧贴盒子1,仿佛盒子2不存在一样,盒子2脱离标准流。绝对定位是以浏览器窗口为基准来定位的。

    2、改一下代码,为父div增加一个相对定位:

     #father{

       background-color:#a0c8ff;

       border:1px dashed #000000;

       padding:15px;

       position:relative;         /*相对定位*/

    }

     

    这时,父div是相对定位,盒子2就以父窗口为基准定位了。

    四)固定定位fixed

    固定定位跟绝对定位相似,区别在于定位的基准不是祖先元素,而是浏览器窗口。

     

    三、z-index空间位置

    想象页面为x-y轴,垂直于面面的方向为z轴,z-index整数值的大小决定大的显示在前。

     

    四、盒子的display属性

    这个属性很重要,将在很多地方发挥巨大的作用:

    例:

    <body>
     <div >Box-1</div>
     <div >Box-2</div>
     <div >Box-3</div>
     <span >Box-4</span>
     <span >Box-5</span>
     <span >Box-6</span>
     <div >Box-7</div>
     <span >Box-8</span>
    </body>
     

    
    
    原图如上,没有什么特殊效果,块级元素和行内元素,就应该是上边的效果,下边来做一个实验:
    <body>
     <div style="display:inline">Box-1</div>
     <div style="display:inline">Box-2</div>
     <div style="display:inline">Box-3</div>
     <span style="display:block">Box-4</span>
     <span style="display:block">Box-5</span>
     <span style="display:block">Box-6</span>
     <div style="display:none">Box-7</div>
     <span style="display:none">Box-8</span>
    </body>
    显示的效果如下:

     

    分析一下:
    原来应该是块级元素的div变成了行内元素,原来是行内元素的span变成了块级元素,设置为none的两个盒子消失了。
    可见:display属性可以将某个标记本来的元素类型改变或隐藏,呵呵,这个可以增加很大很大的灵活性。
     
  • 相关阅读:
    团队项目----数据库SQL语句学习总结与实践
    团队项目----德州扑克数据库设计之改进版
    期末项目《员工考勤管理系统》
    Applet
    Json
    study of javaserver faces lifecycle
    Session
    xml的用途,定义,原理,以及前景
    互联网应用于企业级应用的区别
    JavaEE体系架构
  • 原文地址:https://www.cnblogs.com/dooroo/p/2744160.html
Copyright © 2011-2022 走看看