1022 作业
实例演示列间隙的二种设置方案,并比较异同
第一种方式
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.box {
background-color: lightgreen;
font-size: 1.2em;
}
.box .left {
float: left;
width: 50%;
background-color: lightsalmon;
margin-right: 5%;
height: 10em;
}
.box .right {
float: left;
width: 45%;
background-color: lightsteelblue;
height: 10em;
}
</style>
</head>
<body>
<div class="box">
<div class="left">这是左边</div>
<div class="right">这是右边</div>
</div>
</body>
</html>
总结:左右浮动,间隙为 5%。
第二种方式
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.box {
background-color: lightgreen;
font-size: 1.2em;
}
.box .left {
float: left;
width: 50%;
background-color: lightsalmon;
margin-right: 1em;
height: 10em;
}
.box .right {
float: left;
width: calc(50% - 1em);
/* 注意符号前后要有空格,不然效果不实现 */
background-color: lightsteelblue;
height: 10em;
}
</style>
</head>
<body>
<div class="box">
<div class="left">这是左边</div>
<div class="right">这是右边</div>
</div>
</body>
</html>
总结:左右浮动,间隙为 1em。
比较相同:
- 两种方式都是使用浮动来进行左右排列
- 宽度都是使用固定的百分比来实现
- 间隙都是通过 margin 来撑开的
比较不同:
- 第一个间隙是视口的 5%,随着视口的的变化而变化,视口变化过大会有很大差异。
- 第二个间隙是 1em,随着当前元素字体大小的变化而变化,不会因为视口的变化而改变。
参考课堂案例,自己实现一个等高列的案例(不得抄源码)
设置等高列的第一种方式
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
margin: 0;
padding: 0;
}
.box {
background-color: mediumaquamarine;
font-size: 1.2em;
display: table;
/* 将当前的容器改成table表格 */
width: 100%;
/* 将宽度设置为100% */
/* 因为表格宽度由内容决定,所以要用100%撑开 */
border-spacing: 1em 0;
/* 给两个列之间给个列间隙 */
/* 列间隙为左右1.5em,上下0 */
}
.box .left {
display: table-cell;
/* 将两个列都转为单元格元素 */
background-color: lightsalmon;
}
.box .right {
display: table-cell;
/* 将列转为单元格元素 */
background-color: lightsteelblue;
}
/* 等高列效果实现 */
/* 但是现在还存在一个问题:表格除了中间有间隙之外,最左侧和最右侧也存在间隙 */
/* 那么需要通过给box容器外面再套一个容器*/
.big {
margin: 0 -1em;
/* 给一个上下为0,左右为-1em的外边距 */
}
/* 通过margin给左右两边的间隙拉回到 0 */
</style>
</head>
<body>
<div class="big">
<div class="box">
<div class="left">
这是左边<br />这是左边<br />这是左边<br />
这是左边<br />这是左边<br />这是左边<br />
</div>
<div class="right">这是右边</div>
</div>
</div>
</body>
</html>