css - 创建重叠的用户图标
问题描述
我正在尝试创建一个与用户图标重叠的组件,如图所示。我在谷歌上看到过这个。如果我有一个用户图标列表,如何将它们相互重叠?
<template>
<div >
<ul>
<li v-for="user in userList" :key="user.key">
<user-icon-component :name="user.name" :image="user.picture"></user-icon-component>
</li>
</ul>
</div>
</template>
<script>
export default {
name: "UserList",
props: {
userList: {
type: Object,
default: null,
},
},
};
</script>
<style>
</style>
解决方案
图标组件只是一个<img>
带有user
道具的标签:
Vue.component('user-icon-component', {
props: ['user'],
template: `
<img :src="user.picture" width="32" height="32" />
`
})
给出<li>s
position: absolute
和<ul>
position: relative
将它们从正常的文档流中拉出来。将left
每个位置的位置设置为循环<li>
的计算:index
<ul class="icon-container">
<li v-for="(user, key, i) in userList" :key="user.key"
class="icon" :style="{ left: `${i * 20}px` }">
<user-icon-component :user="user"></user-icon-component>
</li>
</ul>
这是一个演示:
Vue.component('user-icon-component', {
props: ['user'],
template: `
<img :src="user.picture" width="32" height="32" />
`
})
/***** APP *****/
new Vue({
el: "#app",
data() {
return {
userList: {
'Bob': { name: 'Bob', key: 1, picture: 'https://www.flaticon.com/svg/static/icons/svg/3084/3084430.svg' },
'Mary': { name: 'Mary', key: 2, picture: 'https://www.flaticon.com/svg/static/icons/svg/3084/3084431.svg' },
'Paul': { name: 'Paul', key: 3, picture: 'https://www.flaticon.com/svg/static/icons/svg/3084/3084452.svg' },
}
}
},
});
.icon-container {
position: relative;
}
.icon {
position: absolute;
}
ul {
list-style-type: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<ul class="icon-container">
<li v-for="(user, key, i) in userList" :key="user.key"
class="icon" :style="{ left: `${i * 20}px` }">
<user-icon-component :user="user"></user-icon-component>
</li>
</ul>
</div>
推荐阅读
- python - 在 python 中的键或值中打印带有 \n 或 \t 字符的字典的最佳方法?
- spring - 从内存数据库中的 H2 切换到 SQL Server 时出错
- c++ - c++ - 成功打印超出范围的字符串索引
- symfony - 虚拟多对多关系
- pandas-groupby - GroupBy 数据框并找出另一列的最大出现次数
- google-apps-script - 使用谷歌脚本创建带有关键字的时间戳
- linux - Linux读取外盘数据,无法挂载
- node.js - 使用相同的 package.json 文件定义多运行配置
- cordova - Cordova 支持 finally 方法吗?
- php - PHP登录页面为空白而不是回显结果