需求:
根据用户输入的个数,页面可以渲染对应王者荣耀永雄的个数。
效果如下:
思路分析:
-
渲染图片比较多,我们可以把图片地址放入数组中。
-
图片名称是有序号排列的,比如1.webp 2.webp,此处可以使用循环方式重复渲染图片。
-
渲染位置? 可以考虑放到 box 盒子里写 script 即可。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数组核心练习题</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
display: flex;
flex-wrap: wrap;
margin: 20px auto;
width: 540px;
}
.box li {
list-style: none;
}
.box>li {
width: 100px;
height: 100px;
margin: 0 10px 10px 0;
}
.box li:nth-child(5n) {
margin-right: 0;
}
.box li img {
height: 100px;
width: 100px;
border: 2px solid #258DF2;
border-radius: 10px 0 10px 0;
overflow: hidden;
}
</style>
</head>
<body>
<script>
let num = +prompt("请输入要展示的图片数量(1-20):")
document.write(`<div class="box">`)
for (let i = 0; i < num; i++) {
document.write(
`<li>
<img src="../images/${i + 1}.webp" />
</li>`
)
}
document.write(`</div>`)
</script>
</body>
</html>
总结:
- 遇到的第一想法是利用循环嵌套的方法来保证每行只有五张图片,超过就要换行,但是这样很麻烦,不好实现。
- 查阅后发现,可以将大盒子设置为弹性布局,使用 flex-wrap 可以达到换行的效果。
- 使用 .box li:nth-child(5n) 来消除每行最后一个<li>盒子的右边距。
- border-radius 来实现图片圆角的形状变化。