CSS 浮动 & 定位

文章目录

网页布局的本质

用 CSS 来摆放盒子,把盒子摆放到相应位置。

CSS 提供了三种传统布局方式(简单说就是盒子如何进行排列)。

  • 普通流(标准流)
  • 浮动
  • 定位

浮动

默认的块元素会占满父元素的宽度,设置浮动之后,按照设置浮动的方向 进行缩小,缩小到内部的内容的宽度为准,之后漂浮在页面上,原先的位置被后面的 元素递补占据。

如何设置浮动

设置浮动

css 复制代码
选择器 { float: 属性值;}
属性 描述
none 元素不浮动(默认值)
left 元素向左浮动
right 元素向右浮动

设置元素不受到其它元素浮动的影响

css 复制代码
选择器 { clear: 属性值;}
属性 描述
both 不受两侧浮动影响
left 不受左浮动影响
right 不受右浮动影响

测试浮动

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8">
		<title>浮动</title>
		<style>
			div#container{
				width:800px;
				height:1000px;
				margin:0 auto;
				background-color: yellow;
				border:solid 1px yellow;
			}
			div#sub1{
				background-color: pink;
				margin-top:10px;
				height:100px;
				float:left;
			}
			div#sub2{
				background-color: hotpink;
				margin-top:10px;
				height:120px;
				float:left;
			}
			div#sub3{
				background-color: deeppink;
				margin-top: 10px;
				height: 140px;
				float:left;
			}
			p{
				background-color: silver;
				
				clear:left;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<div id="sub1">盒子1</div>
			<div id="sub2">盒子2</div>
			<div id="sub3">盒子3</div>
			<p>我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字
				我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字
				我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字
				我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字
				我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字</p>
		</div>
	</body>
</html>

效果

定位

相对定位

元素根据原先所在位置的左上角进行定位,定位之后,元素依然 保持原先的类型,原来的位置依然被占用 偏移量 topbottom 只能书写一个 leftright 只能书写一个。

绝对定位

元素根据其距离最近的定位过的父元素的左上角进行定位, 偏移量topbottom只能书写一个 leftright 只能书写一个元素定位之后,不再保持原先的类型,不再占满一行,漂浮在页面上,原来的位置被之后的 元素递补占据 如果元素的祖先元素都没有被定位过,则根据body也就是浏览器的左上角进行定位 注意这样可能会出现问题。

测试定位

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8">
		<title>定位</title>
		<style>
			div#container{
				border:solid 2px black;
				position: relative;
				margin:0 auto;
				width:800px;
				height:900px;
			}
			div#sub1{
				border:solid 2px red;
			}
			div#sub2{
				border:solid 2px orangered;
				position: relative;
				/* 向下偏移300像素 */
				top:300px;
				/* 向右偏移200像素 */
				left:200px;
			}
			div#sub3{
				border:solid 2px yellow;

				position: absolute;
				top:300px;
				left:250px;
			}
			div#sub4{
				border:solid 2px greenyellow;
			}
			div#sub5{
				border:solid 2px aqua;
				background-image: url("./image/logos.jpg");
				width:137px;
				height:170px;
				position:absolute;
				top:300px;
				left:100px;
			}
			div#sub6{
				border:solid 2px cornflowerblue;
			}

		</style>
	</head>
	<body>
		<div id="container">
			<div id="sub1">我是层1</div>
			<div id="sub2">我是层2</div>
			<div id="sub3">我是层3</div>
			<div id="sub4">我是层4</div>
			<div id="sub5"></div>
			<div id="sub6">我是层6</div>
		</div>
	</body>
</html>

效果

相关推荐
银之夏雪丶几秒前
Vue 3 vs Vue 2:深入解析从性能优化到源码层面的进化
前端·vue.js
前端日常开发1 分钟前
一篇文章带你搞懂NextTick 是宏任务还是微任务
前端
EamonYang2 分钟前
实现 miniReact
前端
前端日常开发3 分钟前
5 分钟搞懂JavaScript 原型链
前端
野生的程序媛4 分钟前
重生之我在学Vue--第7天 Vue 3 数据请求(Axios)
前端·javascript·vue.js
cv高级工程师YKY5 分钟前
前端 - uniapp - - 滚动容器scroll-view实现横向滚动
前端·uni-app
程序媛刘刘8 分钟前
uniappx 使用体验
java·服务器·前端
coder阿龙11 分钟前
【UNIAPP】获取视频的第一帧作为封面(基于视频URL,Canvas)复制即用
前端·uni-app·音视频
蘑菇王13 分钟前
无需打包构建?ESM Bundleless 开发的探索与实践
前端·javascript
只会写Bug的程序员17 分钟前
面试之《TypeScript泛型》
前端·面试·typescript