为了账号安全,请及时绑定邮箱和手机立即绑定

两个块元素设置display:table-cell时,分别两个元素设置不同的height,为什么会影响到另一个块元素的高度?

<style>

.container{

    height:300px;

background:#ccc;


display:table-cell;/*IE8以上及Chrome、Firefox*/

vertical-align:middle;/*IE8以上及Chrome、Firefox*/

}

.girl{

    height:500px;

    background:red;

    display:table-cell;

    vertical-align:middle;

}

</style>

</head>


<body>

<div class="container">

    <div>

        <p>看我是否可以居中。</p>

        <p>看我是否可以居中。</p>

        <p>看我是否可以居中。</p>

        <p>看我是否可以居中。</p>

        <p>看我是否可以居中。</p>

    </div>

</div>

<!--下面是代码任务区-->

<div class="girl">

    <img src="http://img1.sycdn.imooc.com//54ffac56000169c001840181.jpg" title="害羞的小女生"/>

</div>

</body>

如上:

.container{height:300px;}

.girl { height:500px;}

两个块元素是自动浮动还是两个块元素已经转为内联元素了,所以才会自动排列在同一行?

另外  .container height:300px  也自动变成与 .girl 的高度一样 500px 这是为什么呢?


正在回答

4 回答

就是你理解的那样。。多个并排的display:table-cell 浏览器会把他们解析进一个table中。然后取高度最高的单元格的高度作为行高。。

所以,可以使用table-cell来轻松实现等高列布局。。

你在class为girl后再加一个div,display也为table-cell(注意要设置宽度),你看看效果,也是等高的。。


0 回复 有任何疑惑可以回复我~
#1

ORead 提问者

<div class="girl"> <div style="display:table-cell; height:600px; width:300px; background:green;"> <img src="#" title="害羞的小女生"/> </div> </div> 试了,高度与宽度都取代了class为girl的div,但图片不居中了,即使另外给img{display:table-cell; vertical-align:middle;} 也不能居中,这是怎么了呢?
2015-12-12 回复 有任何疑惑可以回复我~
#2

慕男婶 回复 ORead 提问者

<div style="display:table-cell; height:600px; width:300px; background:green;vertical-align:middle;"> <img src="http://img1.sycdn.imooc.com//54ffac56000169c001840181.jpg" title="害羞的小女生"/> </div>
2015-12-12 回复 有任何疑惑可以回复我~
#3

ORead 提问者 回复 慕男婶

图片链接是没错的,我刚刚的回复超过300字符,所以图片链接才使用#代替
2015-12-12 回复 有任何疑惑可以回复我~
#4

慕男婶 回复 ORead 提问者

你拷贝我的代码试了么?你怎么知道我只改了链接?
2015-12-12 回复 有任何疑惑可以回复我~
#5

ORead 提问者 回复 慕男婶

对,我也试过对这个div使用居中才可以让img居中,为什么呢? 为什么不能直接对img标签设计样式呢?
2015-12-12 回复 有任何疑惑可以回复我~
查看2条回复

会的 他们是table-cell的时候他们就是在同一行 一个撑篙 别的也会受影响

0 回复 有任何疑惑可以回复我~

因为单元格使其内容居中的固定写法就是:vertical-align:middle;

0 回复 有任何疑惑可以回复我~
#1

ORead 提问者

所以正确写法是给img添加div,然后使用这个div让img居中? 我是之前是因为有了<div class="girl"> 所以图片会居中,但如果在这div.girl里再添加div就应该使用些div居中从而使得img居中,是这样理解吧?
2015-12-12 回复 有任何疑惑可以回复我~
#2

慕男婶 回复 ORead 提问者

是的。
2015-12-12 回复 有任何疑惑可以回复我~
#3

ORead 提问者 回复 慕男婶

完全理解了!
2015-12-12 回复 有任何疑惑可以回复我~

来回看了几次,也百度了下,有一点点懂得,不知道是否这样,请求证!!

display:table-cell;  意思是把块元素转换成表格形式,两个块元素都转为表格形式即如同一个一行两列的表单,所以高度取决于最高的表格! 

是这样子吗?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

两个块元素设置display:table-cell时,分别两个元素设置不同的height,为什么会影响到另一个块元素的高度?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号