不定宽高元素居中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			.box{
				 200px;
				height: 200px;
				border: 1px solid #000000;
			}
			.cont{
				padding: 50px;
				background: red;
			}
			/*方法1
			 * 最简单的flex布局,外层容器加上如下样式即可
			 * 	display: flex;
				justify-content: center;
				align-items: center;
			 * 
			 * 兼容性:
			IE:ie9以上加-ms-前缀
			移动端:安卓4.2-4.3加-webkit-前缀
					UC浏览器加-webkit-前缀*/
			.box1{
				display: -webkit-flex;
				display: -moz-flex;
				display: -o-flex;
				display: -ms-flex;
				display: flex;
				justify-content: center;
				align-items: center;
			}
			
			/*方法2
			 利用table-cell
			 兼容性ie7以上支持
			 * */
			.box2{
				display: table-cell;
				text-align: center;
				vertical-align: middle;
			}
			.cont2{
				vertical-align: middle;
				display: inline-block;
				*display:inline;
				*zoom:1;
			}
			/*方法3
			使用CSS3 transform
			 兼容性
			 IE:ie8以上,ie9加-ms-前缀
			 安卓4.3-4.4.4版本浏览器加-webkit-前缀
			 	UC加-webkit-前缀
			 
			 * */
			.box3{
				position: relative;
			}
			.cont3{
				position: absolute;
				left: 50%;
				top: 50%;
				transform:translate(-50%,-50%);
				-ms-transform:translate(-50%,-50%); 	/* IE 9 */
				-moz-transform:translate(-50%,-50%); 	/* Firefox */
				-webkit-transform:translate(-50%,-50%); /* Safari 和 Chrome */
				-o-transform:translate(-50%,-50%); 	/* Opera */
			}	
			/*方法4js实现 兼容所有浏览器*/
			.box4{
				position: relative;
			}
			.cont4{
				position: absolute;
				left: 50%;
				top: 50%;
				border: 5px solid #000000;
			}					
		</style>
	</head>
	<body>
		<!--方法1-->
		<div class="box1 box">
			<div class="cont1 cont">1</div>
		</div>
		<!--方法2-->
		<div class="box2 box">
			<div class="cont2 cont">2</div>
		</div>
		<!--方法3-->
		<div class="box3 box">
			<div class="cont3 cont">3</div>
		</div>
		<!--方法4-->
		<div class="box4 box" id="box4">
			<div class="cont4 cont" id="cont4">4</div>
		</div>
		<script type="text/javascript">
			var cont4=document.getElementById("cont4");
//			console.log(cont4.offsetHeight,cont4.clientHeight);                                   
			
			linCenter(cont4);
			
			function linCenter(obj){
				obj.style.marginLeft="-"+obj.offsetWidth/2+"px";
				obj.style.marginTop="-"+obj.offsetHeight/2+"px";
			}
			
		</script>
	</body>
</html>

  

原文地址:https://www.cnblogs.com/yangxue72/p/7494213.html