3-4垂直居中问题

3-4垂直居中问题

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>css_base</title>

<style type="text/css">

.div1{

height: 400px;

width: 100%;

border: 1px solid blue;

display: table-cell;


}

.div2{

display: table-cell;

vertical-align: middle;

text-align: center;

}

</style>

</head>

<body>

<div class="div1">

<div class="div2">

<img src="http://img1.sycdn.imooc.com/climg//58c137930001b08102000065.jpg">

<h1>Welcome to Website</h1>

<h2>CSS层叠样式,CSS层叠样式,CSS层叠样式,CSS层叠样式</h2>

</div>

</div>

</body>

</html>

1、经过验证当

.div1{

height: 400px;

width: 100%;

border: 1px solid blue;

display: table-cell;}时,显示的宽度不是100%,但是去掉display: table-cell;,宽度就会显示为100%,很奇怪的问题。

2、根据教程中,以上css的设置,不能实现垂直居中,chrome和火狐都不行


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

.div1{

height: 400px;

width: 100%;

border: 1px solid blue;

display: table;


}

父元素要设为display:table

  • 蜀山有雨 提问者 #1
    非常感谢!
    2017-09-22 16:11:41
卡布琦诺 2017-09-22 15:56:41

http://img1.sycdn.imooc.com/climg//59c4bf33000182ca06810129.jpg

这里已经说了table-cell需要结合vertical-align:middle;才能使图片和文字在盒子里面居中显示,使用table-cell整体的盒子是没办法整体居中显示的,想要整个盒子居中显示,且里面的内容也居中显示,就不能使用table-cell,而是直接使用vertical-align:具体数值(譬如10px;)等进行设置文本内容居中显示,然后使用margin:0 auto使盒子整体居中显示。

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>css_base</title>
    <style type="text/css">
    .div1 {
        height: 400px;
        width: 800px;
        border: 1px solid blue;
        /*display: table-cell;*/
        /*vertical-align:middle;*/
        margin:0 auto;
        position:absolute;
        left:50%;
        top:50%;
        margin-top:-200px;
        margin-left:-400px;
    }

    .div2 {
        text-align: center;
    }
    .div2 img{
        display:inline-block;
        vertical-align: -120px;
    }
    .div2 h1{
        vertical-align:120px;
    }
    .div3 h2{
        vertical-align: 120px;
    }
    </style>
</head>

<body>
    <div class="div1">
        <div class="div2">
            <img src="http://img1.sycdn.imooc.com/climg//58c137930001b08102000065.jpg">
            <h1>Welcome to Website</h1>
            <h2>CSS层叠样式,CSS层叠样式,CSS层叠样式,CSS层叠样式</h2>
        </div>
    </div>
</body>

</html>

祝学习愉快!

卡布琦诺 2017-09-22 11:27:07

table-cell同样会被其他一些CSS属性破坏,例如float, position:absolute,所以,在使用display:table-cell与float:left或是position:absolute属性尽量不用同用。设置了display:table-cell的元素对宽度高度敏感,对margin值无反应,响应padding属性。类似于td,结合vertical-align:middle;才能使图片和文字在盒子里面居中显示,祝学习愉快!

  • 提问者 蜀山有雨 #1
    没看懂……,上边代码没用float:left和position:absolute属性啊,怎么也受影响了,那上边这个代码,怎么修改才能让元素垂直居中呢,我是根据视频里的方法做的,为什么视频里是正常的
    2017-09-22 15:31:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师