display:table

CSS display:table 属性详解
本文详细介绍了CSS中的display:table属性及其相关值,展示了如何利用这些属性创建灵活的表格布局,包括实现块级标签的行内效果、垂直居中等内容。

      display:table的CSS声明能够让一个HTML元素和它的子节点像table元素一样。使用基于表格的CSS布局,使我们能够轻松定义一个单元格的边界、背景等样式,而不会产生因为使用了table那样的制表标签所导致的语义化问题。

  以下是display:的相关属性值:

table(类似 <table>)此元素会作为块级表格来显示,表格前后带有换行符。
inline-table(类似 <table>)此元素会作为内联表格来显示,表格前后没有换行符。
table-row-group(类似 <tbody>)此元素会作为一个或多个行的分组来显示。
table-header-group(类似 <thead>)此元素会作为一个或多个行的分组来显示。
table-footer-group(类似 <tfoot>)此元素会作为一个或多个行的分组来显示。
table-row(类似 <tr>)此元素会作为一个表格行显示。
table-column-group(类似 <colgroup>)此元素会作为一个或多个列的分组来显示。
table-column(类似 <col>)此元素会作为一个单元格列显示。
table-cell(类似 <td> 和 <th>)此元素会作为一个表格单元格显示。
table-caption(类似 <caption>)此元素会作为一个表格标题显示。

  display:table

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>display: table</title>
</head>
<body>

<style type="text/css" rel="stylesheet">
    .table {
        display: table;
        border: 1px solid red;
        margin: 5px;
        /*display: table时padding会失效*/
    }
    .row {
        display: table-row;
        border: 1px solid #000;
        /*display: table-row时margin、padding同时失效*/
    }
    .cell {
        display: table-cell;
        border: 1px solid yellow;
        padding: 5px;
        /*display: table-cell时margin会失效*/
    }
</style>
<div class="table">
    <div class="row">
        <div class="cell">您好</div>
        <div class="cell">世界</div>
        <div class="cell">!!</div>
    </div>
    <div class="row">
        <div class="cell">您好</div>
        <div class="cell">世界</div>
        <div class="cell">!!</div>
    </div>
</div>
</body>
</html>

1、让块级标签实现行内效果,即浮动至同一横轴

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>display:table实现浮动效果</title>
</head>
<body>

<style type="text/css" rel="stylesheet">
    .table {
        display: table;
        margin: 5px;
        width: 1000px;
    }
    .row {
        display: table-row;
    }
    .cell {
        display: table-cell;
        padding: 10px;
    }
</style>
<div class="table">
    <div class="row">
        <div class="cell">努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力</div>
        <div class="cell">努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力</div>
        <div class="cell">努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力</div>
    </div>
</div>
</body>
</html>

2、实现垂直居中

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>display:table的垂直居中</title>
</head>
<body>

<style type="text/css" rel="stylesheet">
    .table {
        display: table;
        margin: 5px;
        width: 500px;
        height: 300px;
        background-color: #ccc;
    }

    .cell {
        display: table-cell;
        padding: 10px;
        vertical-align: middle;/*该属性是定义行内元素垂直对齐的,只有行内元素会生效。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。*/
    }
</style>
<div class="table">
        <div class="cell">努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力努力</div>
</div>
</body>
</html>

 

  

转载于:https://www.cnblogs.com/zhangyanxia/p/4784856.html

### CSS `display: table` 布局使用及其常见问题 #### 使用场景 当希望创建表格样式的布局而不实际使用 `<table>` 元素时,可以采用 `display: table` 属性。此属性允许开发者利用 HTML 的其他标签来构建具有表格特性的结构化内容[^1]。 ```css /* 定义父级容器为表格 */ .parent { display: table; } /* 子元素作为行处理 */ .row { display: table-row; } /* 单元格定义 */ .cell { display: table-cell; } ``` #### 关键特性 - **自动宽度分配**:单元格会根据其内容自适应调整大小。 - **垂直居中对齐**:通过设置 `vertical-align: middle;` 可轻松实现子项在父容器内的垂直中心位置[^2]。 #### 遇到的问题及解决方案 ##### 表格高度控制困难 由于浏览器默认行为会使整个表格的高度尽可能小以容纳所有内容,在某些情况下这可能不是预期效果。可以通过显式指定最小最大高度或固定高度的方式来克服这个问题: ```css .table-container { min-height: 100px; max-height: 300px; height: auto !important; /* 如果需要覆盖内联样式 */ } ``` ##### 浏览器兼容性和渲染差异 不同版本的 WebKit 和 Blink 引擎对于 `display: table` 的解析存在细微差别,尤其是在较旧版本上可能出现不一致的表现形式。建议测试多个主流平台并考虑降级方案或备用样式[^4]。 ##### Z-index 设置失效 如果遇到层叠上下文中的层级关系异常情况,比如试图改变数据表单内部组件的堆叠顺序却失败了,则可能是由 `position` 属性缺失引起。确保目标对象拥有定位属性(如 relative, absolute 或 fixed),以便能够正常应用 z-index 参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值