首页 > 其他分享 >浮动------float------定位----position

浮动------float------定位----position

时间:2022-10-12 13:34:11浏览次数:45  
标签:box 浮动 元素 float height ---- right ------ left

1、标准文档流

  标准文档流指的是元素排版布局过程中,元素会默认自动从左往右,从上往下的流式排列方式。并最终窗体自上而下分成一行行,并在每行中从左至右的顺序排放元素。

2、浮动

简介: css中让一个元素脱离标准文档流:

浮动(float)
绝对定位/固定定位:position:absolute/fixed
块级元素:
1、独占一行
2、可以设置宽、高
3、如果不设置宽度,宽度默认为容器的100%
行内元素:
1、与其他元素同行显示
2、不可以设置宽、高
3、宽高就是文字或图片的宽高

2.1浮动的基础知识

2.11  会使元素向左或者向右移动,只能左右,不能上下。
2.12  浮动元素碰到包含框或另一个浮动框,浮动停止。
2.13  浮动元素之后的元素将围绕它,之前的不受影响。
2.14  浮动元素会脱离标准流。
2.15  浮动的基本语法:
2.16  float: left 靠左浮动
2.17  float: right 靠右浮动
2.18  float: none 不使用浮动

2.2文字环绕的基本原理:

  当我们给图片设置向左浮动以后,图片脱离文档流,这时文字应该往上移从而被图片遮挡住部分的文字,但是文字有特殊的解析机制,它会在一个不被盖住的地方显示,所以出现了文字环图片的效果

3.浮动后产生的问题

1、父元素的高度无法被撑开,影响与父元素统计同级的元素(高度塌陷)
2.如果浮动元素后面跟着非浮动的元素,非浮动的元素会紧随其后浮动起来(下面的元素会跑到上面的元素(独占一行特性消失)位置中)
3.如果浮动元素前面还有同级元素没有浮动,那么这个元素之前的元素也需要浮动,否则会影响页面的结构

3.1 高度塌陷:

3.11: 原理:

   一个块级元素如果没有设置height,其height是由子元素撑开的。对子元素使用了浮动之后,子元素会脱离标准文档流,也就是说,父级元素中没有内容可以撑开其高度,这样父级元素的height就会被忽略,这就是所谓的高度塌陷

点击查看代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			.box{
				margin: 0 auto;
				width: 1226px;
				height: 614px;
				 
			}
			.left{
				float: left;
				width: 234px;
				height: 614px;
				background-color: #EBAAB4;
			}
			.right{
				float: right;
				width: 978px;
				height: 614px;
				background-color: #EBAAB4;
			}
			
		   .right ul li{
				list-style: none;
			}
			.right ul {
				float: left;
			}
			.right ul li{
				float: left;
				width: 234px;
				height: 300px;
				background-color: darkmagenta;
				margin-right: 14px;
			}
			.right ul li{
				margin-bottom: 14px;
			}
			/* 4n 第四个 和 第八个 */
			.right ul li:nth-child(4n){
				margin-right: 0px;
			}
			
		</style>
	</head>
	<body>
		<!--   
        大盒子
            宽度 1226px 高度 614px 水平居中
        左盒子
            宽度 234px  高度 614px
        右大盒子
            宽度 978px  高度 614px
        右侧小li
            宽度 234px  高度 300px 右外边距14px 
        前四个li
            添加下外边距 14px
     --> 
		<div class="box">
			<div class="left">
				
			</div>
			<div class="right">
				<ul>
					<li>1</li>
					<li>2</li>
					<li>3</li>
					<li>4</li>
					<li>5</li>
					<li>6</li>
					<li>7</li>
					<li>8</li>
				</ul>
			</div>
		</div>
	</body>
</html>

image

4.浮动如何清除?清除浮动流程

4.1清除浮动的常用方法

4.11直接给父元素设置高度:(只适合高度固定的布局)

浮动在提供强大威力的同时,也带来了很多问题。一个著名的问题就是,当一个父节点包括了若干浮动的子元素时,父节点的排版会考虑到浮动子元素的大小和位置,但是子元素并不会影响父节点的大小。在这种情况下,父节点的height变成了0,并且忽略其他属性。 很多时候,这个问题没有被注意到,特别是当父节点没有附合任何的CSS样式,而且嵌套的元素也看上去被正确地排列了。

4.12 额外标签法:

 在最后一个浮动元素后面添加属性为clear:both;的元素
` <div style="clear:both;"></div>`

优点:简单,代码少,浏览器兼容性好。
缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。

4.13 单伪元素清除法:

给父元素后面最后的一个盒子添加clear:both;属性的:after伪元素:
.clearfix:after
{
     /* 前面三行默认 */
    content: "";
	/* 默认转换行内 手动设置转换块级 */
    display: block;
    clear: both;
	/* 隐藏元素 */
	height: 0;
    visibility: hidden;
}
.clearfix
{
    display: inline-block;
}

4.14 双伪元素清除法(重点):

只需要给浮动的父元素添加clearfix这个类名即可让父元素自动检测高度
 .clearfix::before,
 .clearfix::after {
     content: "";
     display: table;
 }
 .clearfix::after {
     clear: both;
 }
点击查看代码
<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		* {
			margin: 0;
			padding: 0;
		}

		.box {
			width: 1226px;
			/* 因为内容可能不确定,不方便给高度 */
			margin: 0 auto;
		}

		.left {
			float: left;
			width: 234px;
			height: 400px;
			background-color: orange;
		}

		.right {
			float: left;
			width: 992px;
			height: 400px;
			background-color: #6cf;
		}

		footer {
			height: 100px;
			width: 1226px;
			margin: 0 auto;
			background-color: #55ffff;
			color: #fff;
			/* 清楚浮动 */
}
		/* 双伪元素清除浮动 */
		.clearfix::before,
		.clearfix::after {
			content: '';
			display: block;
		}

		.clearfix::after {
			clear: both;
		}
	</style>
</head>

<body>
	<!-- 只需要给浮动的父元素添加clearfix这个类名即可让父元素自动检测高度 -->
	<div class="box clearfix">
		<div class="left">左盒子</div>
		<div class="right">右盒子</div>
		<!-- 如果是无序列表结构,在此处放div不符合规范,我们可以用伪元素来帮我们创建一个盒子托起整个结构 -->
	</div>

	<footer>
		我是底部
	</footer>
</body>

</html>

4.15 父元素设置overflow属性:

**浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果
**

  给父元素设置overflow属性
  .clearfix{
    overflow: auto;
    /*overflow: hidden;也可以*/
}

5、Position属性定位:

简介:

     position属性是用于指定一个元素的定位方法类型的属性,它的取值有:static(默认类型)、relative、absolute、fixed。当position属性的值不为static(即不为默认)时,我们可以添加:top、bottom、left和right属性对当前元素进行具体的定位,并且可以使用z-index来设置层级的上下关系。

5.1 Position static(默认值)

简介:

默认值,没有定位,元素出现在正常的文档流中,会忽略 top, bottom, left, right 或者 z-index 声明,块级元素从上往下纵向排布,⾏级元素从左向右排列

下列的例子中,所有的盒子都将一个接一个的堆起来。因为它们都是块级元素,并且没有被浮动

点击查看代码
<div class="box-set">
  <div class="box box-1">Box 1</div>
  <div class="box box-2">Box 2</div>
  <div class="box box-3">Box 3</div>
  <div class="box box-4">Box 4</div>
</div>
<style>
.box-set {
  background: #e8eae9;
}
.box {
  background: #8ec63f;
  height: 80px;
  width: 80px;
}
</style>

image

5.2 Position relative(相对对位)

简介

生成相对定位的元素,相对于其原来的位置进行定位。元素的位置通过left、top、right、bottom属性进行规定。

元素的定位永远是相对于元素自身位置的,和其他元素没关系,也不会影响其他元素。
点击查看代码
<style>
.box-set {
  background: #e8eae9;
}
.box {
  background: #8ec63f;
  height: 80px;
  position: relative;
  width: 80px;
}
.box-1 {
    top: 20px;
  }
.box-2 {
  left: 40px;
}
.box-3 {
  bottom: -10px;
  right: 20px;
}
</style>
<div class="box-set">
  <div class="box box-1">Box 1</div>
  <div class="box box-2">Box 2</div>
  <div class="box box-3">Box 3</div>
  <div class="box box-4">Box 4</div>
</div>

image

5.3 Position absolute(绝对定位)

简介:

    对绝对定位的元素使用偏移量属性,这个元素将以相对定位的父节点作为参考系进行偏移。
     如果没有对绝对定位的元素使用偏移量属性,那么该元素将被放置在父节点的左上角。如果只设置了top属性,那么该元素则只做垂直方向的偏移,而水平方向依然靠着父节点的最左边。

点击查看代码
<style>
.box-set {
  background: #e8eae9;
  height: 200px;
  position: relative;
}
.box {
  background: #8ec63f;
  height: 80px;
  position: absolute;
  width: 80px;
}
.box-1 {
  top: 6%;
  left: 2%;
}
.box-2 {
  top: 0;
  right: -40px;
}
.box-3 {
  bottom: -10px;
  right: 20px;
}
.box-4 {
  bottom: 0;
}
</style>
<div class="box-set">
  <div class="box box-1">Box 1</div>
  <div class="box box-2">Box 2</div>
  <div class="box box-3">Box 3</div>
  <div class="box box-4">Box 4</div>
</div>

image

5.4 Position fixed(固定定位)

简介:

    生成固定定位的元素,指定元素相对于屏幕视⼝(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变,⽐如回到顶部的按钮⼀般都是⽤此定位⽅式。

    元素的定位是相对于 window (或者 iframe)边界的,和其他元素没有关系。但是它具有破坏性,会导致其他元素位置的变化。

点击查看代码
<!--
一个典型的使用固定定位的例子是网页中的顶部横条或者底部横条。当用户滚动页面时,那个横条始终停留在浏览器视口的顶部或者底部。
-->
<footer>Fixed Footer</footer>


footer {
  bottom: 0;
  left: 0;
  position: fixed;
  right: 0;
}

5.5 Position sticky(粘性定位)

简介:

    粘性定位,基于用户的滚动位置来定位。元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right,

    bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

点击查看代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
<style>
div.sticky {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  padding: 5px;
  background-color: #cae8ca;
  border: 2px solid #4CAF50;
}
</style>
</head>
<body>

<p>尝试滚动页面。</p>
<p>注意: IE/Edge 15 及更早 IE 版本不支持 sticky 属性。</p>

<div class="sticky">我是粘性定位!</div>

<div style="padding-bottom:2000px">
  <p>滚动我</p>
  <p>来回滚动我</p>
  <p>滚动我</p>
  <p>来回滚动我</p>
  <p>滚动我</p>
  <p>来回滚动我</p>
</div>

</body>
</html>

image

5.6 z-index 属性

简介:

    如果你需要让某个元素放置在其他元素的上面(可在默认的排版中,她并不是在他的上面),这时你可以改变她的z-index属性,让她跑到他的上面。
    注意:如果你需要设置一个元素的z-index属性,你必须首先设置这个元素是relative,absolute或者fixed定位。就像对于设置top, bottom, left, right属性一样。

点击查看代码
<style>
.box-set {
  background: #e8eae9;
  height: 160px;
  position: relative;
}
.box {
  background: #8ec63f;
  border: 3px solid #f7941d;
  position: absolute;
}
.box-1 {
  left: 10px;
  top: 10px;
}
.box-2 {
  bottom: 10px;
  left: 70px;
  z-index: 3;
}
.box-3 {
  left: 130px;
  top: 10px;
  z-index: 2;
}
.box-4 {
  bottom: 10px;
  left: 190px;
  z-index: 1;
}
</style>
<div class="box-set">
  <div class="box box-1">Box 1</div>
  <div class="box box-2">Box 2</div>
  <div class="box box-3">Box 3</div>
  <div class="box box-4">Box 4</div>
</div>

image

标签:box,浮动,元素,float,height,----,right,------,left
From: https://www.cnblogs.com/yxn001/p/16783507.html

相关文章

  • 使用txt动态上传数据至库表
    在CBO的程序开发过程中,需要为Table准备大量的测试数据,手动录入效率低,不专业,我们可以采用其他的高级编辑工具(例如:EXCEL,EditPlus)按照Table数据存储结构准备好数据,最后保存......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX基础要求1.使用tcpdump验证Hub模块的抓包结果截图h1pingh2,h3主机同样收到icmp报文2、L2_learning程序流程图3、使用tcpdump验证S......
  • 获取sap登陆用户名的中文描
    DATA:L_NAME_LASTLIKEADRP-NAME_LAST,   L_NAME_FIRSTLIKEADRP-NAME_FIRST..SELECTSINGLENAME_LASTNAME_FIRST FROM......
  • CountDownLatch-倒计时锁
    原理适合总分任务,这个锁主要适用情景,要求某些操作全部执行完成才能继续执行后面操作,这时候就可以适用cdl来计数,每次执行完一个操作就减一,计数为0后表示全部线程执行完毕。......
  • 安科瑞精密配电监控在数据中心的应用
     0引言在新冠疫情的影响下,全球网络流量受到视频流量、电话会议、社交网络等数字应用增长的推动而激增。伴随物联网持续发展,未来对数据服务的需求将呈现出指数级增长。......
  • 安科瑞精密配电监控在数据中心的应用
     0引言在新冠疫情的影响下,全球网络流量受到视频流量、电话会议、社交网络等数字应用增长的推动而激增。伴随物联网持续发展,未来对数据服务的需求将呈现出指数级增长。......
  • 屏幕的双击事件(如在table control 中)
    ​​​​​ IFok_code='CLICK'.  GETCURSORLINElines. "获取双击的行  CONCATENATE'您双击了第'lines '行'INTOl_msg.  ME......
  • 物料查询F4帮助增强(添加筛选条件
    需求:1、通过F4快捷按钮查询物料主数据时,在查询界面增加已删除/冻结物料点选按钮(如上图)2、系统默认不点选已删除/冻结物料,查询结果不包括已删除和已冻结物料;当用户点选已删......
  • 有的时候写好代码调用 REUSE_ALV_FIELDCATALOG_MERGE 出错提示为 READ_REPORT_LINE
    READ_REPORT_LINE_TOO_LONG下面列出的错误信息有这么一句.Theinternaltable"/FUNCTION=K_KKB_FIELDCAT_MERGE/DATA=L_ABAP_SOURCE[]"is72characterswide.The......
  • ABAP实现粘贴板的操作,复制粘贴_
    自己玩儿项目里暂时用不到在ABAP中的CLASS:CL_GUI_FRONTEND_SERVICES中提供了两个方法来控制与剪贴板内容的导入导出,分别是:CLIPBOARD_EXPORT和CLIPBOARD_IMP......