css:table-cell的妙用

本文介绍CSS中table-cell属性的多种应用场景,包括垂直居中、自适应等高布局、自动平均划分元素,通过实例展示了如何利用table-cell提升网页布局效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

css:table-cell的妙用

一、垂直居中

    <div>
        <img src="timg.jpg"/>
    </div>
        div{
            width:200px;
            height:200px;
            display:table-cell;
            vertical-align:middle;
            text-align: center;
            border:1px solid silver;
        }

效果图:
在这里插入图片描述

二、自动平均划分元素

    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
     /*
        当父元素定义“display:table”而子元素定义“display:table-cell”时,如果给父元素
一定的宽度,父元素宽度就会根据子元素的个数进行自动平均划分。
     */
        *{
            padding:0;
            margin:0;
        }
        ul{
            list-style-type: none;
            display:table;/*注意是table,不是table-row*/
            width:300px;
        }
        li{
           display:table-cell;
           height:30px;
           line-height:30px;
           text-align:center;/*使文本水平垂直居中*/
           color:white;
        }
        ul li:nth-child(1){
            background:red;
        }
        ul li:nth-child(2){
            background:orange;
        }
        ul li:nth-child(3){
            background:blue;
        }
        ul li:nth-child(4){
            background:green;
        }
        ul li:nth-child(5){
            background:purple;
        }

效果图:
在这里插入图片描述

三、自适应等高布局

example1:图片和文字自适应等高布局

    <div id="wrapper">
        <div id="img-box">
            <img src="book.jpg"/>
        </div>
        <div id="text-box">
            <p>《偷书贼》是澳大利亚知名作家马库斯•苏萨克的长篇小说代表作,它像《解忧杂货店》和《追风筝的人》一样,可以战胜孤独和恐惧,拯救身陷绝望的人,遇到这些书,是我们这一代人的幸运。</p>
            <p>二战期间,九岁的德国姑娘莉泽尔和弟弟被送往寄养家庭。弟弟不幸病死在火车上。在埋葬弟弟的荒原上,莉泽尔捡到了一本对她意义非凡的书《掘墓人手册》。</p>
            <p>来到慕尼黑贫民区的寄养家庭,莉泽尔夜夜抱着《掘墓人手册》入睡。养父为安慰她,每晚给她朗读手册的内容,还教她阅读。</p>
            <p>莉泽尔发现书的诱惑比食物更难抗拒,忍不住开始偷书。书里的世界帮助她熬过了现实的苦难,她也开始为藏在地下室的犹太人和在防空洞避难的邻居读书,安慰那一颗颗惶惶不安的心。然而,无情的战火终于摧毁了这一切……</p>
        </div>
    </div>
        #wrapper{
            display:table-row;
        }
        #img-box{
            display:table-cell;
            border:1px solid silver;
            vertical-align: middle;
            text-align:center;
            width:200px;
        }
        #img-box img{
            width:100px;
        }
        #text-box{
            display:table-cell;
            width:500px;
            border:1px solid silver;
        }
        #text-box p{
            text-indent:2em;
        }

效果图:
在这里插入图片描述

ps:左右两个盒子我们都没有加上高度,而是由盒子内容撑开。因为同一行的单元格 td 元素高度是相等的,所以左右两个盒子高度相等,并且高度由两者高度最大值决定。这就是自 适应的等高布局。

example2:图片链接与文字的对齐

当在<a></a>标签中加入<img>标签时,可以实现点击图片进入某个链接,对用户十分友好,但由于<a></a>标签本身和图片大小不一致,因此想要在图片附近加入相应的文字对齐居中,常常达不到想要的效果。如:

    <a href="#">
        <img src="book.jpg"/>
    </a>
    <span>作者: [澳]马库斯·苏萨克</span>
    img{
        height:100px;
    }
    a{
           vertical-align: middle;
    }

在这里插入图片描述

我们希望文字在图片右边中部,用vertical-align:middle没能达到我们想要的效果。这时,我们可以使用table-cell。

    <div id="wrapper">
        <a id="link" href="https://book.douban.com/subject/30225784/?icn=index-editionrecommend">
            <img src="book.jpg" id="img-link"/>
        </a>
        <div id="link-txt">
          作者: [澳]马库斯·苏萨克
        </div>
    </div>
        #img-link{
            width:100px;
        }
        #wrapper{
            display:table-row;
        }
        #link{
            display:table-cell;
            text-align:center;
            vertical-align: middle;
        }
        #link-txt{
            display:table-cell;
            vertical-align: middle;
            padding-left:20px;
            font-size:0.8em;
        }

效果图:

在这里插入图片描述

example3:动态评论的两栏布局

    <div id="wrapper">
        <div id="master-img">
            <img src="timg2.jpg" class="head-portrait"/>
        </div>
        <div id="master-content">
            <p id="author">
                <span class="light-txt">孤独的根号三</span>
            </p>
            <p id="sentence">
                如果下一秒的我已经不是上一秒的我,那么我......还是我吗?
            </p>
            <p id="info">
                评论(2)-转载-赞-浏览-<span class="light-txt">5月9日12:13</span>
            </p>
            <div class="observer-wrapper">
                <div class="observer-img">
                    <img src="timg3.jpg"  class="head-portrait"/>
                </div>
                <div class="observer-text">
                    <p><span class="light-txt">binbing:</span><span>那我还是你爸爸吗</span></p>
                    <p><span class="light-txt">5月9日12:20</span></p>
                </div>
            </div>
            <div class="observer-wrapper">
                <div class="observer-img">
                    <img src="timg4.jpg"  class="head-portrait"/>
                </div>
                <div class="observer-text">
                    <p><span class="light-txt">大人:</span><span>你还是我儿子 这个不会变</span></p>
                    <p><span class="light-txt">5月9日13:20</span></p>
                </div>
            </div>
        </div>
    </div>
        *{
            padding:0;
            margin:0;
        }
        .head-portrait{
            width:40px;
            height:40px;
            border-radius:20px;
        }
        #wrapper{
            display:table-row;
        }
        #master-img{
            display:table-cell;
            text-align:center;
            vertical-align: top;
            padding-right:10px;
        }
        #master-content{
            display:table-cell;
            vertical-align: top;
            
        }
        #author{
            padding-bottom:10px;
        }
        #sentence{
            padding-bottom:10px;
        }
        #info{
            padding-bottom:20px;
        }
        .light-txt{
            color:slategray;
        }
        .observer-wrapper{
            display:table-row;
        }
        .observer-img{
            display:table-cell;
            text-align:center;
            vertical-align: top;
            padding-right:10px;
            padding-bottom:10px;
        }
        .observer-text{
            display:table-cell;
            vertical-align: top;
            padding-bottom:10px;
        }

效果截图:

在这里插入图片描述

四、总结:

table-cell的妙用:

	1.垂直居中
	
	2.自适应等高布局
	
	3.自动平均划分元素
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值