Newer
Older
<script setup lang="ts">
defineProps<{
active?: boolean;
disable?: boolean;
<div
:class="[
'item',
{
disable,
},
]"
>
<div
:class="[
'bg',
{
active,
disableBg: disable,
},
]"
></div>
<slot />
</div>
</template>
<style>
.item {
position: relative;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
.item::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
z-index: -1;
background-color: v-bind(color);
}
.item:hover > .bg:not(.active) {
background-color: v-bind(textColor);
opacity: 0.1;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transition: all 0.2s ease;
}
.item > .active {
background-color: v-bind(textColor) !important;
}
.disable {
cursor: auto;
pointer-events: none;
}
.disableBg {
background-color: white !important;