229 lines
6.0 KiB
Vue
229 lines
6.0 KiB
Vue
<template>
|
||
<div class="graph-op">
|
||
<i v-for="edgeItem in dropdownItems " :class="edgeItem.class" v-on:title="edgeItem.label" style="width: 120px;"
|
||
@click="onItemClick(edgeItem.guid, $event)"> {{edgeItem.label}}</i>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import $ from 'jquery'
|
||
export default {
|
||
name: 'CCDropdownList',
|
||
props: {
|
||
dropdownItems: {
|
||
type: Array,
|
||
default() {
|
||
return [
|
||
]
|
||
}
|
||
},
|
||
defaultIndex: {
|
||
type: Number,
|
||
default() {
|
||
return 0
|
||
}
|
||
}
|
||
},
|
||
data() {
|
||
return {
|
||
activeIndex: this.defaultIndex,
|
||
timeout: null
|
||
}
|
||
},
|
||
watch: {
|
||
activeIndex() {
|
||
this.$emit('change', this.activeIndex)
|
||
}
|
||
},
|
||
mounted() {
|
||
$('.iconfonts')[0].style.backgroundColor = '#ebeef2'
|
||
},
|
||
methods: {
|
||
onItemClick(index,e) {
|
||
let lineList = $('.iconfonts')
|
||
for (let i=0;i<lineList.length;i++){
|
||
lineList[i].style.backgroundColor = '#ffffff'
|
||
}
|
||
if (e.path[0].style.backgroundColor=='rgb(255, 255, 255)'){
|
||
e.path[0].style.backgroundColor = '#ebeef2'
|
||
}
|
||
if (index !== this.activeIndex) {
|
||
this.activeIndex = index
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
|
||
.iconfonts {
|
||
color: #666666;
|
||
|
||
font-size: 12px;
|
||
line-height: 20px;
|
||
height: 20px;
|
||
padding-bottom: 2px;
|
||
|
||
}
|
||
.graph-op {
|
||
display: inline-block;
|
||
vertical-align: middle;
|
||
|
||
i {
|
||
width: 20px;
|
||
height: 20px;
|
||
margin: 0 6px;
|
||
line-height: 20px;
|
||
color: #a8a8a8;
|
||
text-align: center;
|
||
border-radius: 2px;
|
||
display: inline-block;
|
||
border: 1px solid rgba(2, 2, 2, 0);
|
||
}
|
||
|
||
i:hover {
|
||
cursor: pointer;
|
||
border: 1px solid #E9E9E9;
|
||
}
|
||
|
||
.disabled {
|
||
color: rgba(0, 0, 0, 0.25);
|
||
}
|
||
|
||
.disabled:hover {
|
||
cursor: not-allowed;
|
||
border: 1px solid rgba(2, 2, 2, 0);
|
||
}
|
||
|
||
.icon-select {
|
||
background-color: #EEEEEE;
|
||
}
|
||
|
||
.separator {
|
||
margin: 4px;
|
||
border-left: 1px solid #E9E9E9;
|
||
}
|
||
}
|
||
.cc-dropdown {
|
||
position: relative;
|
||
display: inline-block;
|
||
min-width: 100px;
|
||
text-align: center;
|
||
|
||
a {
|
||
color: #000;
|
||
text-decoration: none;
|
||
}
|
||
|
||
ul,
|
||
li {
|
||
list-style: none;
|
||
}
|
||
|
||
span {
|
||
display: block;
|
||
z-index: 2;
|
||
height: 30px;
|
||
line-height: 30px;
|
||
background-color: transparent;
|
||
font-size: 14px;
|
||
border-radius: 5px;
|
||
-webkit-transition: all .2s ease-in;
|
||
transition: all .2s ease-in;
|
||
}
|
||
|
||
span a:after {
|
||
content: " ";
|
||
display: inline-block;
|
||
width: 0;
|
||
height: 0;
|
||
font-size: 0;
|
||
line-height: 0;
|
||
border-bottom: solid 6px #000;
|
||
border-left: solid 4px transparent;
|
||
border-right: solid 4px transparent;
|
||
vertical-align: 3px;
|
||
margin-left: 10px;
|
||
-webkit-transition: all .2s ease-in;
|
||
transition: all .2s ease-in;
|
||
}
|
||
}
|
||
|
||
.cc-dropdown-menu {
|
||
position: absolute;
|
||
display: none;
|
||
top: 50px;
|
||
left: 0;
|
||
right: 0;
|
||
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2);
|
||
border-radius: 5px;
|
||
z-index: 1;
|
||
|
||
/* 一个很重要的三角形*/
|
||
li:first-child:before {
|
||
display: block; /* 独占一行 */
|
||
content: " ";
|
||
font-size: 0;
|
||
line-height: 0;
|
||
margin: 0 auto; /* 居中 */
|
||
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2); /* 配合整体一样的投影 */
|
||
background-color: #fff;
|
||
width: 10px;
|
||
height: 10px;
|
||
-webkit-transform: rotate(45deg);
|
||
transform: rotate(45deg); /* 一个正方形倾斜四十五度就是三角了但是要把下半部分藏起来 */
|
||
position: relative;
|
||
top: -5px; /* 露出上半部分*/
|
||
z-index: 1; /* 隐藏下半部分 */
|
||
-webkit-transition: all .2s ease-in;
|
||
transition: all .2s ease-in;
|
||
}
|
||
|
||
li a {
|
||
color: #888;
|
||
line-height: 46px;
|
||
border-bottom: solid 1px #eee;
|
||
font-size: 14px;
|
||
display: block;
|
||
background-color: #fff; /* 要有背景色才能盖住呀*/
|
||
position: relative;
|
||
z-index: 2; /* 这里很重要 要挡住三角形的下半部分*/
|
||
-webkit-transition: all .2s ease-in;
|
||
transition: all .2s ease-in;
|
||
}
|
||
|
||
/* 以下两块:控制第一个和最后一个li要圆角,因为最外边的div没有overflow 也不可以overflow*/
|
||
li:first-child a {
|
||
border-top-left-radius: 5px;
|
||
border-top-right-radius: 5px;
|
||
margin-top: -10px;
|
||
}
|
||
|
||
li:last-child a {
|
||
border-bottom-left-radius: 5px;
|
||
border-bottom-right-radius: 5px;
|
||
border-bottom: none;
|
||
}
|
||
|
||
/*hover事件给了li,先改变三角 再改变a*/
|
||
li:hover:before {
|
||
background-color: #ecf5ff;
|
||
}
|
||
|
||
li:hover a {
|
||
background-color: #ecf5ff;
|
||
color: #66b1ff;
|
||
}
|
||
}
|
||
|
||
.cc-dropdown:hover span {
|
||
background-color: transparent;
|
||
}
|
||
|
||
.cc-dropdown:hover span a:after {
|
||
-webkit-transform: rotate(180deg);
|
||
transform: rotate(180deg);
|
||
}
|
||
</style>
|