CSS中的定位与浮动

CSS中的定位与浮动

本文主要讲述CSS中的三种定位样式static、relative和absolute的区别以及浮动元素的特征。

定位样式

CSS中定位样式position的取值有三个,默认值:static,相对定位:relative,绝对定位:absolute。

  1. static: 采用默认定位时,一般可以不用设置position样式。 各个元素是按照文档流的形式从上往下排,同时保证块状元素独占一行的原则。
  2. relative : 生成相对定位的元素,相对于其正常位置进行定位,同时配合top, bottom, left和right样式完成定位。它不会影响同一容器中其他元素的定位。

    相对定位元素并没有脱离文档流,其参造物是其本身,不管你怎么移动,它原有的位置还是会留着,父容器对其布局影响照旧。

  3. absolute:对于绝对定位的元素,则需要分其的父元素及以上元素的定位情况来说:
    1. 父元素中有设置了Position属性,并且属性值为 absolute 或 relative的时候,那么子元素相对于该父元素来进行定位。
    2. 父元素没有设置非static的Position属性,则以其第一个设置了非static的Position属性的祖先元素来进行定位。如果不存在一个有着position属性的祖先元素,那么那就会以body为定位对象,按照浏览器的窗口进行定位。

      绝对定位是将元素彻底从文档流删除,并相对于其父元素定位(父元素可能是文档中的另一个元素或者是初始父元素,比如body),元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样,该元素再也不会影响父元素中其他元素的布局了。

浮动元素

  1. 假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。
  2. 浮动元素会生成一个块级框,而不论它本身是何种元素。如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。
  3. 如果浮动元素跳过了这一行,那么浏览器就认为这一行没有足够的空间,其他div在浮动过程中会自动跳过这一行,即使该行还有空间容纳其他div。
  4. 浮动元素是脱离文档流的,脱离文档流的元素没有实际高度,不会把父元素撑开。对于浮动属性来说,位置属性(left/top/right/bottom)是没有用的。
  5. 浮动元素之后的文字内容,如果是汉字则会自动换行; 如果是连续的数字或英文字母,则不会换行,设置word-wrap : break-word;属性会使内容强制换行。

看下面的例子。

<style>
#container {
position:relative;
width:300px;
height:100px;
background:#039;
}
#A {
float:left;
top:0;
left:0;
width:50px;
height:40px;
background:#C00;
}
</style>
</head>
<body>
<div id="container">
<div id="A">你好</div>
<div id="B">
1234567890abcdabcdabcdabcdabcdabcdabcdabcd</div>
</body> 

原本应该环绕在红色块周围的文字因不能换行而显示在其下方,并且部分文字被容器遮住了。

浮动元素和绝对定位的区别

浮动元素设计之初是为了使文本环绕图像排版,而后来的CSS允许浮动任何元素。理解了这一设计原则,就能理解它与其他定位方式的区别了。

  1. 绝对定位是将元素彻底从文档流删除,并相对于其包含块定位(包含块可能是文档中的另一个元素或者是初始包含块),元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样,该元素再也不会影响其他元素的布局了。
  2. 浮动,会以某种方式将浮动元素从文档的正常流中删除,并把浮动元素向左边和右边浮动,不过它们还是对文档的其余部分有影响。当一个元素浮动时,其他内容会“环绕”该元素。

看下面的例子

<style>
body {
    color:#FFF;
}
#container {
    position:relative;
    width:300px;
    height:100px;
    background:#039;
}
#A {
    position:absolute;
    top:0;
    left:0;
    width:50px;
    height:40px;
    background:#C00;
}
</style>
</head>
<body>
<div id="container">
    <div id="A">你好</div>
    <div id="B">
    浮动元素和绝对定位的区别浮动元素和绝对定位的区别浮动元素和绝对定位的区别浮动元素和绝对定位的区别</div>
</body> 

把A元素的定位改成浮动后,其后的内容会环绕该元素。

 #A {
    float:left;
    top:0;
    left:0;
    width:50px;
    height:40px;
    background:#C00;
} 

下面顺便引出文本流和文档流的概念。

文档流是相对于盒子模型讲的。

文本流是相对于文子段落讲的。

元素浮动之后,会让它跳出文档流,也就是说当它后面还有元素时,其他元素会无视它所占据了的区域,直接在它身下布局。但是文字却会认同浮动元素所占据的区域,围绕它布局,也就是没有拖出文本流。

但是绝对定位后,不仅元素盒子会拖出文档流,文字也会出文本流。那么后面元素的文本就不会在认同它的区域位置,会直接在它后面布局,不会在环绕。

原文地址:https://www.cnblogs.com/zhmhhu/p/8343844.html

时间: 2024-08-07 20:27:17

CSS中的定位与浮动的相关文章

深入理解css中的定位属性:position

深入理解css中的定位属性:position 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共有四种不同的定位方法,分别是static.fixed.relative.absolute. 第一部分:static static定位是HTML元素的默认值,即没有定位,元素出现在正常的流中,因此,这种定位就不会收到top,bottom,left,right的影响. 如html代码如下: <div class=&qu

Css中Position定位属性与层级关系

今天同事发现一个有意思的问题,关于position的层级关系的,他要不说我也没注意过 测试后果然有趣,有待深入研究: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Css中Position定位属性与层级关系</title> 6 <style type="text/css"> 7 #W{ 8

css中的定位

上一篇博客,我大概介绍了下浮动的使用及行为.其实在整个文档布局中,定位也对我们整个的页面排版有非常好的帮助,当然前提是使用得当. 一.定位分类: a.静态定位  position:static;    :元素按照正常的文档流顺序出现,位置等不产生任何改变(文档流的默认属性). b.相对定位  position:relative;:元素盒会产生移动,并且它在文档流中的原始空间会保留下来. c.绝对定位  position:absolute;:元素从文档流中脱离出来,相对于容器块产生移动,原始空间不

css中的定位属性position

同样的也是上课的时候发现学生难以理解的一些问题拿出来记录一下,希望帮助初学者. 在css中定位属性position的运用在页面中是很常用的,特别是一些结合js来实现的一些特效经常会用到定位属性,比如鼠标滑过显示被隐藏的盒子, banner的切换,还有之前写的jquery实现京东商品分类导航的类似这样的布局也是要结合定位属性来实现,但是上一次着重只写了jquery. 那么这次我想将定位属性的运用拿来说一下. 定位属性position常用的取值:relative/absolute/fixed;一般配

总结一下CSS中的定位 Position 属性

在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之. CSS position 属性值: absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位.元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定. relative:生成相对定位的元素,相对于其

对css中的定位属性postion刨根解牛

定位的基本思想很简单: 它允许你定义元素框相对于其正常位置应该出现的位置(relative),或者相对于父元素(absolute).另一个元素甚至浏览器窗口本身的位置(fixed).显然,这个功能非常强大,也很让人吃惊. 一切皆为框: div.h1 或 p 元素常常被称为块级元素.这意味着这些元素显示为一块内容,即“块框”.与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”. CSS 定位机制 CSS 有三种基本的定位机制:普通流.浮动和绝对

CSS文档定位:浮动

浮动的特点   浮动(float)属性提出的作用是实现文字的环绕效果,一个元素浮动后,会脱离普通流.主要的特点如下: 浮动的元素会向左或者向右移动直到它的外边缘接触容器框(containing block)的边缘或者另外一个浮动元素的外边缘,因此浮动元素是不会浮动到中间的. 如果没有足够的水平空间让浮动元素占据,浮动元素将向下移动,直到下方空间足够容纳或者下方已经没有浮动元素. 因为浮动已经脱离普通流,所以非定位的非浮动块级元素会表现得浮动元素没有存在一样,但是inline box元素(包括普通

浅谈CSS中的定位知识

1,静态定位(static) 表示按照正常定位方案,元素盒按照在文档流中出现的顺序依次格式化: 2,相对定位(relative) 将移动元素盒,但是它在文档流中的原始空间会保留下来: 相对定位元素有如下几个基本特征: 1,.使用CSS样式规则{position: relative:}声明: 2.使用一个到多个偏移属性(top.right.bottom.left)相对于它们在正常文档流中的初始位置定位.没有 设置偏移属性的,默认被设置为auto: 3.在文档流中所占据的原始空间被保留: 4.可能会

CSS中的定位体系

一.概述 ????1.什么是定位体系 ????视觉格式化模型规定,定位体系共有三种 ????????????a.常规流(normal flow) ????????????b.浮动(float) ????????????c.绝对定位(absolute posotioned) ????任何一个元素,必须属于其中一种定位系统 二.定位体系判定 ???? 三.盒模型和定位体系 1.盒模型=盒子体系 ????定位体系=盒子位置 2.盒模型中的尺寸 margin:px.em.%.auto border:px