在vue中完成一个页面布局,10个导航,5个一行,每个导航是上面一个图片,下面一个文字,用v-for循环来循环
时间: 2024-02-22 11:01:45 浏览: 148
好的,我可以帮你解答这个问题。
首先,你需要在Vue组件的template中使用v-for循环来渲染出10个导航项,每行渲染5个。可以这样写:
```html
<template>
<div class="navigation">
<div class="row" v-for="(nav, index) in navigation" :key="index">
<div class="nav-item" v-for="(item, i) in nav" :key="i">
<img :src="item.imgUrl" alt="">
<p>{{ item.text }}</p>
</div>
</div>
</div>
</template>
```
在上面的代码中,我们使用了v-for循环来遍历一个名为navigation的数组,这个数组包含了10个导航项,每个导航项都是一个对象,包含了图片地址和文字描述。然后我们又在循环的基础上,嵌套了一个v-for循环,遍历每行中的5个导航项,使用flex布局来实现每行渲染5个导航项。
接下来,你需要在Vue组件的script中定义navigation数组,用来存储10个导航项的数据。可以这样写:
```javascript
<script>
export default {
data() {
return {
navigation: [
[
{
imgUrl: 'https://xxx.com/1.png',
text: '导航1'
},
{
imgUrl: 'https://xxx.com/2.png',
text: '导航2'
},
{
imgUrl: 'https://xxx.com/3.png',
text: '导航3'
},
{
imgUrl: 'https://xxx.com/4.png',
text: '导航4'
},
{
imgUrl: 'https://xxx.com/5.png',
text: '导航5'
}
],
[
{
imgUrl: 'https://xxx.com/6.png',
text: '导航6'
},
{
imgUrl: 'https://xxx.com/7.png',
text: '导航7'
},
{
imgUrl: 'https://xxx.com/8.png',
text: '导航8'
},
{
imgUrl: 'https://xxx.com/9.png',
text: '导航9'
},
{
imgUrl: 'https://xxx.com/10.png',
text: '导航10'
}
]
]
}
}
}
</script>
```
在上面的代码中,我们定义了一个名为navigation的数组,这个数组包含了两个子数组,每个子数组包含了5个导航项的数据。你可以根据实际情况,修改数据结构和数据内容。
最后,你需要在Vue组件的style中定义导航项的样式和布局,可以这样写:
```css
<style>
.navigation {
display: flex;
flex-wrap: wrap;
}
.row {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
}
.nav-item {
display: flex;
flex-direction: column;
align-items: center;
width: calc(20% - 20px);
}
.nav-item img {
width: 60px;
height: 60px;
margin-bottom: 10px;
}
.nav-item p {
font-size: 14px;
color: #666;
text-align: center;
}
</style>
```
在上面的代码中,我们使用了flex布局来实现导航项的布局,每个导航项的宽度占据20%减去20px的空间,图片和文字垂直居中对齐,文字居中显示。
希望我的回答能够帮助到你,如果还有其他问题,请继续提问。
阅读全文