swiper-vue
Version:
轮播 swiper slider component for Vue.js
140 lines • 3.33 kB
CSS
.vue-swiper {
position: relative;
overflow: hidden;
}
.vue-swiper--container {
height: 100%;
width: 100%;
display: flex;
transition: all 1s ease-in-out;
}
.vue-swiper--item {
flex-shrink: 0;
height: 100%;
width: 100%;
}
.vue-swiper--arrow-pre, .vue-swiper--arrow-next {
cursor: pointer;
position: absolute;
top: 50%;
transform: translateY(-50%);
opacity: 0;
z-index: -1;
}
.vue-swiper--arrow-pre .default-arrow, .vue-swiper--arrow-next .default-arrow {
height: 32px;
width: 32px;
border-radius: 50%;
background: #BFC9D4;
line-height: 32px;
text-align: center;
font-size: 18px;
color: #fff;
}
.vue-swiper--arrow-pre .default-arrow:hover, .vue-swiper--arrow-next .default-arrow:hover {
background: #7D8CA1;
}
.vue-swiper--arrow-pre {
left: 0;
}
.vue-swiper--arrow-next {
right: 0;
}
.vue-swiper--indicator {
display: flex;
justify-content: center;
gap: 6px;
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 10px;
}
.vue-swiper--indicator-item {
cursor: pointer;
background: rgba(255, 255, 255, 0.6);
height: 3px;
width: 30px;
}
.vue-swiper--indicator-item:hover {
background: #C5C9D0;
}
.vue-swiper--indicator-item.active {
background: #fff;
}
.vue-swiper.vertical .vue-swiper--container {
flex-direction: column;
}
.vue-swiper.vertical .vue-swiper--indicator {
flex-direction: column;
left: 12px;
top: 50%;
transform: translateY(-50%);
}
.vue-swiper.vertical .vue-swiper--indicator-item {
width: 3px;
}
.vue-swiper.vertical .vue-swiper--arrow-pre, .vue-swiper.vertical .vue-swiper--arrow-next {
top: auto;
left: 50%;
transform: translateX(-50%);
}
.vue-swiper.vertical .vue-swiper--arrow-pre .default-arrow, .vue-swiper.vertical .vue-swiper--arrow-next .default-arrow {
transform-origin: 50% 50%;
transform: rotate(90deg);
}
.vue-swiper.vertical .vue-swiper--arrow-pre {
top: 12px;
}
.vue-swiper.vertical .vue-swiper--arrow-next {
right: auto;
bottom: 12px;
}
.vue-swiper.vertical.arrow-always .vue-swiper--arrow-pre, .vue-swiper.vertical.arrow-always .vue-swiper--arrow-next {
left: 50%;
transform: translateX(-50%);
}
.vue-swiper.vertical.arrow-always .vue-swiper--arrow-next {
right: auto;
}
.vue-swiper.vertical.arrow-hover:hover .vue-swiper--arrow-pre, .vue-swiper.vertical.arrow-hover:hover .vue-swiper--arrow-next {
left: 50%;
transform: translateX(-50%);
}
.vue-swiper.vertical.arrow-hover:hover .vue-swiper--arrow-next {
right: auto;
}
.vue-swiper.arrow-hover:hover .vue-swiper--arrow-pre, .vue-swiper.arrow-hover:hover .vue-swiper--arrow-next {
opacity: 1;
z-index: 2;
transition: all 0.6s ease-in-out;
}
.vue-swiper.arrow-hover:hover .vue-swiper--arrow-pre {
left: 12px;
}
.vue-swiper.arrow-hover:hover .vue-swiper--arrow-next {
right: 12px;
}
.vue-swiper.arrow-always .vue-swiper--arrow-pre, .vue-swiper.arrow-always .vue-swiper--arrow-next {
opacity: 1;
z-index: 2;
}
.vue-swiper.arrow-always .vue-swiper--arrow-pre {
left: 12px;
}
.vue-swiper.arrow-always .vue-swiper--arrow-next {
right: 12px;
}
.vue-swiper--empty {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
height: 100%;
width: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 3;
display: flex;
align-items: center;
justify-content: center;
}