带显示的 div:table-列的大小为 0
divs with display: table-column have size=0
我正在尝试创建与此类似的内容:
我尝试了以下代码,但什么也没看到:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
* {
margin: 0;
}
#table {
width: 100%;
height: 100%;
display: table;
}
#left {
width: 30%;
height: 100%;
display: table-column;
}
#right {
width: 70%;
height: 100%;
display: table-column;
}
#left_1, #left_2, #left_3, #right_1 {
display: table-cell;
text-align: center;
vertical-align: middle;
}
#left_1 {
background-color: green;
height: 40%;
}
#left_2 {
background-color: red;
height: 30%;
}
#left_3 {
background-color: lightgray;
height: 30%;
}
#right_1 {
background-color: black;
color: white;
height: 100%;
}
</style>
</head>
<body>
<div id="table">
<div id="left">
<div id="left_1">left_1</div>
<div id="left_2">left_2</div>
<div id="left_3">left_3</div>
</div>
<div id="right">
<div id="right_1">right_1</div>
</div>
</div>
</body>
</html>
我能够成功使用 table-row
,但我无法让 table-column
工作。我做错了什么?
+1 致 Michael Coker,但这是另一种可能性。
* {
margin: 0;
}
body,
html {
height: 100%;
}
#table {
width: 100%;
max-height: 250px;
height: 100%;
display: block;
position: relative;
}
#left {
width: 30%;
height: 100%;
display: table;
float: left;
}
#right {
width: 70%;
height: 100%;
display: table;
float: left;
}
.row { display: table-row; }
#left_1,
#left_2,
#left_3,
#right_1 {
width: 100%;
display: table-cell;
text-align: center;
vertical-align: middle;
}
#left_1 {
background-color: green;
height: 40%;
}
#left_2 {
background-color: red;
height: 30%;
}
#left_3 {
background-color: lightgray;
height: 30%;
}
#right_1 {
background-color: black;
color: white;
height: 100%;
}
<div id="table">
<div id="left">
<div class="row">
<div id="left_1">left_1</div>
</div>
<div class="row">
<div id="left_2">left_2</div>
</div>
<div class="row">
<div id="left_3">left_3</div>
</div>
</div>
<div id="right">
<div class="row">
<div id="right_1">right_1</div>
</div>
</div>
</div>
注意:我希望这不是针对响应式网站...
你可以用flexbox得到它。
CSS
中需要的更改
#table {
display: flex;
}
#left, #right {
flex: 1;
display: flex;
flex-direction: column;
}
#left_1, #left_2, #left_3, #right_1 {
display: flex;
align-items: center;
justify-content: center;
}
更新了 jsfiddle 演示:https://jsfiddle.net/1mew6hqj/2/
Check this guide 了解 flexbox 的工作原理。
我正在尝试创建与此类似的内容:
我尝试了以下代码,但什么也没看到:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
* {
margin: 0;
}
#table {
width: 100%;
height: 100%;
display: table;
}
#left {
width: 30%;
height: 100%;
display: table-column;
}
#right {
width: 70%;
height: 100%;
display: table-column;
}
#left_1, #left_2, #left_3, #right_1 {
display: table-cell;
text-align: center;
vertical-align: middle;
}
#left_1 {
background-color: green;
height: 40%;
}
#left_2 {
background-color: red;
height: 30%;
}
#left_3 {
background-color: lightgray;
height: 30%;
}
#right_1 {
background-color: black;
color: white;
height: 100%;
}
</style>
</head>
<body>
<div id="table">
<div id="left">
<div id="left_1">left_1</div>
<div id="left_2">left_2</div>
<div id="left_3">left_3</div>
</div>
<div id="right">
<div id="right_1">right_1</div>
</div>
</div>
</body>
</html>
我能够成功使用 table-row
,但我无法让 table-column
工作。我做错了什么?
+1 致 Michael Coker,但这是另一种可能性。
* {
margin: 0;
}
body,
html {
height: 100%;
}
#table {
width: 100%;
max-height: 250px;
height: 100%;
display: block;
position: relative;
}
#left {
width: 30%;
height: 100%;
display: table;
float: left;
}
#right {
width: 70%;
height: 100%;
display: table;
float: left;
}
.row { display: table-row; }
#left_1,
#left_2,
#left_3,
#right_1 {
width: 100%;
display: table-cell;
text-align: center;
vertical-align: middle;
}
#left_1 {
background-color: green;
height: 40%;
}
#left_2 {
background-color: red;
height: 30%;
}
#left_3 {
background-color: lightgray;
height: 30%;
}
#right_1 {
background-color: black;
color: white;
height: 100%;
}
<div id="table">
<div id="left">
<div class="row">
<div id="left_1">left_1</div>
</div>
<div class="row">
<div id="left_2">left_2</div>
</div>
<div class="row">
<div id="left_3">left_3</div>
</div>
</div>
<div id="right">
<div class="row">
<div id="right_1">right_1</div>
</div>
</div>
</div>
注意:我希望这不是针对响应式网站...
你可以用flexbox得到它。
CSS
中需要的更改#table {
display: flex;
}
#left, #right {
flex: 1;
display: flex;
flex-direction: column;
}
#left_1, #left_2, #left_3, #right_1 {
display: flex;
align-items: center;
justify-content: center;
}
更新了 jsfiddle 演示:https://jsfiddle.net/1mew6hqj/2/
Check this guide 了解 flexbox 的工作原理。