div表格定高垂直居中,水平居中

近日做项目,遇到一个难题:就是用div ul li 做表格时,要不就是水平居中不了,要不是垂直居中不来

垂直居中用vertical-align: middle;,但是浮动把它给无效化了

因为定高,所以用不了行高

如何解决垂直居中呢?

就是在li里面加一个标签

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
		<script src="js/jquery-1.7.2.min.js" type="text/javascript" charset="utf-8"></script>
		<title></title>
	</head>
	<body>
		<style type="text/css">
			ul li{
				list-style-type: none;
			}
			*{
				margin: 0px;
				padding: 0px;
			}
			ul{
				width: 99%;
				height: 100px;
				border: solid 1px red;
			}
			li{
				float: left;
				text-align: center;
				width: 100%;
			}
			p{
				height: 100px;
				vertical-align: middle;	/*垂直居中*/
				display: table-cell;	/*表格化*/
				word-break: break-all;	/*文字长度达到盒子的宽度后强制换行*/
			}
		</style>
		<div style="width: 100%;">
			<ul>
				<li><p>郑玄在马融门下,三年不得相见,高足弟子传授而已。尝算浑天不合,诸弟子莫能解。</p></li>
			</ul>
			<ul>
				<li><p>《文学》</p></li>
			</ul>
		</div>
	</body>
</html>

垂直居中解决了,那么你有没有看到

text-align: center;

不起作用了?

是的,因为

display: table-cell;

把P的

display: block;

给弄掉了,相当于

display: inline;

下图可以看到,p的宽度,其实

text-align: center;

并没有失效,只是宽度太小

那么要如何去弄呢?

我想,如果我把P的宽度跟随li的宽度变化而变化,那是不是解决水平居中的问题了呢?

我就想到用JS解决

$(function(){
	var a=$(".liwidth").innerWidth();
	$("li p").css("width",a);
});

嗯︿( ̄︶ ̄)︿ ,解决了,美中不足的是比如:你浏览器宽度是1000px,那么你打开这页面,它是居中的,如果你不刷新,把浏览器宽度拉伸到1001以上,那么恭喜你,它并不居中[无奈]╮(╯-╰)╭ ,拉伸到1000以下是居中的。刷新一下,它就适应了

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
		<script src="js/jquery-1.7.2.min.js" type="text/javascript" charset="utf-8"></script>
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			//控制 p标签跟随li的宽度变化而变化
			$(function(){
				var a=$(".liwidth").innerWidth();
				$("li p").css("width",a);
			});
		</script>
		<style type="text/css">
			ul li{
				list-style-type: none;
			}
			*{
				margin: 0px;
				padding: 0px;
			}
			ul{
				width: 99%;
				height: 100px;
				border: solid 1px red;
			}
			li{
				float: left;
				text-align: center;
				width: 100%;
			}
			p{
				height: 100px;
				display: inline;
				vertical-align: middle;	/*垂直居中*/
				display: table-cell;	/*表格化*/
				word-break: break-all;	/*文字长度达到盒子的宽度后强制换行*/
			}
		</style>
		<div style="width: 100%;">
			<ul>
				<li class="liwidth"><p>郑玄在马融门下,三年不得相见,高足弟子传授而已。尝算浑天不合,诸弟子莫能解。</p></li>
			</ul>
			<ul>
				<li><p>《文学》</p></li>
			</ul>
		</div>
	</body>
</html>

完!

时间: 2024-09-28 16:53:59

div表格定高垂直居中,水平居中的相关文章

transform的妙用---实现div不定宽高垂直水平居中

transform的兼容性 transform的兼容性还是比较乐观的.IE9以下不兼容,IE9支持代替的-ms-transform属性不过只支持2D转换. 谷歌和Safari支持代替的-webkit-transform属性.IE9以上.火狐和欧朋是兼容的. transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 在此,可妙用其移动的属性. 遇见div不定宽和高垂直水平居中的问题.记得以前都是用js去实现.现在可以用 transform进行实现.

垂直居中,水平居中,垂直+水平居中,圣杯和双飞翼布局

一:先说一下行内元素和块级元素: 行内元素:a.img.input.label .select.small.span.textarea ... 块级元素:div .dl.h1.h2.form. pre - 格式化文本.table .ul.ol.p... 更多的介绍看这个:http://www.cnblogs.com/Jackie0714/p/4923639.html 二:水平居中: 1.有宽度和高度的块级元素一般都用margin:0 auto.行内元素的话,一般都是用text-align:cen

&lt;转载&gt;使CSS文字图片div元素居中方法之水平居中的几个方法

文字居中,文字垂直居中水平居中,图片居中,图片水平居中垂直居中,块元素垂直居中?当我们在做前端开发是时候关于css居中的问题是很常见的.情 况有很多种,不同的情况又有不同的解决方式.水平居中的方式解决的时候相对来说通过css比较容易设置,垂直居中相对比较棘手. 先来说一下水平居中的不同情况与不同解决方法吧. 1文本,图片等行内元素的水平居中方法呢比较简单.直接给父元素设置一个text-align:centent属性就可以实现元素的水平居中了. 2 确定宽度的块级元素水平居中怎么设置呢?设置方法也

[转]如何让div中的内容垂直居中

转自:http://blog.163.com/yan_1990/blog/static/197805107201211311515454/ 虽然Div布局已经基本上取代了表格布局,但表格布局和Div布局仍然各有千秋,互有长处.比如表格布局中的垂直居中就是Div布局的一大弱项,不过好在千变万化的CSS可以灵活运用,可以制作出准垂直居中效果,勉强过关. 要让div中的内容垂直居中,无非有以下几种方法,等我一一列举: 一.行高(line-height)法如果要垂直居中的只有一行或几个文字,那它的制作最

如何让div中的内容垂直居中(转)

虽然Div布局已经基本上取代了表格布局,但表格布局和Div布局仍然各有千秋,互有长处.比如表格布局中的垂直居中就是Div布局的一大弱项,不过好在千变万化的CSS可以灵活运用,可以制作出准垂直居中效果,勉强过关. 如何让div中的内容垂直居中 来源:黄超 要让div中的内容垂直居中,无非有以下几种方法,等我一一列举: 一.行高(line-height)法 如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如: p { height:30px; line

如何让div中的内容垂直居中

虽然Div布局已经基本上取代了表格布局,但表格布局和Div布局仍然各有千秋,互有长处.比如表格布局中的垂直居中就是Div布局的一大弱项,不过好在千变万化的CSS可以灵活运用,可以制作出准垂直居中效果,勉强过关. 要让div中的内容垂直居中,无非有以下几种方法,等我一一列举: 一.行高(line-height)法如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如: p { height:30px; line-height:30px; width:10

bobo 如何让div中的内容垂直居中

虽然Div布局已经基本上取代了表格布局,但表格布局和Div布局仍然各有千秋,互有长处.比如表格布局中的垂直居中就是Div布局的一大弱项,不过好在千变万化的CSS可以灵活运用,可以制作出准垂直居中效果,勉强过关. 要让div中的内容垂直居中,无非有以下几种方法,等我一一列举: 一.行高(line-height)法如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如: p { height:30px; line-height:30px; width:10

不定宽高垂直居中分析

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

一个定高,一个高度自适应的布局

Problem:父元素内包含两个子元素,一个定高,另一个高度自适应 Ans: <div class="box">    <div class="ele1"></div>    <div class="ele2"></div></div> (1)  .box {      width:200px;      height:300px;      background:red;