css10---转载---定位,浮动

CSS 相对定位

相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。

如果将 top 设置为 20px,那么框将在原位置顶部下面 20 像素的地方。如果 left 设置为 30 像素,那么会在元素左边创建 30 像素的空间,也就是将元素向右移动。

#box_relative {
  position: relative;
  left: 30px;
  top: 20px;
}

如下图所示:

注意,在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。
那么我们就会想了怎么让框三把框二覆盖呢,很自然的想到把框3的z-index设为一个优先级高的值如100,但是这样并不能得到我们想要的结果,必须把框2的z-index设为优先级低的如-1,
我猜想是因为框2已经脱离了文档流,所以只设置框3的z-index对框2起不到作用,所以只能对框2操作了。大家也可以去试试代码如下在ie7下通过:
<html>
<head runat="server">
    <title>Untitled Page</title>
<style type="text/css">
        span
        {
           
            width: 30px;
            height: 30px;
        }
        #box_relative
        {
            position: relative;
            left: 10px;
            top: 10px; background-color: gray;z-index:-1;
        }
    </style>
</head>
<body>
    <span></span><span id="box_relative"></span><span style="z-index:30"></span>
</body>
</html>

CSS 绝对定位

绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

普通流中其它元素的布局就像绝对定位的元素不存在一样:

#box_relative {
  position: absolute;
  left: 30px;
  top: 20px;
}

如下图所示:

绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块

对于定位的主要问题是要记住每种定位的意义。所以,现在让我们复习一下学过的知识吧:相对定位是“相对于”元素在文档中的初始位置,而绝对定位是“相对于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么“相对于”最初的包含块。

注释:根据用户代理的不同,最初的包含块可能是画布或 HTML 元素。

提示:因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其它元素。可以通过设置 z-index 属性来控制这些框的堆放次序。

同样的道路如果想让框1,3在2之上的话也需要在框2上设置z-index,而且如果只在框1,3上设置的话无效。大家也可以去试试代码如下在ie7下通过:
<html>
<head runat="server">
    <title>Untitled Page</title>
<style type="text/css">
        span
        {
           
            width: 30px;
            height: 30px;
        }
        #box_relative
        {
            position: absolute;
            left: 20px;
            top: 20px; background-color: gray;
        }
    </style>
</head>
<body>
    <span style="z-index:30"></span><span id="box_relative"></span><span style="z-index:30"></span>
</body>
</html>

CSS 浮动

请看下图,当把框 1 向右浮动时,它脱离文档流并且向右移动,直到它的右边缘碰到包含框的右边缘:

再请看下图,当框 1 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘。因为它不再处于文档流中,所以它不占据空间,实际上覆盖住了框 2,使框 2 从视图中消失。

如果把所有三个框都向左移动,那么框 1 向左浮动直到碰到包含框,另外两个框向左浮动直到碰到前一个浮动框。

如下图所示,如果包含框太窄,无法容纳水平排列的三个浮动元素,那么其它浮动块向下移动,直到有足够的空间。如果浮动元素的高度不同,那么当它们向下移动时可能被其它浮动元素“卡住”:

CSS float 属性

在 CSS 中,我们通过 float 属性实现元素的浮动。

如需更多有关 float 属性的知识,请访问参考手册:CSS float 属性。

行框和清理

浮动框旁边的行框被缩短,从而给浮动框留出空间,行框围绕浮动框。

因此,创建浮动框可以使文本围绕图像:

要想阻止行框围绕浮动框,需要对该框应用 clear 属性。clear 属性的值可以是 left、right、both 或 none,它表示框的哪些边不应该挨着浮动框。

为了实现这种效果,在被清理的元素的上外边距上添加足够的空间,使元素的顶边缘垂直下降到浮动框下面:

这是一个有用的工具,它让周围的元素为浮动元素留出空间。

让我们更详细地看看浮动和清理。假设希望让一个图片浮动到文本块的左边,并且希望这幅图片和文本包含在另一个具有背景颜色和边框的元素中。您可能编写下面的代码:

.news {
  background-color: gray;
  border: solid 1px black;
  }

.news img {
  float: left;
  }

.news p {
  float: right;
  }

<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
</div>

这种情况下,出现了一个问题。因为浮动元素脱离了文档流,所以包围图片和文本的 div 不占据空间。

如何让包围元素在视觉上包围浮动元素呢?需要在这个元素中的某个地方应用 clear:

不幸的是出现了一个新的问题,由于没有现有的元素可以应用清理,所以我们只能添加一个空元素并且清理它。

.news {
  background-color: gray;
  border: solid 1px black;
  }

.news img {
  float: left;
  }

.news p {
  float: right;
  }

.clear {
  clear: both;
  }

<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
<div class="clear"></div>
</div>

这样可以实现我们希望的效果,但是需要添加多余的代码。常常有元素可以应用 clear,但是有时候不得不为了进行布局而添加无意义的标记。

不过我们还有另一种办法,那就是对容器 div 进行浮动:

.news {
  background-color: gray;
  border: solid 1px black;
  float: left;
  }

.news img {
  float: left;
  }

.news p {
  float: right;
  }

<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
</div>

这样会得到我们希望的效果。不幸的是,下一个元素会受到这个浮动元素的影响。为了解决这个问题,有些人选择对布局中的所有东西进行浮动,然后使用适当的有意义的元素(常常是站点的页脚)对这些浮动进行清理。这有助于减少或消除不必要的标记。

事实上,W3School 站点上的所有页面都采用了这种技术,如果您打开我们使用 CSS 文件,您会看到我们对页脚的 div 进行了清理,而页脚上面的三个 div 都向左浮动。

时间: 2024-08-08 20:19:09

css10---转载---定位,浮动的相关文章

定位浮动拾遗

---恢复内容开始--- 浮动元素处在正常文档流上的浮动流上,浮动元素的渲染方式很特殊,首先按照正常文档流进行布局,然后将该元素从 文档流中取出并对该元素尽量向左或者向右移动,周围的内容将会环绕该元素.所以,浮动会对兄弟元素的布局造成 影响,而且其效率较低,代价较高. 绝对定位则是完全脱离文档流,直接相对于包含块进行定位,对兄弟元素的布局没有影响. 绝对定位是根据定位元素的包含外边距的框(外边框)到包含块内边界(边框内部)的偏移进行定位. display,float,position之间的爱恨纠

css定位浮动总结

定位:定位在中间,放大缩小时也不会跑偏. position:absolute; top: 50%; left: 50%; margin: -270px 0 0 -455px; 解释:定位后,设百分比的位置,再设置外边距. 浮动:span等行内元素不能设置宽高,但在浮动后可以设置宽高. 1 <style> 2 span { 3 width: 200px; 4 height: 200px; 5 background: red; 6 float: left; 7 } 8 </style>

CSS 显示 定位 浮动 对齐元素

CSS 显示 img.normal { height:auto; } img.big { height:120px; } p.ex { height:100px; width:100px; } <body> <img class="normal" src="logocss.gif" width="95" height="84" /><br> <img class="big&q

HTML学习笔记 css定位浮动及瀑布流案例 第十三节 (原创) 参考使用表

#fd { width: 100px; height: 150px; background-color: forestgreen; float: left; } #sd { width: 150px; height: 100px; background-color: coral; float: left; } #td { width: 100px; height: 100px; background-color: chartreuse; float: left; } #container { w

HTML学习笔记 css定位浮动及瀑布流 第十三节 (原创)

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>浮动</title> <link rel="stylesheet" href="tzy.css"type="text/css"></head><body> <d

209.4.4 盒模型&amp;定位&amp;浮动

盒模型 盒模型 除了图片表单元素之外,基本所有标签都可以看做一个盒子 盒模型的要素 width和height 标签内容的宽高,不是盒子的宽高 padding 内边距 内边距是标签内容和边框的距离 padding的颜色和标签内容一致 margin 外边距 外边距是标签相对于父标签和兄弟标签的距离 兄弟标签之间margin会相互重叠,以大的margin为准 border 边框 浮动 如果某个标签A是浮动的 假如A标签的上一个标签也是浮动的 那么A就会跟在上一个标签后面 如果一行放不下两个标签 A就会

3 CSS 定位&amp;浮动

CSS Position(定位): static定位: HTML元素的默认值, 没有定位,元素出现在正常的流中 静态定位的元素不会受到top,bottom,left,right影响 Fixed定位: 元素的位置相对于浏览器窗口固定 即便串口滚动元素也不滚动 注: Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持 Fixed定位使元素的位置与文档流无关,因此不占据空间 Fixed定位的元素和其他元素重叠. p.pos_fixed { position:fixed; t

Css3之基础-8 Css 浮动(定位,浮动定位)

一.CSS 定位概述 定位概述 - 定位: 定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素甚至浏览器窗口本身的位置 - 普通流定位 - 浮动定位 - 相对定位 - 绝对定位 普通流定位 - 页面中的块级元素框从上到下一个接一个地排列 - 每一个块级元素都会出现在一个新行中(比如<p>元素.<div>元素) - 元素框之间的垂直距离是由框的垂直外边距计算出来的 - 内联元素将在一行中从左到右排列水平布置 - 不需要从新行开始 - 可以使用水平内边距.边框和外边

【前端】浮动和定位

浮动和定位 浮动 什么是浮动? ? 元素的浮动是指设置了浮动属性的元素会脱离标准普通流的控制,移动到其父元素中指定位置的过程.它可以让任何盒子可以在一行排列,用浮动来布局. ? 在css中,通过float属性来定义浮动,其基本语法格式如下: 选择器{float:属性值;} 属性值 描述 left 元素向左浮动 right 元素向右浮动 none 元素不浮动(默认值) 浮动的特性 脱离标准流,不占位置,浮动只有左右浮动 一般只要一浮动就创建一个包含块级的概念,一般要在外边添加一个父盒子,然后对齐,

H5浮动与定位

H5的奇妙之处就在于它的变幻莫测,接下来我想谈一下我对定位浮动的认知. 什么是浮动首先要了解什么是浮动:脱离文档流,默认在当前的行对既定的方向进行移动(默认横排). 用浮动可以解决什么问题使用浮动之前我们要想明白浮动都可以解决什么问题:比如我们要放一排的div或是img,我们故可以通过调试margin之类的属性解决,但是有时会发现即便如此有时仍会产生空隙,我们就可以通过浮动来解决这一问题.再比如有时后我们需要一些标签不会占据文档流的显示,这时候也可以选择使用. 浮动会出现什么问题但是浮动往往会产