Vue 音乐列表 - 实现歌曲名超出隐藏,鼠标悬浮显示全部
<template>
<div class='music-management'>
<el-card class='music-left'>
<div>
<div class='music-title'>音源列表</div>
<div class='music-content'>
<div class='music-list' v-for='(item, index) in dateList' :key='index' @mouseover='showFullMusicName(item)' @click='musicStart(item)'>
<svg-icon icon-class='music' style='font-size: 25px; vertical-align: middle'></svg-icon>
{{ item.musicName }}
</div>
</div>
</div>
</el-card>
<pre><code><el-card class='musci-right'>
<div class='music-title' style='margin-bottom: 0'>
<div class='music-tab'>
<div :class='index == 1 ? 'active' : ''' @click='index = 1; musicChoose = musicList.zone' class='tab'>分区</div>
<div :class='index == 2 ? 'active' : ''' @click='index = 2; musicChoose = musicList.group' class='tab'>分组</div>
<div :class='index == 3 ? 'active' : ''' @click='index = 3; musicChoose = musicList.task' class='tab'>子任务</div>
</div>
</div>
<div class='music-bottom'>
<el-card class='music-item' v-for='(item, index) in musicChoose' :key='index'>
<div class='top'>
<div>状态:{{ item.status }}</div>
<div>
<svg-icon icon-class='naozhong'></svg-icon>
</div>
</div>
<div class='icon' @click='ipChoose(item)'>
<svg-icon icon-class='lianjie' style='font-size: 40px; vertical-align: middle'></svg-icon>
</div>
<div style='text-align: center'>
{{ item.ip }}
</div>
<div class='text'>
<div>机架式网络化终端</div>
<div>{{ item.percent }}</div>
</div>
</el-card>
</div>
</el-card>
</code></pre>
</div>
</template>
<script>
import { getMusicList } from '@/api/data/music'
import { MessageBox } from 'element-ui';
export default {
data() {
return {
index: 1,
activeTab: 'zone',
dateList: [],
musicChoose: [
{ id: 1, status: '离线', ip: '192.168.80.30', percent: '10%' },
{ id: 2, status: '离线', ip: '192.168.80.31', percent: '20%' },
{ id: 3, status: '离线', ip: '192.168.80.32', percent: '30%' },
],
musicList: {
zone: [
{ id: 1, status: '离线', ip: '192.168.80.30', percent: '10%' },
{ id: 2, status: '离线', ip: '192.168.80.31', percent: '20%' },
{ id: 3, status: '离线', ip: '192.168.80.32', percent: '30%' },
],
group: [
{ id: 4, status: '离线', ip: '192.168.80.33', percent: '10%' },
{ id: 5, status: '离线', ip: '192.168.80.34', percent: '0%' },
{ id: 6, status: '离线', ip: '192.168.80.35', percent: '0%' },
],
task: [
{ id: 7, status: '离线', ip: '192.168.80.36', percent: '20%' },
{ id: 8, status: '离线', ip: '192.168.80.37', percent: '0%' },
{ id: 9, status: '离线', ip: '192.168.80.38', percent: '0%' },
],
},
};
},
created() {
this.musicChoose = this.musicList.zone;
console.log('初始化分区====', this.musicChoose)
this.getMusics();
},
methods: {
ipChoose(item) {
console.log('选择ip=====', item)
},
musicStart(item) {
console.log('播放music=====', item)
// 处理点击事件,可以将 item 作为参数传递给其他组件或函数
},
//获取音乐目录
getMusics() {
getMusicList().then(res => {
console.log('音乐列表', res.data)
this.dateList = res.data;
})
},
showFullMusicName(item) {
MessageBox.alert(item.musicName, '歌曲名', {
confirmButtonText: '确定',
showClose: false,
});
}
},
mounted() {
},
};
</script>
<style scoped lang='less'>
.music-management {
display: flex;
padding: 20px;
}
.music-left {
width: 20%;
height: 1080px;
border-radius: 15px;
margin-right: 15px;
}
.musci-right {
width: 70%;
height: 1080px;
}
.music-title {
height: 60px;
background: black;
color: #fff;
font-size: 20px;
line-height: 60px;
padding-left: 30px;
margin-bottom: 10px;
}
.music-content {
}
.music-list {
height: 50px;
line-height: 50px;
padding-left: 15px;
background: #e3d2c3;
overflow: hidden;
text-overflow: ellipsis;
}
.music-list:nth-child(2n) {
background: #e4cab0;
}
.musci-right {
border-radius: 15px;
}
.music-tab {
display: flex;
align-items: center;
height: 60px;
}
.tab {
width: 100px;
height: 40px;
text-align: center;
line-height: 40px;
border: 1px solid #6acfc1;
&.active {
background: #6acfc1;
}
}
.music-bottom {
display: flex;
padding: 20px;
.music-item {
width: 200px;
height: 200px;
border-radius: 12px;
background: #fae5e4;
padding: 10px;
text-align: center;
margin-right: 10px;
.top {
display: flex;
justify-content: space-between;
}
.icon {
width: 70px;
height: 70px;
background: #fff;
border-radius: 50%;
line-height: 70px;
margin: 20px auto;
}
.text {
display: flex;
justify-content: space-between;
padding: 10px 0;
}
}
}
</style>
原文地址: https://www.cveoy.top/t/topic/pgvR 著作权归作者所有。请勿转载和采集!