当前位置: 首页 > news >正文

【前端】自适应布局方法总结

一栏固定一栏自适应

实现代码:

<!DOCTYPE html>
<html>
<head>
	<title>自适应布局-一栏固定一栏自适应</title>
	<meta charset="utf-8">
	<style type="text/css">
		*{
			padding: 0;
			margin: 0;
		}
		#left{
			height: 600px;
			width: 200px;
			float: left;
			background-color: #fffc00;
		}
		#main{
			height: 600px;
			width: auto;
			background-color: #03c03c;
		}
	</style>
</head>
<body>
<div id="left">left 固定宽度</div>
<div id="main">main 自适应宽度</div>
</body>
</html>

  

左右两栏固定,中间自适应

 

  • 方法一 :使用float浮动

  自身浮动法的原理就是使用对左右使用分别使用float:left和float:right,float使左右两个元素脱离文档流,中间元素正常在正常文档流中,使用margin指定左右外边距对其进行一个定位。

<!DOCTYPE html>
<html>
<head>
	<title>自适应布局</title>
	<meta charset="utf-8">
	<style type="text/css">
		*{
			padding: 0;
			margin: 0;
		}
		#container{
			width: 100%;
			margin: 0 auto;
		}
		#left{
			width: 200px;
			height: 600px;
			float: left;
			background-color: #fffc00;
		}
		#right{
			width: 100px;
			height: 600px;
			float: right;
			background-color: orange;
		}
		#main{
			height: 600px;
			margin-left: 0 100px 0 200px;
			background-color: #03c03c;
		}
	</style>
</head>
<body>
<div id="container">
	<div id="left">left 200px</div>
	<div id="right">right 100px</div>
	<div id="main">main 自适应</div>
</div>
</body>
</html>

  

  • 方法二:使用绝对定位

  绝对定位法原理是将左右两边使用absolute定位,因为绝对定位使其脱离文档流,后面的center会自然流动到他们上面,然后使用margin属性,留出左右元素的宽度,既可以使中间元素自适应屏幕宽度。

<!DOCTYPE html>
<html>
<head>
	<title>自适应布局</title>
	<meta charset="utf-8">
	<style type="text/css">
		*{
			padding: 0;
			margin: 0;
		}
		#left{
			width: 200px;
			height: 600px;
			position: absolute;
			top: 0;
			left: 0;
			background-color: #fffc00;
		}
		#right{
			width: 100px;
			height: 600px;
			position: absolute;
			top: 0;
			right: 0;
			background-color: orange;
		}
		#main{
			height: 600px;
			position: absolute;
			left: 200px;
			right: 100px;
			top: 0;
			background-color: #03c03c;
		}
	</style>
</head>
<body>
<div id="left">left 200px</div>
<div id="right">right 100px</div>
<div id="main">main 自适应</div>
</body>
</html>

  

  • 方法三:使用负margin(圣杯布局)

  圣杯布局的原理是margin负值法。使用圣杯布局首先需要在center元素外部包含一个div,包含div需要设置float属性使其形成一个BFC,并设置宽度,并且这个宽度要和left块的margin负值进行配合,具体原理参考这里。这里对圣杯布局解释特别详细。

<!DOCTYPE html>
<html>
<head>
	<title>自适应布局</title>
	<meta charset="utf-8">
	<style type="text/css">
	*{
		padding: 0;
		margin: 0;
	}
	#wrap{
		width: 100%;
		float: left;
	}
	#main{
		height: 600px;
		margin: 0 100px 0 200px;
		background-color: #03c03c;
	}
	#left{
		width: 200px;
		height: 600px;
		float: left;
		margin-left: -100%;
		background-color: #fffc00;
	}
	#right{
		width: 100px;
		height: 600px;
		float: left;
		margin-left: -100px;
		background-color: orange;
	}
	</style>
</head>
<body>
<div id="wrap">
	<div id="main">main 自适应</div>
</div>
<div id="left">left 200px</div>
<div id="right">right 100px</div>
</body>
</html>

  

  • 方法四:使用flex(css3新特性)
<!DOCTYPE html>
<html>
<head>
	<title>自适应布局</title>
	<meta charset="utf-8">
	<style type="text/css">
		*{
			padding: 0;
			margin: 0;
		}
		#container{
			width: 100%;
			display: -webkit-flex;
			display: -moz-flex;
			display: -ms-flex;
			display: -o-flex;
			display: flex;
		}
		#left{
			width: 200px;
			height: 600px;
			background-color: #fffc00;
		}
		#main{
			width: auto;
			height: 600px;
			background-color: #03c03c;
			-webkit-flex: 1;
			-moz-flex: 1;
			-ms-flex: 1;
			-o-flex: 1;
			flex: 1;
		}
		#right{
			width: 100px;
			height: 600px;
			background-color: orange;
		}
	</style>
</head>
<body>
<div id="container">
	<div id="left">left 200px</div>
	<div id="main">main 自适应</div>
	<div id="right">right 100px</div>
</div>
</body>
</html>

  

转载于:https://www.cnblogs.com/dragonir/p/7744192.html

相关文章:

  • UML类图详解_关联关系_多对多
  • MyBatis-day2
  • 入坑tensorflow
  • 获取class文件对象的三种方法
  • ALPHA-3
  • 关于Vue.js
  • mybatis(错误一) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案...
  • Oracle分区表常见操作
  • shell设置时间递减脚本
  • linux网络流控-htb算法简析
  • Xpath语法
  • Java 基础知识
  • javaWeb中怎么获取提交表单里面的值
  • 阿里、腾讯、百度、华为、京东、搜狗和滴滴最新面试题汇集【转】
  • 《C程序设计语言》笔记 (二)类型运算符与表达式
  • 【个人向】《HTTP图解》阅后小结
  • 0基础学习移动端适配
  • 2017 年终总结 —— 在路上
  • Android Studio:GIT提交项目到远程仓库
  • Angular4 模板式表单用法以及验证
  • CSS 专业技巧
  • GitUp, 你不可错过的秀外慧中的git工具
  • JavaScript-Array类型
  • leetcode-27. Remove Element
  • PHP的Ev教程三(Periodic watcher)
  • Promise初体验
  • Python - 闭包Closure
  • Python 反序列化安全问题(二)
  • Rancher如何对接Ceph-RBD块存储
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 警报:线上事故之CountDownLatch的威力
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 如何编写一个可升级的智能合约
  •  一套莫尔斯电报听写、翻译系统
  • 积累各种好的链接
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​第20课 在Android Native开发中加入新的C++类
  • ​用户画像从0到100的构建思路
  • "无招胜有招"nbsp;史上最全的互…
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #pragam once 和 #ifndef 预编译头
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (70min)字节暑假实习二面(已挂)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .gitignore文件—git忽略文件
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net mvc部分视图
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net6使用Sejil可视化日志
  • .net中的Queue和Stack
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证