文章目录

  • 一、float浮动
  • 二、position定位

今天来谈谈网页设计中的float定位和position定位,这两个在网页排版中是必不可少的操作,当然float其实用得更多。

一、float浮动

1、文档流
指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。脱离文档流也就是不遵循普通的布局排版,采用自己设定的规则来排版。能够脱离文档流的两个方法是使用float和position中的absolute。

2、块级元素与内联元素
前几篇文章中都提到了块级(block)标签和内联(inline)标签,其实这些标签就是所谓的块级元素和内联元素。常见的都有以下几种,

  • 块级元素有 div、form、table、p、pre、h1~h5、dl、ol、ul 等。
  • 内联元素有span、a、strong、em、label、input、select、textarea、img、br等

块级元素通常被现实为独立的一块,独占一行,多个块级就是占多行;
block元素可以设置width、height属性,但内联元素不行;
内联元素可以多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行。

3、浮动的定义
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。由于浮动框不在文档的普通流中,所以文档的普通流中的浮动框之后的块框表现得就像浮动框不存在一样。
浮动最有效的作用就是能够让原本无法摆放在同一行的块级标签摆放在同一行。

4、float浮动的使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.div1{width:100px;height: 100px;background-color: pink;float:left;}.div2{width:200px;height: 100px;background-color: deeppink;/*float:left;*/}.div3{width:100px;height: 200px;background-color: red;float:left;}.div4{width:200px;height: 200px;background-color: darkred;/*float:left;*/}</style>
</head>
<body><div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
<div class="div4"></div></body>
</html>

(1)初始状态,即将所有float浮动效果注释掉,原本的效果是这样的:

在图里,div1的颜色最浅,div2、div3、div4的颜色依次加深。
(2)当我们把div1,div2,div3都添加向左浮动时(div4不加),就出现了这样的效果:

这种效果的产生,是因为div1(粉)、div2(深粉)、div3(红)这三个个块级标签都是浮动状态的,就好像是飘着的,而div4不是飘着的,是在地上的,所以就补充上位,占了第一行的位置。而对于div1(粉)、div2(深粉)、div3(红)都是飘着的,飘着也是有次序的,因此从左到右依次飘在第一行的“空中”,此时div4(深红)是在第一行的“地上”。
(3)当我们仅将div1和div3设置成向左浮动,就出现了这样的效果:

首先div1(粉)飘在第一行的空中,div2(深粉)补充上位,div1仅占div2的一半大小,因此只能在“空中”盖住div2的一半。由于div3(红)也是飘着的,div4(深红)补充上位,因为div3只占div4的一半大小,所以也只在空中覆盖div4的一半。

4、float浮动的清除

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
<style type="text/css">* {margin:0;padding:0;}.container{border:1px solid red;width:300px;}#box1{background-color: green;float:left;width:100px;height:100px;}#box2{background-color:deeppink;float:right;width:100px;height:100px;}#box3{background-color:pink;height:40px;}.container:after{content:"";display:block;clear:both;}
</style>
</head>
<body><div class="container"><div id="box1">box1 向左浮动</div><div id="box2">box2 向右浮动</div>
<!--                清除浮动-->
<!--                <div style="clear:both"></div>--></div><div id="box3">box3</div>
</body>
</body>
</html>

不添加浮动的状态是这样:

对box1(绿色)和box2(深粉)添加浮动后效果是这样:

假如我们并不想要这种效果,而是想要把粉色长条移到box1和box2的底下,有以下两种常用的方法可以做到,
一是在box1和box2的下面再添加一个块级div标签,设置风格为clear:both,即:

<div style="clear:both"></div>

二是使用伪类操作(更加灵活),即:

.container:after{content:"";display:block;clear:both;}

最终达到的效果是这样:

5、clear语法补充
clear : none | left | right | both
取值:

  • none : 默认值。允许两边都可以有浮动对象
  • left : 不允许左边有浮动对象
  • right : 不允许右边有浮动对象
  • both : 不允许有浮动对象

二、position定位

1、static静态
position的默认参数是static,即无定位。此时即使设置了left、top等参数也没有效果,因为它没有参照物。
假如我们将没有定位作为初始状态,它的效果是这样的:

图中,div1(粉)、div2(深粉)、div3(红),div4(深红)。

2、relative相对定位
相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。有趣的是,即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。
将div2(深粉)设置了相对定位的效果是这样的:

3、absolute绝对定位
置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即body元素)。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

重点:如果父级设置了position属性,例如position:relative;,那么子元素就会以父级的左上角为原始点进行定位。这样能很好的解决自适应网站的标签偏离问题,即父级为自适应的,那我子元素就设置position:absolute;父元素设置position:relative;,然后Top、Right、Bottom、Left用百分比宽度表示。

对div2(粉)设置了绝对定位的效果是这样的:

很显然,div2的位置直接被div3给占了。

4、fixed固定坐标
对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义。

注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这
是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是 relative
却可以。因为它原本所占的空间仍然占据文档流。

也就是说,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。
给div2加了fixed固定定位后,同时将原来的div1、div3、div4都复制一遍,以出现滚动条,效果是这样的:

可以很清楚得看到,div2固定在网页的一个位置不会变化。

5、测试代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>*{margin:0;}.div1{width:200px;height: 100px;background-color: pink;}.div2{width:200px;height: 100px;background-color: deeppink;/*position:relative;*//*left:100px;*//*top:100px;*//*position:absolute;*//*left:100px;*//*top:100px;*/position:fixed;left:100px;top:100px;}.div3{width:200px;height: 200px;background-color: red;}.div4{width:200px;height: 200px;background-color: darkred;}</style></head>
<body><div class="div1"></div><div class="div2"></div><div class="div3"></div><div class="div4"></div><div class="div1"></div><div class="div3"></div><div class="div4"></div>
</body>
</html>

html之CSS设计(float定位和position定位详细分析)相关推荐

  1. 测试用例的设计方法(七种)详细分析

    1.需求分析法 需求分析法:按照需求,设计测试用例. 其中的需求分为两种:用户需求 .软件需求 (1)验证需求是否正确.完整.无二义性,并且逻辑一致. (2)要从"黑盒"的角度,设 ...

  2. 有一个设计时钟的题目,进行详细分析(一)

    先对题目要求及元器件介绍 一.要求:设计一个能实现从 00:00--23:59 计数的数字电子钟: 二.所用芯片: 1.辅助芯片:74LS00 两片,用于分频器和计数器的复位: 劲非 74LS08 两 ...

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

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...

  4. (转)浅析CSS——元素重叠及position定位的z-index顺序

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...

  5. css怎么使元素绝对定位有过度效果_CSS定位属性Position实例分析

    CSS所提供的Position定位属性在进行网页页面布局过程中非常重要,通过使用Position定位属性可以实现对页面元素进行精确定位,最终达到较好的设计及页面展示效果.本文主要针对Position属 ...

  6. CSS position 定位知识细节

    文章传送门:详解css定位与定位应用 position定位的定义: 在CSS中关于定位的内容是:position:relative | absolute | static | fixed static ...

  7. CSS设计指南 笔记3

    CSS设计指南 笔记3 3 定位元素 盒模型:浏览器为页面中的每个HTML元素生成的矩形盒子,都要按照可见版式模型(visual formatting model)在页面上排布 可见页面版式的三个属性 ...

  8. 元素重叠及position定位的z-index顺序

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是 一样的,说到底还是对z-index的理解比较模糊,可以解决问 ...

  9. RN position定位及Android兼容处理

    前言 在RN开发中仅仅使用flex布局,也满足不了我们日常的需求开发:RN官方也提供了定位布局,flexbox定位和position定位可以同时使用,同时生效: position RN提供了两种布局方 ...

最新文章

  1. 数据建模学习笔记-2-《高质量数据库建模 2-建模流程》
  2. 三分钟学会css3中的flexbox布局
  3. Ubuntu 16.04 安装 Wireshark分析tcpdump的pcap包——sudo apt install wireshark-qt
  4. SPOJ - VLATTICE
  5. os.chdir 的作用是什么_为什么宝宝有事都愿意找妈妈?爸爸也要尽到责任才行
  6. python的threading库_python标准库介绍——31 threading 模块详解
  7. 递归函数非递归化_递归神秘化
  8. 复制assert目录文件到私有目录_每天学点之CentOS文件/目录的权限
  9. 关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义
  10. Selenium RC for Java 环境配置
  11. IntelliJ IDEA开发工具插件GsonFormat插件安装使用
  12. oracle解锁sysman用户,详解Oracle如何解锁用户的方法
  13. Python常用模块 之 base64模块
  14. 简单的收支记账软件的实现详细解释(不连接数据库)
  15. 【音频编码】AAC编码之FDK AAC
  16. 《孙子兵法》帮你找到合格的管理者
  17. ORACEL R12 总账和子账的关系
  18. python绘制表格并保存为图片_Python3基于plotly模块保存图片表格
  19. 兼容exe的linux系统,国产操作系统下想运行EXE?你何不虚拟个电脑系统出来
  20. 【CCF 201712-4】行车路线(Dijkstra 80分)

热门文章

  1. 婚宴座位图html5,婚礼小知识,婚宴座位怎么安排才不得罪人(主桌)
  2. ajax php 返回值 数组,ajax 返回数组怎么解决???
  3. 东华大学java期末_东华大学数据结构期末复习题!.doc
  4. android内存占用分析,Android App性能评测分析-内存篇
  5. 后勤管理系统_还在用人工进行宿舍后勤管理?超级适用的宿舍管理系统推荐
  6. 联想g510拆键盘的简单方法_你也可以轻松学会的最简单、最实用、最有效的方法——联想记忆法...
  7. asp对php预览,Dreamweaver中预览PHP和ASP
  8. zabbix 脚本安装
  9. Android 屏幕适配资料汇总
  10. 对BottomTagFragment的理解