我将为你展示多种实现div居中的方法,每种方法都有其适用场景和特点。
实现思路
-
使用Flexbox布局(现代布局方案)
-
使用Grid布局(新兴的强大布局方案)
-
使用绝对定位和transform(传统但有效的方法)
-
使用绝对定位和负margin(需要知道元素尺寸)
-
使用table-cell布局(兼容性较好的传统方法)
-
使用margin:auto(简单块级元素居中)
下面是完整的实现代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Div居中方案大全</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
color: #333;
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
padding: 20px;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
h1 {
text-align: center;
margin-bottom: 30px;
color: #2c3e50;
font-size: 2.5rem;
}
.description {
text-align: center;
margin-bottom: 40px;
font-size: 1.1rem;
color: #555;
max-width: 800px;
margin-left: auto;
margin-right: auto;
}
.methods-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 25px;
margin-bottom: 40px;
}
.method {
background: white;
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
padding: 20px;
transition: transform 0.3s ease;
}
.method:hover {
transform: translateY(-5px);
}
.method-title {
font-size: 1.4rem;
color: #3498db;
margin-bottom: 15px;
text-align: center;
}
.parent {
height: 200px;
background-color: #eef2f7;
border: 2px dashed #bbb;
border-radius: 8px;
margin-bottom: 15px;
position: relative;
}
.child {
width: 100px;
height: 100px;
background: linear-gradient(45deg, #3498db, #2980b9);
border-radius: 6px;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
}
/* 1. Flexbox 方法 */
.flexbox {
display: flex;
justify-content: center;
align-items: center;
}
/* 2. Grid 方法 */
.grid {
display: grid;
place-items: center;
}
/* 3. 绝对定位 + Transform */
.absolute-transform {
position: relative;
}
.absolute-transform .child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
/* 4. 绝对定位 + 负Margin */
.absolute-negative-margin {
position: relative;
}
.absolute-negative-margin .child {
position: absolute;
top: 50%;
left: 50%;
margin-top: -50px; /* 元素高度的一半 */
margin-left: -50px; /* 元素宽度的一半 */
}
/* 5. Table-Cell 方法 */
.table-cell {
display: table;
width: 100%;
}
.table-cell .parent {
display: table-cell;
vertical-align: middle;
text-align: center;
}
.table-cell .child {
display: inline-block;
}
/* 6. Margin Auto 方法 */
.margin-auto .child {
margin: 50px auto; /* 垂直方向需要计算 */
}
.code-block {
background: #2d3e50;
color: #f8f9fa;
padding: 15px;
border-radius: 6px;
font-family: 'Fira Code', monospace;
font-size: 0.9rem;
overflow-x: auto;
margin-top: 15px;
}
.pros-cons {
margin-top: 15px;
padding: 10px;
background: #f8f9fa;
border-radius: 6px;
font-size: 0.9rem;
}
.pros {
color: #27ae60;
}
.cons {
color: #e74c3c;
}
.footer {
text-align: center;
margin-top: 40px;
color: #7f8c8d;
}
@media (max-width: 768px) {
.methods-container {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<div class="container">
<h1>多种方式实现Div居中</h1>
<p class="description">在Web开发中,实现元素的居中是一个常见需求。下面展示了6种不同的方法来实现div的水平和垂直居中,每种方法都有其适用场景和优缺点。</p>
<div class="methods-container">
<!-- 方法1: Flexbox -->
<div class="method">
<h2 class="method-title">1. Flexbox 布局</h2>
<div class="parent flexbox">
<div class="child">Flexbox</div>
</div>
<div class="code-block">
.parent {<br>
display: flex;<br>
justify-content: center;<br>
align-items: center;<br>
}
</div>
<div class="pros-cons">
<span class="pros">✓ 现代布局方案,简单灵活</span><br>
<span class="pros">✓ 内容动态大小时也能正常工作</span><br>
<span class="cons">✗ 兼容性:IE10+</span>
</div>
</div>
<!-- 方法2: Grid -->
<div class="method">
<h2 class="method-title">2. Grid 布局</h2>
<div class="parent grid">
<div class="child">Grid</div>
</div>
<div class="code-block">
.parent {<br>
display: grid;<br>
place-items: center;<br>
}
</div>
<div class="pros-cons">
<span class="pros">✓ 代码简洁,二维布局能力强</span><br>
<span class="cons">✗ 兼容性:IE不支持,现代浏览器支持良好</span>
</div>
</div>
<!-- 方法3: 绝对定位 + Transform -->
<div class="method">
<h2 class="method-title">3. 绝对定位 + Transform</h2>
<div class="parent absolute-transform">
<div class="child">Transform</div>
</div>
<div class="code-block">
.parent {<br>
position: relative;<br>
}<br>
.child {<br>
position: absolute;<br>
top: 50%;<br>
left: 50%;<br>
transform: translate(-50%, -50%);<br>
}
</div>
<div class="pros-cons">
<span class="pros">✓ 不需要知道元素尺寸</span><br>
<span class="pros">✓ 兼容性较好</span><br>
<span class="cons">✗ 绝对定位可能影响文档流</span>
</div>
</div>
<!-- 方法4: 绝对定位 + 负Margin -->
<div class="method">
<h2 class="method-title">4. 绝对定位 + 负Margin</h2>
<div class="parent absolute-negative-margin">
<div class="child">负Margin</div>
</div>
<div class="code-block">
.parent {<br>
position: relative;<br>
}<br>
.child {<br>
position: absolute;<br>
top: 50%;<br>
left: 50%;<br>
margin-top: -50px; /* 元素高度的一半 */<br>
margin-left: -50px; /* 元素宽度的一半 */<br>
}
</div>
<div class="pros-cons">
<span class="pros">✓ 兼容性好(包括旧版浏览器)</span><br>
<span class="cons">✗ 需要知道元素的尺寸</span><br>
<span class="cons">✗ 内容变化时需要调整margin</span>
</div>
</div>
<!-- 方法5: Table-Cell -->
<div class="method">
<h2 class="method-title">5. Table-Cell 布局</h2>
<div class="table-cell">
<div class="parent">
<div class="child">Table-Cell</div>
</div>
</div>
<div class="code-block">
.parent {<br>
display: table-cell;<br>
vertical-align: middle;<br>
text-align: center;<br>
}<br>
.child {<br>
display: inline-block;<br>
}
</div>
<div class="pros-cons">
<span class="pros">✓ 兼容性非常好(包括IE8+)</span><br>
<span class="cons">✗ 需要额外的标记或样式</span><br>
<span class="cons">✗ 不是为布局设计的语义化方案</span>
</div>
</div>
<!-- 方法6: Margin Auto -->
<div class="method">
<h2 class="method-title">6. Margin Auto (需要计算)</h2>
<div class="parent margin-auto">
<div class="child">Margin Auto</div>
</div>
<div class="code-block">
/* 水平居中 */<br>
.child {<br>
margin: 0 auto;<br>
}<br>
/* 垂直居中需要计算上方margin */<br>
.child {<br>
margin: 50px auto;<br>
}
</div>
<div class="pros-cons">
<span class="pros">✓ 简单块级元素水平居中</span><br>
<span class="cons">✗ 垂直居中需要计算,不灵活</span><br>
<span class="cons">✗ 内容变化时需要重新计算</span>
</div>
</div>
</div>
<div class="footer">
<p>在实际项目中,推荐优先使用Flexbox或Grid布局实现居中,它们更灵活且符合现代Web标准。</p>
<p>© 2025 Div居中方案演示</p>
</div>
</div>
</body>
</html>
运行效果如下:
各种方法的特点总结
-
Flexbox布局 - 现代、灵活,适合大多数场景
-
Grid布局 - 代码简洁,适合复杂二维布局
-
绝对定位+Transform - 兼容性好,不需要知道元素尺寸
-
绝对定位+负Margin - 兼容性最好,但需要知道元素尺寸
-
Table-Cell布局 - 兼容旧浏览器,但不符合语义化
-
Margin Auto - 只适合简单水平居中,垂直居中需要计算
使用建议
-
现代项目:优先使用Flexbox或Grid
-
需要兼容旧浏览器:考虑绝对定位+Transform或Table-Cell方法
-
已知元素尺寸:可以使用绝对定位+负Margin方法
你可以直接将上述代码复制到HTML文件中运行,查看各种居中效果。
再提供一个运行效果如下:
代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>六种方式实现Div居中布局</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background: linear-gradient(135deg, #1a2a6c, #b21f1f, #fdbb2d);
color: #333;
min-height: 100vh;
padding: 20px;
}
.container {
max-width: 1200px;
margin: 0 auto;
}
header {
text-align: center;
padding: 30px 0;
color: white;
text-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
header h1 {
font-size: 2.8rem;
margin-bottom: 10px;
}
header p {
font-size: 1.2rem;
max-width: 800px;
margin: 0 auto;
line-height: 1.6;
}
.content {
display: flex;
gap: 30px;
margin-top: 20px;
}
.methods-nav {
flex: 0 0 250px;
background: rgba(255, 255, 255, 0.9);
border-radius: 15px;
padding: 20px;
box-shadow: 0 10px 30px rgba(0,0,0,0.2);
}
.methods-nav h2 {
font-size: 1.5rem;
margin-bottom: 20px;
color: #1a2a6c;
text-align: center;
padding-bottom: 10px;
border-bottom: 2px solid #fdbb2d;
}
.method-list {
list-style: none;
}
.method-item {
padding: 15px;
margin-bottom: 10px;
border-radius: 10px;
cursor: pointer;
transition: all 0.3s ease;
font-weight: 500;
background: #f8f9fa;
}
.method-item:hover {
background: #e9ecef;
transform: translateX(5px);
}
.method-item.active {
background: #1a2a6c;
color: white;
}
.demo-area {
flex: 1;
background: rgba(255, 255, 255, 0.9);
border-radius: 15px;
padding: 30px;
box-shadow: 0 10px 30px rgba(0,0,0,0.2);
}
.demo-container {
height: 400px;
background: #e9ecef;
border-radius: 10px;
margin-bottom: 30px;
position: relative;
overflow: hidden;
border: 2px dashed #6c757d;
}
.parent {
width: 100%;
height: 100%;
position: relative;
background: linear-gradient(45deg, #f8f9fa, #e9ecef);
}
.child {
width: 200px;
height: 150px;
background: linear-gradient(135deg, #ff9a9e, #fad0c4);
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
color: #333;
font-weight: bold;
font-size: 1.2rem;
box-shadow: 0 5px 15px rgba(0,0,0,0.1);
text-align: center;
padding: 15px;
}
.child-inner{
line-height:normal;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
.code-container {
background: #2d3748;
color: #cbd5e0;
border-radius: 10px;
padding: 20px;
font-family: 'Consolas', monospace;
font-size: 1rem;
line-height: 1.6;
overflow-x: auto;
}
.code-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
color: #fdbb2d;
}
.method-title {
font-size: 1.5rem;
font-weight: 600;
}
.method-desc {
margin: 20px 0;
line-height: 1.6;
background: #f8f9fa;
padding: 15px;
border-radius: 8px;
border-left: 4px solid #1a2a6c;
}
.code-keyword {
color: #63b3ed;
}
.code-selector {
color: #f6ad55;
}
.code-property {
color: #68d391;
}
.code-value {
color: #f6e05e;
}
.code-comment {
color: #a0aec0;
}
.pros-cons {
display: flex;
gap: 20px;
margin-top: 20px;
}
.pros, .cons {
flex: 1;
padding: 15px;
border-radius: 8px;
}
.pros {
background: rgba(104, 211, 145, 0.15);
border-left: 4px solid #68d391;
}
.cons {
background: rgba(245, 101, 101, 0.15);
border-left: 4px solid #f56565;
}
.pros h3, .cons h3 {
margin-bottom: 10px;
display: flex;
align-items: center;
}
.pros h3::before {
content: "✓";
margin-right: 8px;
color: #68d391;
}
.cons h3::before {
content: "⚠";
margin-right: 8px;
color: #f56565;
}
.pros ul, .cons ul {
padding-left: 20px;
}
.pros li, .cons li {
margin-bottom: 8px;
}
@media (max-width: 768px) {
.content {
flex-direction: column;
}
.methods-nav {
flex: 0 0 auto;
margin-bottom: 20px;
}
}
</style>
</head>
<body>
<div class="container">
<header>
<h1>六种方式实现Div居中布局</h1>
<p>探索CSS中实现元素水平和垂直居中的多种方法,每种方法都有其适用场景和特点</p>
</header>
<div class="content">
<nav class="methods-nav">
<h2>居中方案</h2>
<ul class="method-list">
<li class="method-item active" data-method="flex">Flexbox 布局</li>
<li class="method-item" data-method="grid">Grid 布局</li>
<li class="method-item" data-method="transform">Transform 变换</li>
<li class="method-item" data-method="margin">负Margin法</li>
<li class="method-item" data-method="table">表格布局</li>
<li class="method-item" data-method="line-height">行高法</li>
</ul>
</nav>
<main class="demo-area">
<div class="method-title">Flexbox 布局</div>
<div class="method-desc">
Flexbox 是现代CSS布局的首选方案之一,通过 justify-content 和 align-items 属性可以轻松实现居中效果。
</div>
<div class="demo-container">
<div class="parent" id="demo-parent">
<div class="child">我是居中的元素<br>使用Flexbox实现</div>
</div>
</div>
<div class="code-container">
<div class="code-header">
<span>CSS 代码</span>
</div>
<pre><code><span class="code-selector">.parent</span> {
<span class="code-keyword">display</span>: <span class="code-value">flex</span>;
<span class="code-keyword">justify-content</span>: <span class="code-value">center</span>; <span class="code-comment">/* 水平居中 */</span>
<span class="code-keyword">align-items</span>: <span class="code-value">center</span>; <span class="code-comment">/* 垂直居中 */</span>
}
<span class="code-selector">.child</span> {
<span class="code-comment">/* 子元素不需要特殊样式 */</span>
}</code></pre>
</div>
<div class="pros-cons">
<div class="pros">
<h3>优点</h3>
<ul>
<li>代码简洁,易于理解</li>
<li>响应式布局友好</li>
<li>现代浏览器广泛支持</li>
<li>不需要知道子元素尺寸</li>
</ul>
</div>
<div class="cons">
<h3>缺点</h3>
<ul>
<li>IE10及以下不支持</li>
<li>在某些旧移动浏览器中可能需要前缀</li>
</ul>
</div>
</div>
</main>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const methods = document.querySelectorAll('.method-item');
const demoParent = document.getElementById('demo-parent');
const methodTitle = document.querySelector('.method-title');
const methodDesc = document.querySelector('.method-desc');
const codeContainer = document.querySelector('.code-container pre code');
const methodData = {
flex: {
title: "Flexbox 布局",
desc: "Flexbox 是现代CSS布局的首选方案之一,通过 justify-content 和 align-items 属性可以轻松实现居中效果。",
css: `<span class="code-selector">.parent</span> {
<span class="code-keyword">display</span>: <span class="code-value">flex</span>;
<span class="code-keyword">justify-content</span>: <span class="code-value">center</span>; <span class="code-comment">/* 水平居中 */</span>
<span class="code-keyword">align-items</span>: <span class="code-value">center</span>; <span class="code-comment">/* 垂直居中 */</span>
}
<span class="code-selector">.child</span> {
<span class="code-comment">/* 子元素不需要特殊样式 */</span>
}`,
style: function() {
demoParent.style.display = 'flex';
demoParent.style.justifyContent = 'center';
demoParent.style.alignItems = 'center';
},
pros: [
"代码简洁,易于理解",
"响应式布局友好",
"现代浏览器广泛支持",
"不需要知道子元素尺寸"
],
cons: [
"IE10及以下不支持",
"在某些旧移动浏览器中可能需要前缀"
]
},
grid: {
title: "Grid 布局",
desc: "CSS Grid 是另一种现代布局方案,通过 place-items 属性可以轻松实现居中效果。",
css: `<span class="code-selector">.parent</span> {
<span class="code-keyword">display</span>: <span class="code-value">grid</span>;
<span class="code-keyword">place-items</span>: <span class="code-value">center</span>; <span class="code-comment">/* 同时设置水平和垂直居中 */</span>
}
<span class="code-selector">.child</span> {
<span class="code-comment">/* 子元素不需要特殊样式 */</span>
}`,
style: function() {
demoParent.style.display = 'grid';
demoParent.style.placeItems = 'center';
},
pros: [
"代码极其简洁(一行解决)",
"二维布局能力强大",
"现代浏览器广泛支持",
"不需要知道子元素尺寸"
],
cons: [
"IE完全不支持",
"移动端支持不如Flexbox广泛"
]
},
transform: {
title: "Transform 变换",
desc: "使用绝对定位结合 transform 属性实现居中,不需要知道元素的具体尺寸。",
css: `<span class="code-selector">.parent</span> {
<span class="code-keyword">position</span>: <span class="code-value">relative</span>;
}
<span class="code-selector">.child</span> {
<span class="code-keyword">position</span>: <span class="code-value">absolute</span>;
<span class="code-keyword">top</span>: <span class="code-value">50%</span>;
<span class="code-keyword">left</span>: <span class="code-value">50%</span>;
<span class="code-keyword">transform</span>: <span class="code-value">translate(-50%, -50%)</span>;
}`,
style: function() {
demoParent.style.display = 'block';
demoParent.style.position = 'relative';
const child = demoParent.querySelector('.child');
child.style.position = 'absolute';
child.style.top = '50%';
child.style.left = '50%';
child.style.transform = 'translate(-50%, -50%)';
},
pros: [
"不需要知道元素尺寸",
"兼容性较好(IE9+)",
"适用于各种尺寸元素",
"不会影响其他布局"
],
cons: [
"使用绝对定位,脱离文档流",
"transform可能影响其他变换效果",
"在旧版浏览器中可能需要前缀"
]
},
margin: {
title: "负Margin法",
desc: "传统居中方法,需要知道子元素的具体尺寸,通过负margin实现居中。",
css: `<span class="code-selector">.parent</span> {
<span class="code-keyword">position</span>: <span class="code-value">relative</span>;
}
<span class="code-selector">.child</span> {
<span class="code-keyword">position</span>: <span class="code-value">absolute</span>;
<span class="code-keyword">top</span>: <span class="code-value">50%</span>;
<span class="code-keyword">left</span>: <span class="code-value">50%</span>;
<span class="code-keyword">width</span>: <span class="code-value">200px</span>; <span class="code-comment">/* 需要指定宽度 */</span>
<span class="code-keyword">height</span>: <span class="code-value">150px</span>; <span class="code-comment">/* 需要指定高度 */</span>
<span class="code-keyword">margin-top</span>: <span class="code-value">-75px</span>; <span class="code-comment">/* 高度的一半 */</span>
<span class="code-keyword">margin-left</span>: <span class="code-value">-100px</span>; <span class="code-comment">/* 宽度的一半 */</span>
}`,
style: function() {
demoParent.style.display = 'block';
demoParent.style.position = 'relative';
const child = demoParent.querySelector('.child');
child.style.position = 'absolute';
child.style.top = '50%';
child.style.left = '50%';
child.style.marginTop = '-75px';
child.style.marginLeft = '-100px';
},
pros: [
"兼容性非常好(IE6+)",
"实现原理直观易懂",
"不需要CSS3支持"
],
cons: [
"需要知道子元素的具体尺寸",
"尺寸改变时需要同步修改margin值",
"使用绝对定位,脱离文档流"
]
},
table: {
title: "表格布局",
desc: "使用表格的 vertical-align 属性实现居中,是一种较传统的居中方法。",
css: `<span class="code-selector">.parent</span> {
<span class="code-keyword">display</span>: <span class="code-value">table-cell</span>;
<span class="code-keyword">text-align</span>: <span class="code-value">center</span>; <span class="code-comment">/* 水平居中 */</span>
<span class="code-keyword">vertical-align</span>: <span class="code-value">middle</span>; <span class="code-comment">/* 垂直居中 */</span>
}
<span class="code-selector">.child</span> {
<span class="code-keyword">display</span>: <span class="code-value">inline-block</span>;
}`,
style: function() {
demoParent.parentNode.style.display = "table";
demoParent.parentNode.style.width = "100%";
demoParent.style.display = 'table-cell';
demoParent.style.textAlign = 'center';
demoParent.style.verticalAlign = 'middle';
const child = demoParent.querySelector('.child');
child.style.display = 'inline-block';
},
pros: [
"兼容性好(IE8+)",
"不需要知道元素尺寸",
"实现相对简单"
],
cons: [
"需要将父元素设置为table-cell",
"可能影响其他布局",
"不是语义化的表格使用"
]
},
"line-height": {
title: "行高法",
desc: "适用于单行文本或行内元素的简单居中方法,通过设置行高等于容器高度实现垂直居中。",
css: `<span class="code-selector">.parent</span> {
<span class="code-keyword">text-align</span>: <span class="code-value">center</span>; <span class="code-comment">/* 水平居中 */</span>
}
<span class="code-selector">.child</span> {
<span class="code-keyword">display</span>: <span class="code-value">inline-block</span>;
<span class="code-keyword">line-height</span>: <span class="code-value">400px</span>; <span class="code-comment">/* 等于父容器高度 */</span>
<span class="code-keyword">vertical-align</span>: <span class="code-value">middle</span>;
}
<span class="code-comment">/* 如果内部有文本,需要额外元素 */</span>
<span class="code-selector">.child-inner</span> {
<span class="code-keyword">line-height</span>: <span class="code-value">normal</span>;
<span class="code-keyword">display</span>: <span class="code-value">inline-block</span>;
<span class="code-keyword">vertical-align</span>: <span class="code-value">middle</span>;
}`,
style: function() {
demoParent.style.display = 'block';
demoParent.style.textAlign = 'center';
demoParent.style.lineHeight = '400px';
const child = demoParent.querySelector('.child');
child.style.display = 'inline-block';
child.style.lineHeight = '400px';
child.style.verticalAlign = 'middle';
child.innerHTML = '<div class="child-inner">我是居中的元素<br>使用行高法实现</div>';
},
pros: [
"实现简单",
"兼容性非常好",
"适用于单行文本"
],
cons: [
"需要知道父容器高度",
"多行文本需要额外处理",
"不适用于块级元素",
"容器高度变化时需要调整"
]
}
};
// 初始化默认方案
applyMethod('flex');
// 添加事件监听
methods.forEach(method => {
method.addEventListener('click', function() {
methods.forEach(m => m.classList.remove('active'));
this.classList.add('active');
const methodName = this.getAttribute('data-method');
applyMethod(methodName);
});
});
// 应用居中方法
function applyMethod(methodName) {
const method = methodData[methodName];
// 重置样式
demoParent.style = '';
demoParent.parentNode.style = '';
const child = demoParent.querySelector('.child');
child.style = '';
child.innerHTML = methodName === 'line-height'
? "我是居中的元素<br>使用行高法实现"
: "我是居中的元素<br>使用" + method.title + "实现";
// 应用新样式
method.style();
// 更新内容
methodTitle.textContent = method.title;
methodDesc.textContent = method.desc;
codeContainer.innerHTML = method.css;
// 更新优缺点
const prosList = document.querySelector('.pros ul');
const consList = document.querySelector('.cons ul');
prosList.innerHTML = method.pros.map(p => `<li>${p}</li>`).join('');
consList.innerHTML = method.cons.map(c => `<li>${c}</li>`).join('');
}
});
</script>
</body>
</html>
自己运行看看效果,行胜于言,慢慢积累,终有所成。