div表格定高垂直居中,水平居中
2016-03-25 12:14
357 查看
近日做项目,遇到一个难题:就是用div ul li 做表格时,要不就是水平居中不了,要不是垂直居中不来
垂直居中用vertical-align: middle;,但是浮动把它给无效化了
因为定高,所以用不了行高
如何解决垂直居中呢?
就是在li里面加一个标签
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/10/b6351a7809fbddfcf350055115859d5c)
垂直居中解决了,那么你有没有看到
是的,因为
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/10/829b24fa7df60d90e3a4f432a9729e5a)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/10/9997a8436fa4f5e0012dab310b32efa4)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/10/5f67660dc38bfa3c3eafb97f670cd9d0)
下图可以看到,p的宽度,其实
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/10/4524ae789190540e51a79de6bbedde05)
那么要如何去弄呢?
我想,如果我把P的宽度跟随li的宽度变化而变化,那是不是解决水平居中的问题了呢?
我就想到用JS解决
$(function(){
var a=$(".liwidth").innerWidth();
$("li p").css("width",a);
});
嗯︿( ̄︶ ̄)︿ ,解决了,美中不足的是比如:你浏览器宽度是1000px,那么你打开这页面,它是居中的,如果你不刷新,把浏览器宽度拉伸到1001以上,那么恭喜你,它并不居中[无奈]╮(╯-╰)╭ ,拉伸到1000以下是居中的。刷新一下,它就适应了
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/10/9bd56a96965b7f506d995101e786a831)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/10/858596b56d83aad3fd66b35c77aaf192)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/10/14972e229b54029de57dd48f4ee2f09d)
完!
垂直居中用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>
完!
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/61c17ed2eb67211a84e137429ac3f7ad.gif)
相关文章推荐
- [div+css]晒晒最新制作专题推广页模板
- li中插入img图片间有空隙的解决方案
- 表格标签table深入了解
- html小技巧之td,div标签里内容不换行
- table 隔列(行)换色效果让表格结构更清淅
- table高级应用把表格进行到底(必看)
- div flash firefox div层总是被flash层遮盖
- VB返回记录集结果到HTML表格的方法
- 小技巧处理div内容溢出
- 让超出DIV宽度范围的文字自动显示省略号...
- 解决div被flash挡住的设置方法
- 网页中Span和Div的区别
- DIV+CSS经常用到的属性、参数及说明
- CSS Div 最小高度在IE 6 和IE 7中的兼容性问题
- DIV CSS网页布局 最小高度(min-height)的妙用
- 多浏览器下IE6 IE7 firefox li 间距问题第1/2页
- DIV border边框显示不完全问题的解决方法
- 表格高级使用技巧_把表格进行到底(必看)
- Div CSS absolute与relative的区别小结
- css创意ul+li实现的细线表格实现代码