<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flex布局示例</title>
<style>
.container {
display: flex;
justify-content:space-around;
align-items: center;
height: 300px;
border: 2px solid #333;
flex-direction:row;
flex-wrap: nowrap;
}
.item {
width: 200px;
height: 100px;
background-color: #f0f0f0;
border: 1px solid #ccc;
display: flex;
justify-content:center;
align-items: center;
font-size: 20px;
}
</style>
</head>
<body>
<section class="container-section">
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
<h2>Flex布局应用场景</h2>
<p>Flex布局适用于需要在不同屏幕尺寸上保持良好布局的场景,例如:</p>
<ul>
<li>响应式设计:在不同设备上自动调整元素的排列方式。</li>
<li>导航栏:创建水平或垂直的导航菜单。</li>
<li>卡片布局:在页面上均匀分布卡片元素。</li>
</ul>
<h2>Flex布局优缺点</h2>
<h3>优点</h3>
<ul>
<li>简化布局代码:无需使用浮动或定位来实现复杂的布局。</li>
<li>自动调整大小:子元素可以根据容器大小自动调整。</li>
<li>对齐方式灵活:可以轻松控制子元素的对齐方式。</li>
</ul>
<h3>缺点</h3>
<ul>
<li>浏览器兼容性:虽然现代浏览器普遍支持Flexbox,但旧版浏览器可能存在兼容性问题。</li>
<li>学习曲线:对于不熟悉Flexbox的开发者,需要一些时间来掌握其工作原理。</li>
<li>复杂布局限制:对于非常复杂的布局,Flexbox可能不如Grid布局灵活。</li>
</ul>
</section>
<h1>响应式布局demo如下</h1>
<section class="container-responsive">
<style>
.responsive-container {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
border: 2px solid #333;
padding: 10px;
}
.responsive-item {
width: calc(25% - 40px);
margin: 10px;
background-color: #f0f0f0;
border: 1px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
font-size: 20px;
}
@media (max-width: 960px) {
.responsive-item {
width: calc(50% - 40px);
}
}
@media (max-width: 480px) {
.responsive-item {
width: 100%;
}
}
</style>
<div class="responsive-container">
<div class="responsive-item">responsive Item 1</div>
<div class="responsive-item">responsive Item 2</div>
<div class="responsive-item">responsive Item 3</div>
<div class="responsive-item">responsive Item 4</div>
</div>
</section>
<h1>导航栏demo如下</h1>
<selection class="nav">
<style>
.navbar {
display: flex;
justify-content: space-around;
background-color: #333;
padding: 10px;
}
.nav-item {
color: white;
font-size: 18px;
cursor: pointer;
}
.nav-item:hover {
color: #ffcc00;
}
</style>
<nav class="navbar">
<div class="nav-item">Home</div>
<div class="nav-item">About</div>
<div class="nav-item">Services</div>
<div class="nav-item">Contact</div>
</nav>
</selection>
<h1>卡片布局demo如下</h1>
<section class="card">
<style>
.card-container {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
padding: 10px;
}
.card {
width: calc(33.333% - 20px);
margin: 10px;
background-color: #f0f0f0;
border: 1px solid #ccc;
padding: 20px;
box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.1);
}
.card h3 {
margin-top: 0;
}
.card p {
margin-bottom: 0;
}
</style>
<div class="card-container">
<div class="card">
<h3>Card 1</h3>
<p>This is the content of card 1.</p>
</div>
<div class="card">
<h3>Card 2</h3>
<p>This is the content of card 2.</p>
</div>
<div class="card">
<h3>Card 3</h3>
<p>This is the content of card 3.</p>
</div>
</div>
</section>
</body>
</html>