不定宽高元素居中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			.box{
				width: 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>

  

时间: 2024-08-30 01:44:34

不定宽高元素居中的相关文章

不定宽 块状元素居中3

通过给父元素设置float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left: -50% 来实现水平居中. 我们可以这样理解:假想ul层的父层(即下面例子中的div层)中间有条平分线将ul层的父层(div层)平均分为两份,ul层的css代码是将ul层的最左端与ul层的父层(div层)的平分线对齐:而li层的css代码则是将li层的平分线与ul层的最左端(也是div层的平分线)对齐,从而实现li层的居中. <s

不定宽块状元素居中方法

在实际的编写代码过程中,我们会遇到要为"不定宽块状元素"设置居中,比如网页上的分页导航,因为分页的数量不确定,所以我们不能通过设置宽度来限制它的弹性. 不定宽的块状元素有三种方法设置居中: 一.设置table标签: 利用table标签的自适应长度(table其长度根据其文本内容的长度决定),因此可以看做是"定宽度块元素",然后利用顶宽度块状元素居中的margin方法,使其水平居中. 例1:HTML代码 1 <!DOCTYPE html PUBLIC "

html+css--水平居中总结-不定宽块状元素方法(三)

来源:http://www.imooc.com/code/6365 除了前两节讲到的插入table标签,以及改变元素的display类型,可以使不定宽块状元素水平居中之外,本节介绍第3种实现这种效果的方法,设置浮动和相对定位来实现. 方法三:通过给父元素设置float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left: -50% 来实现水平居中. 我们可以这样理解:假想ul层的父层(即下面例子中的div层)中

html+css--水平居中总结(不定宽块状元素方法)(一)

来源:http://www.imooc.com/code/6363 在实际工作中我们会遇到需要为“不定宽度的块状元素”设置居中,比如网页上的分页导航,因为分页的数量是不确定的,所以我们不能通过设置宽度来限制它的弹性.(不定宽块状元素:块状元素的宽度width不固定.) 不定宽度的块状元素有三种方法居中(这三种方法目前使用的都很多): 加入 table 标签 设置 display: inline 方法:与第一种类似,显示类型设为 行内元素,进行不定宽元素的属性设置 设置 position:rela

网页元素居中攻略记_(3)已知宽高元素水平垂直居中

已知宽高元素水平垂直居中 方案 使用了position的absolute属来实现,在上篇文章的垂直居中的基础上加上水平居中 代码 index.html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>已知宽高元素水平垂直居中</title> <style> #container { posit

CSS + DIV 居中写法(不定宽高)

最新写法:CSS3,不兼容IE8- position: fixed; top: 50%; left: 50%; width: 50%; max-width: 630px; min-width: 320px; height: auto; z-index: 2000; visibility: hidden; -webkit-backface-visibility: hidden; -moz-backface-visibility: hidden; backface-visibility: hidde

不定宽高垂直居中分析

昨天做移动项目是,遇到这样一个案例,如图,图片容器随着视口宽度进行自由拉伸扩张,图片不定宽高,垂直居中: 当时做这个布局的时候,我一直想到用display:table-cell通过vertical-align:middle,来实现居中,可以当我在同一个节点用position:absolute,会导致此居中问题失效. 最后想到的解决方案,案例如下,不定宽高垂直居中: <!DOCTYPE HTML> <html lang="en-US"> <head>

水平居中总结-不定宽块状元素方法(三)

除了前两节讲到的插入table标签,以及改变元素的display类型,可以使不定宽块状元素水平居中之外,本节介绍第3种实现这种效果的方法,设置浮动和相对定位来实现. 方法三:通过给父元素设置float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left: -50% 来实现水平居中. 我们可以这样理解:假想ul层的父层(即下面例子中的div层)中间有条平分线将ul层的父层(div层)平均分为两份,ul层的css代

水平居中总结-不定宽块状元素方法(二)

除了上一节讲到的插入table标签,可以使不定宽块状元素水平居中之外,本节介绍第2种实现这种效果的方法,改变元素的display类型为行内元素,利用其属性直接设置. 第二种方法:改变块级元素的 display 为 inline 类型(设置为 行内元素 显示),然后使用 text-align:center 来实现居中效果.如下例子: html代码: <body> <div class="container"> <ul> <li><a