CSS彻底研究(3)-浮动,定位

CSS彻底研究(3)-浮动,定位

一 . 浮动float

I . 定义及规则

float默认为none,对应标准流的情况。当float : left;时,元素就会向其父元素的左侧靠紧,脱离标准流,同时宽度不再伸展至充满父容器,而是根据自身内容来确定。

II . 演示规则

准备代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        body
        {
            margin: 0;
            padding: 0;
        }

        #father
        {
            background-color: cyan;

            /*父级div 没有定位 造成子div的margin-top传递给父级*/
            position: absolute;
        }

            #father *
            {
                margin: 10px;
                padding: 10px;
                border: 1px dashed red;
            }

        #son1
        {
        }

        #son2
        {
        }

        #son3
        {
        }
    </style>
</head>
<body>
    <div id="father">
        <div id="son1">#son1</div>
        <div id="son2">#son2</div>
        <div id="son3">#son3-son3son3son3</div>
        <p>
        这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字这是文字
        </p>
    </div>
</body>
</html>
  1. 中间给#father加上position:absolute,是为了消除未定位父div的margin-top传递问题,见http://blog.sina.com.cn/s/blog_6bec36f9010110w9.html
    显示效果为
  2. 1,2的float分别为left right时,有

    可见1,2脱离标准流,标准流中的son3当他们不存在,于是son3代替原来son1的位置,而son1的左border、son2的右border与son3的左右border重合
  3. 当1,2,3全都float left时

    文字围绕着float过的div
  4. 1,2左浮动,3右浮动,当窗口宽度减小时,3会被挤下来

    当3左浮动,2右浮动的时候,显示为

    当浏览器窗口宽度减小时,猜猜谁会被挤下来,son2么?

    答案还是son3,规则为 : 写在html文件中后面的会被挤下来,在html文件中,son3在son2后面,因此总是son3先挤下来。
  5. 增加son1高度,son3挤下来时会卡在那里
  6. 删除盒子中的文字,3个子div全部左浮动
    显示为

    父div中的三个子div全部脱离标准流了,父div就缩成一条线了,可以用clear来修正
    加一个margin-padding-border全为0,clear为both的空div,来撑大父div

III . clear清除浮动

如果前面有float:left的元素,他会影响下面元素,如上例中的p,在p元素中写clear : left即可消除前面左浮动元素对本元素的影响.同理clear:both是左右都清除.


二 . 定位position

position取值有static absolute relative fixed

1. static

这个是默认的,即标准流排下来,就是static定位方式.

2. fixed

在浏览器窗口中固定,什么论坛中的[回到顶部]这种按钮就是fixed做的
练习做个回到顶部玩玩

<div id="backToTop">
    回到顶部
</div>
#backToTop
{
    width: 100px;
    height: 50px;

    background-color: red;
    color: white;
    cursor: pointer;
    border-radius: 25px 0 0 25px;
    padding-left: 20px;

    text-align: center;
    line-height: 50px;

    position: fixed;
    bottom: 80px;
    right: 0;
}

显示效果

3. relative相对定位

相对于自己的偏移,而且不脱离标准流,使用top/bottom left/right指定偏移量

4. absolute绝对定位

根据别的已定位元素进行定位,应用absolute规则的脱离标准流

  • 这个别的元素:
    离它最近的已定位的祖先元素 或者 浏览器窗口,当找不到前面的祖先元素时,就以后者浏览器窗口来定位.
  • 已经定位 : 是指position已经设置,而且不是static...即position值不为static就是已经定位的元素,未设置position或设置为static认为它没有定位.

Trick
只设置 position : absolute,而不设置top/bottom/left/right值,那么元素会保持在原地,但是已经脱离标准流.


三 . display

display取值有inline block none
设置为none,即可将其隐藏,像inline-block等新添加的,参考http://www.w3school.com.cn/cssref/pr_class_display.asp

时间: 2024-10-25 07:06:48

CSS彻底研究(3)-浮动,定位的相关文章

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

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

CSS定位机制之浮动定位float

一.浮动定位实现的效果 二.使用float实现浮动定位 三.使用clear属性清除浮动定位 四.浮动定位的应用(布局) 一.浮动定位实现的效果 (一).块元素(div)在文档流中默认垂直排列,如果希望块元素在页面中水平排列,可以使块元素脱离文档流(使用float使元素浮动) 元素浮动脱离文档流之后,原有的位置不会保留,会被其他文档流元素占据. (二). 当设置了浮动定位后(float属性非none的值),元素会立即左上或右上浮动,而浮动元素会盖住文档流元素.如图一所示,框1设置浮动之后脱离文档流

css浮动定位到底什么鬼?

实际操作浮动的时候经常出现一头雾水的情况,趁着写博客理一理: 所谓浮动定位也就是定义一个元素相对于它本来的位置出现在哪里.以下几点是浮动定位中需要记住的: 1.浮动会先将元素在正常文档流中删除,但是该元素依然影响布局.例如,relative的元素原来所占的空间还在. 2.浮动元素的外边距始终不变. 3.元素被浮动后首先生成一个块级框,然后为自己指定一个包含块. 4.浮动的原则有:float之间不覆盖:边界来自包含块:float之间顺着排:尽可能挤一挤:尽可能顶一顶: 5.超出包含块的方法:使用负

css定位之浮动定位

浮动定位可以是原本垂直排列的块级元素,变成水平排列 1浮动元素 float:left 或者float:right  这些浮动会直接碰到父容器的边界为止. 2设置了浮动的元素,元素会脱离标准文档流中,但是元素内容会仍然占据文档流中的空间 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>float定位</title

js页面滚动时层智能浮动定位实现:

案例展示: 第一个:每个人都有看过的淘宝页面: 案例就不多说了,有兴趣的可以多去找找, 这样的智能浮动效果还是不错的,挺方便. 基本的实现原理: 首先有一个默认状态就是没有滚动的时候,什么事情也不用做,定位可以是absolute,也可以是stati,fixed,relartive 这些都可以.我们主要需要关注的是当浏览器滚动的时候,(要浮动的块)要移除浏览器界面视区的时候,修改其position属性,让其浮动在窗口的上沿显示就可以了.最好的position属性就是fixed了,可以在IE6+和其

浅析CSS——元素重叠及position定位的z-index顺序

元素位置重叠的背景常识 (x)html文档中的元素默认处于普通流(normal flow)中,也就是说其顺序由元素在文档中的先后位置决定,此时一般不会产生重叠(但指定负边距可能产生重叠).当我们用css为某个元素指定 float浮动或者position定位后,元素的定位将会依情况发生如下改变: 1. 指定float值left/right 行内元素也会隐形变成块元素,元素会脱离文档的普通流,向左或右浮动,直到其外边缘碰到包含框或另一个浮动框. 2. 指定position值relative 可以相对

CSS彻底研究(2)

Github pages 博文 一 . CSS盒模型 1.盒子的结构 margin-border-padding结构 + 内容content 组成盒模型 注意 1. width,height 取的是content区域的宽高,不包括padding border margin,但是盒子实际所占高度要算上外面三个(padding border margin) 2. 赋值顺序,顺时针,上(top)->右(right)->下(bottom)->左(left) ----top(1)----->

jQuery实现页面滚动时智能浮动定位

<!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title>jQuery实现页面滚动时层智能浮动定位_前端开发</title>    <style type="text/css">        * { 

2018-06-08CSS常用样式+浮动+定位+盒子模型

CSS布局样式: 常用样式: ①    字体 ②    颜色 ③    背景 布局: ①    浮动 ②    定位 ③    标签特性 标签盒子模型: ①    内边距 ②    边框 ③    外边距 动画: ①    旋转 ②    渐变 Link的正确用法: <link rel="stylesheet" href="ZuoYe1.css"> 常用样式: ①    字体: 大小,颜色,粗细,字体! 子标签会继承父标签的样式(不是所有的样式都会被继承