zoukankan      html  css  js  c++  java
  • 摆放与布局——普通流、浮动定位、绝对定位、表格

    一·流

    流实际上就是浏览器从HTML文件最上面开始,从上到下沿着元素逐个显示所遇到的各个元素。块元素与块元素之间会有一个换行,第一个是块元素,然后是一个换行,然后是第二个元素,以此显示。内联元素会在水平方向上相互挨着,总体上从左上方流向右下方。

    p.s.关于盒模型

    浏览器并排放置两个内联元素时,两个元素有不同的外边距,则两个元素之间的外边距是两个元素的和。而当上下放置两个块元素时,其外边距的情况不同于前者,两个元素之间的边距是最大一个元素外边距的值,共同的外边距被折叠了,因此折叠的外边距高度就是最大的外边距高度。

    二、float元素——如何浮动元素

    1、指定一个id(如段落<p id="amszing">)

    2、指定一个宽度width(width指定的是文本宽度,不包括内边距)

    #amazing{200px;}

    3、浮动

    #amazing{width:200px;

                      float:right;}

    此时元素位于页面右方,浮动流不再是正常流的一部分,因此这个浮动段落会在正常流中删除,此前这个浮动段落的后面的元素会占据其原本的位置。不过内联元素定位时会考虑到浮动元素的边界,因此会围绕着浮动元素。

    三、流体、冻结、凝胶设计

    1、流体布局:调整浏览器宽度,布局会根据浏览器宽度进行调整,填满整个浏览器。(浏览器默认)

    2、冻结布局:这种布局会锁定元素,调整浏览器窗口大小,页面仍保持其设计布局。

    如<body>

    <div id="allcontent">

    <p>...</p>

    </div>

    </body>

    可为“allcontent”设计样式,allcontent包含页面中的所用内容。

    #allcontent{800px; /*将其中包含的所有内容限制在800像素之内,div的宽度总是800px,即使浏览器大小调整了,这个宽度也不变,则将div以及其中所包含的内容冻结在页面上。*/

    padding-top:5px;

    padding-bottom:5px;

    background-color:#675c47;

    }

    3、凝胶布局

    凝胶布局会锁定页面中内容区的宽度,会将它在浏览器居中。

    #allcontent{800px;

    padding-top:5px;

    padding-bottom:5px;

    background-color:#675c47;

    margin-left:auto;

    margin-right:auto;

    }

    四、绝对 定位

           一个元素绝对定位时,浏览器首先要先将其从流中完全删除,然后指定一个位置放置元素。指定一个top和right属性(或left和bottom)的位置。

    如:定位在距页面右边200像素,距上面100像素的地方,内容宽度设置为280px.

    #sidebar{position:absilute;

          top:100px;

          right:200px;

         280px;

    }

    由于元素是绝对定位的,也会从流中删除,流中的元素会忽略绝对定位元素的存在,因此不像浮动定位会围绕定位元素。他们甚至不知道页面上有绝对定位的元素。

    p.s.position属性有:static、absolute、fixed、relative

    static(静态),如果是静态定位,元素会放在正常的文档流中,而不是由你来指定位置,由浏览器 决定这些 静态定位元素放在哪里。你可以使用float属性将一个元素从流中删除,可以让其向右向左浮动,但最终仍然是浏览器决定将它放在哪里,没有指定一个绝对的位置信息,由浏览器默认将其放置。与其相对应的absolute则可以设定一个位置来放置元素,使用绝对定位时,将由你来告诉浏览器放置元素的具体位置。fix(固定定位)是将元素放在相对于浏览器窗口的一个位置上(而不是相对于页面),所以固定元素永远也不会移动。相对(relative)定位会让元素正常地流入页面,不过在页面上显示之前要进行偏移。相对定位常用于更高级的定位和特殊效果。

    五、表格定位

    1、先创建一个<div>表示整个表格,行和列要嵌套在这个<div>中。

    2、对表格中的每一行要创建一个<div>,其中包含行内容。

    3、对于每一列,只需要一个块元素作为该列内容。如有两个块元素,只有一行的情况。

     div#tableContainer{
     display:table;
      border-spacing:10px;/*为表格中的单元格增加10px的边框间距*/
    }
    div#tableRow(行){
     display:table-row;}

    #main {
     display:table-cell;
      background:       #efe5d0 url(images/background.gif) top left;
      font-size:        105%;
      padding:          15px;
     vertical-align:top;/*使表格两个单元格中所有内容相对于单元格上边对齐,可不用再为其增加margin了*/
    }

    #sidebar {display:table-cell;
      background:       #efe5d0 url(images/background.gif) bottom right;
      font-size:        105%;
      padding:          15px;
    vertical-align:top;
    }

  • 相关阅读:
    Spring Boot 2.3.0 正式发布!
    当互联网码农遇见国企老同学
    GitHub发布重大更新,关系到所有程序员!
    开发者被要求向破解者道歉,竟揪出“阿里云假员工”,网友:这人有前科
    等了整整12年!Linux QQ 终于更新了!
    我的电脑不联网,很安全,黑客:你还有风扇呢
    grpc的简单用例 (golang实现)
    grpc的简单用例 (C++实现)
    redis键过期 (redis 2.6及以上)
    安装folly库以及folly的ConcurrentHashMap的简单使用
  • 原文地址:https://www.cnblogs.com/myblogs-1118/p/8082119.html
Copyright © 2011-2022 走看看