六、浮动与定位

1、浮动

1)浮动基本概念

浮动最本质的功能:用来实现并排

浮动使用要点:如若要浮动,并排的盒子都要设置浮动;父盒子要有足够宽度,否则盒子会掉下去

浮动的顺序贴靠特性:子盒子会按照顺序进行贴靠,如果没有足够空间,则会再寻找前一个兄弟元素

浮动元素不再区分块级元素、行内元素,已经脱离了标准文档流,一定能设置宽高,即使他是span或者a标签

float:left; 左浮动,浮动元素统一按顺序向左靠

float:right; 右浮动,浮动元素统一按顺序向右靠

2)浮动实现网页布局

注意事项:

①垂直显示的盒子不要设置浮动,只有并排的盒子才需要浮动

②大盒子带着小盒子跑,在一个大盒子中,又是一个小天地,内部可以继续浮动

③不要节约盒子

④浮动不能继承

3)BFC规范和浏览器差异

BFC(Box Formatting Context,块级格式化上下文)是页面上的一个隔离的独立容器容器里面的子元素不会影响到外面的元素,反之亦然。

一个盒子不设置height时,当内容元素都浮动时,无法撑起自身,故需要创建BFC来避免此种情况

如何创建BFC:

①大盒子float的值不是none

position的值不是static或者relative(靠谱)

display的值是inline-blockflex或者inline-flex

overflow:hidden;(靠谱)

overflow:hidden;表示溢出隐藏,溢出盒子边框的内容将会被隐藏(溢出padding的部分还在),该方法是非常好用的让盒子形成BFC的办法

BFC的其他作用:

①可以取消盒子的margin塌陷;

②可以阻止元素被浮动元素覆盖。(仅做理论认识,实战不使用)

浏览器差异

IE6、7浏览器使用haslayout机制,和BFC规范略有差异,比如IE浏览器使用zoom:1属性让盒子拥有layout。若要兼容至IE6、7的网页时,尽量让布局简单,内部有浮动的盒子时要设置height属性,规范编程。

4)清除浮动

清除浮动:浮动一定要封闭到一个盒子中,否则就会对页面后续元素产生影响

div父盒子未形成BFC,内部设置浮动盒子,此时父盒子没有height,由此导致与后面的另一个未形成BFC的没有height的父盒子重合,则后一个父盒子中的子盒子将与第一个父盒子中的子盒子并排

<!-- 示例 --><style>*{margin: 0;padding: 0;}p {margin-right: 20px;width: 100px;height: 100px;float: left;background-color: orange;}</style>
<body><div><p>1</p><p>2</p></div><div><p>3</p><p>4</p></div>
</body>

解决方法:

①让内部有浮动的父盒子形成BFC,他就能关住内部的浮动。此时最好的办法就是让父盒子增加overflow:hidden;属性(margin不失效)

②给后面的父盒子设置clear:both属性。clear表示清除浮动对自己的影响,both表示左右浮动都清除(该方法会导致后面父盒子的margin-top属性失效,因为上一个父盒子没有height,故不推荐该方法

③使用::after伪元素给盒子添加最后一个子元素content='',将其设置为块级元素display:block;(不转为块级元素则无效),并且给::after设置clear:both;margin不失效)

④在两个父盒子之间“隔墙”,隔一个携带clear:both;的盒子(margin失效,但是可以通过给中间盒子设置height来替代margin

5)浮动相关问题总结

★为什么要用浮动?

☆由于块级元素的特点是自动的垂直排列,所以想设置页面的布局只能通过浮动来实现。

★为什么要清除浮动?

☆盒子内部的浮动必须是独立的,也就是BFC,要是没有形成BFC,前面的盒子没有高度,就会导致后面的盒子不能正常的显示,所以我们必须要将浮动影响的范围锁在自己的父盒子之内。

★清除浮动有哪几种方式?优缺点是什么?

☆清除浮动有4种方式:

①是确保每一个盒子都形成BFC,这样的话每个盒子都有高度,设置margin也是水到渠成;

②是利用clear:both;属性来消除前后盒子对自己的影响,但是这样本盒子依然是没有高度的,所以不能使用margin属性来控制外边距;

③是在每个盒子的子元素的末尾里插入一个伪元素,给他设置clear:both;属性,这个子伪元素可以消除前后浮动对自己的影响从而消除对前后父元素的影响;

④是在两个父元素之间建一堵墙,边距都靠这个墙来控制。

★怎么根据场景选择清除浮动的方式?

☆一般情况,使用overflow:hidden能解决大多数浮动问题,如有overflow不能实现的效果时,可以考虑::after伪类选择器去清除浮动效果。

2、定位

1)相对定位

相对定位:盒子可以相对自己原来的位置进行位置调整,称为相对定位

position:relative;
top:100px;
left:100px;
/* 盒子相对于自己原来的位置,left到左边的距离为100px,top到上边的距离为100px处x */

位置描述词:left到左边的距离;right到右边的距离;top到上边的距离;bottom到下边的距离

当出现left:100px; right:50px;这类冲突情况时,数值大的那个生效

relative可以和浮动一起使用

相对定位会在原来位置留有位置,新位置相当于原来位置的一个”影子“

用途:用来进行微调元素位置;也可以当作绝对定位的参考盒子

2)绝对定位

绝对定位:盒子可以在浏览器中以坐标进行位置的精准描述,拥有自己的绝对位置。

position:absolute;
top:100px;
left:100px;
/* 以网页边框为标准,以坐标进行位置确定,left到左边的距离为100px,top到上边的距离为100px处 */

位置描述词:left到左边的距离;right到右边的距离;top到上边的距离;bottom到下边的距离

绝对定位的元素脱离标准文档流,将释放自己的位置,对其他元素不会产生任何干扰,而是对他们进行压盖。

绝对定位的盒子并不是永远以浏览器为基准点

绝对定位的盒子会以自己祖先元素中,离自己最近的拥有定位属性的盒子,当作基准点,这个盒子通常是相对定位(即有position:relative;)的,所以这个性质也叫”子绝父相“。

绝对定位盒子实现垂直居中:

position:absolute;
top:50%;
margin-top: 负的自己高度的一半;

设置完绝对定位后,不能再使用margin:0 auto;实现水平居中了,需要使用left:50%; margin-left:负的宽度的一半

z-index属性:是一个没有单位的正整数,数值大的能够压住数值小的。

有经验的工程师往往会使用相同数字来定义z-index,如999|666、9999|6666、99999|66666等,通过 位数 来调整谁压住谁

绝对定位用途:用来制作”压盖“、”遮罩“效果;可以结合CSS精灵使用;可以结合JS实现动画

3)固定定位

固定定位:不管页面如何卷动,他永远固定在那里

position:fixed;
top:100px;
left:100px;

固定定位脱离标准文档流,只能以网页为参考系

用途:”返回顶部“、”楼层导航“、页面中不变的广告

脱离文档流方法:浮动、绝对定位、固定定位

CSS学习(三)—— 浮动与定位相关推荐

  1. CSS基础知识---浮动,定位和盒模型

    转载请注明出处! 需要掌握的三个最重要的CSS概念是浮动,定位和盒模型. 盒模型概述: 页面上的每个元素都被看做一个矩形框(元素框or盒模型),这个框由元素内容,内边距,边框和外边距组成. 内边距出现 ...

  2. CSS学习笔记--浮动元素由于浏览器页面缩小而被挤到下面的解决方法

    CSS学习笔记--浮动元素由于浏览器页面缩小而被挤到下面的解决方法 参考文章: (1)CSS学习笔记--浮动元素由于浏览器页面缩小而被挤到下面的解决方法 (2)https://www.cnblogs. ...

  3. CSS学习221~249(定位+元素的显示隐藏)

    1 定位 1.1 为什么需要定位 浮动可以让多个块级盒子一行没有缝隙排列显示,经常用于横向排列盒子. 定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子. 1.2 ...

  4. HTML、CSS综合04——浮动、定位、选择器

    复习 文本属性:text-开头的属性都可以被继承 背景属性:(背景属性尤为重要) ​ 背景颜色:background-color ​ 背景图片:background-image ​ 背景图片的重复方式 ...

  5. CSS布局之浮动和定位

    目录 1. 浮动 1.1 浮动元素的特性 1.2 浮动不会压住文字 1.3 清除浮动 1.3.1 额外标签法 1.3.2 父盒子添加overflow属性 1.3.3 父盒子添加after伪元素 1.3 ...

  6. 阿ken的HTML、CSS的学习笔记_浮动与定位(笔记六)

    欢迎光临 你好 我是阿ken 文章目录 6.1_元素的浮动 6.1.1_元素的浮动属性 float 6.1.2_清除浮动 clear 6.2_overflow 属性 6.3_元素的定位 6.3.1_元 ...

  7. Web前端开发(三)--css优先级进阶,文本属性,元素类型转换,display,overflow,浮动,定位

    一.选择器优先级进阶 计算方式: 行间样式 1000 id 100 class 10 标签选择器 1 让每一个选择器对应的值相加,谁的值大谁的优先级就高. <!DOCTYPE html> ...

  8. css学习(五):浮动、定位、bfc

    一.块状元素和内联元素流到页面 1.如果是一个块状元素,浏览器将开辟一个新的行将此元素流入/渲染到页面,如果元素未设置宽度,默认则独占一行:(既两个块状元素换行) 2.将块状元素C流入到页面后,浏览器 ...

  9. 【CSS学习(三)盒子模型、边距重叠 浮动、清除浮动】

    盒子模型 盒子模型在CSS学习中尤为重要,对盒子模型的深刻理解有利于 CSS开发水平的提示,在开发中遇到难以理解的现象,往往是因为对模型的理解不够. 盒子模型这个名词来自英文里面的Box modelm ...

最新文章

  1. 2002年3月英伟达发布核弹GPU与大算力自动驾驶芯片
  2. vue 插件 滑块验证_VUE接入腾讯验证码功能(滑块验证)备忘
  3. 【Linux系统编程】IO多路复用之poll
  4. 自动让钱生钱方法100%安全稳定
  5. 判断一个数是否存在于一个非递减的有序数列中 算法(Ordered Search Problem)
  6. Python学习笔记——基础篇【第五周】——模块
  7. CLIP-ViL:CLIP对视觉和语言任务有多大的好处?UC BerkeleyUCLA团队给出了答案!
  8. flutter PositionedTransition 实现缩放动画
  9. 你为什么选择考研,考研对你的意义是什么?
  10. WordPress Shortcode(简码)介绍及使用详解
  11. jquery的img的动态title换行
  12. Java中使用poi导入、导出Excel
  13. java 局部内部类
  14. python雷达图的相似度_Python教程:matplotlib实现雷达图和柱状图
  15. 最好用的php编程软件_php 编程软件 php编程软件有哪些
  16. 微信公众号怎么放html文件,微信公众号html缓存处理
  17. Problem A: 推理出今天是星期几
  18. 解决V-Rep接近传感器(距离传感器、超声波传感器、红外传感器)不能正常识别问题
  19. Monocular Human Pose Estimation: A Survey of Deep Learning-based Methods
  20. sk_buff 介绍

热门文章

  1. matlab中一些特殊字符的表示方法(如摄氏度°,·),上标和下标的表示方法
  2. 1386:打击犯罪(并查集)
  3. moon-util工具
  4. 通过python实现企业微信公众号链接+图文推送
  5. wcf获取客户端ip
  6. 34、查询课程名称为数学,且分数低于60的学生姓名和分数(不重点)(自己做出)
  7. 校园二手书(微信小程序)
  8. 身体很弱的程序员的跑步计划
  9. Firebird 2.5的部分操作
  10. 【通信电子电路】第11章 交流电路功率分析