面试题答案
一键面试Flexbox布局实现三列布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.container {
display: flex;
}
.left,
.right {
width: 200px;
background-color: lightblue;
}
.middle {
flex: 1;
background-color: lightgreen;
}
</style>
</head>
<body>
<div class="container">
<div class="left">Left</div>
<div class="middle">Middle</div>
<div class="right">Right</div>
</div>
</body>
</html>
Grid布局实现三列布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.container {
display: grid;
grid-template-columns: 200px auto 200px;
}
.left,
.right {
background-color: lightblue;
}
.middle {
background-color: lightgreen;
}
</style>
</head>
<body>
<div class="container">
<div class="left">Left</div>
<div class="middle">Middle</div>
<div class="right">Right</div>
</div>
</body>
</html>
响应式设计中切换布局方式
可以使用媒体查询(Media Queries)来根据不同屏幕尺寸切换布局方式。
- 手机屏幕(一般小于 768px):考虑到手机屏幕宽度较窄,为了更好的用户体验,可能将三列布局改为堆叠布局,即一列显示。
@media (max-width: 768px) {
.container {
display: block;
/* 或者使用flex,设置flex-direction: column */
}
.left,
.middle,
.right {
width: 100%;
}
}
- 平板屏幕(一般在 768px 到 1024px 之间):可以根据平板屏幕宽度,选择Flexbox或Grid布局,并调整列的排列方式,例如将左右列放在上下位置,中间列在中间。
@media (min-width: 768px) and (max-width: 1024px) {
.container {
display: flex;
flex-direction: column;
}
.left,
.right {
width: 100%;
}
.middle {
order: -1;
}
}
- 桌面屏幕(一般大于 1024px):保持Flexbox或Grid的三列布局方式不变。
@media (min-width: 1024px) {
/* Flexbox布局 */
.container {
display: flex;
}
.left,
.right {
width: 200px;
}
.middle {
flex: 1;
}
/* 或者Grid布局 */
.container {
display: grid;
grid-template-columns: 200px auto 200px;
}
}
这样通过媒体查询,可以根据不同设备屏幕尺寸,灵活切换布局方式,以达到最佳用户体验。