StDynamicBorder1 组件
动态边框组件 1
注意事项
- 该组件根元素的
box-sizing
css 属性值为border-box
; - 该组件动态边框的实现原理为,样式底层组件根元素利用渐变背景的旋转动画实现边框的动态效果,然后将组件默认插槽所在的父元素定位覆盖组件根元素并利用内边距,实现边框效果
组件示例
简单使用
简单使用
示例源码
vue
<script setup lang="ts">
import {StDynamicBorder1} from 'st-common-ui-vue3'
</script>
<template>
<div class="dynamic-border-1-demo-1">
<StDynamicBorder1 :width="150" :height="150">
<div class="st-dynamic-border-1__content box-bg">简单使用</div>
</StDynamicBorder1>
</div>
</template>
<style scoped lang="scss">
.dynamic-border-1-demo-1 {
margin-top: 1rem;
.st-dynamic-border-1__content {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
自定义边框颜色
自定义边框颜色
示例源码
vue
<script setup lang="ts">
import {StDynamicBorder1} from 'st-common-ui-vue3'
</script>
<template>
<div class="dynamic-border-1-demo-1">
<StDynamicBorder1
:width="150"
:height="150"
:border-color-list="['transparent', 'red 50%', 'transparent 50%', 'orange']"
>
<div class="st-dynamic-border-1__content box-bg">
自定义边框颜色
</div>
</StDynamicBorder1>
</div>
</template>
<style scoped lang="scss">
.dynamic-border-1-demo-1 {
margin-top: 1rem;
.st-dynamic-border-1__content {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
多段边框
多段边框
示例源码
vue
<script setup lang="ts">
import {StDynamicBorder1} from 'st-common-ui-vue3'
</script>
<template>
<div class="dynamic-border-1-demo-1">
<StDynamicBorder1
:width="150"
:height="150"
:border-color-list="[
'red 0%', 'red 12.5%',
'transparent 12.5%', 'transparent 25%',
'green 25%', 'green 37.5%',
'transparent 37.5%', 'transparent 50%',
'yellow 50%', 'yellow 62.5%',
'transparent 62.5%', 'transparent 75%',
'blue 75%', 'blue 87.5%',
'transparent 87.5%', 'transparent 100%'
]"
>
<div class="st-dynamic-border-1__content box-bg">
多段边框
</div>
</StDynamicBorder1>
</div>
</template>
<style scoped lang="scss">
.dynamic-border-1-demo-1 {
margin-top: 1rem;
.st-dynamic-border-1__content {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
完全自定义边框颜色
完全自定义边框颜色
示例源码
vue
<script setup lang="ts">
import {StDynamicBorder1} from 'st-common-ui-vue3'
</script>
<template>
<div class="dynamic-border-1-demo-1">
<StDynamicBorder1
:width="150"
:height="150"
custom-border-color
:border-color="'linear-gradient(135deg, #ff0000, #00ff00)'"
>
<div class="st-dynamic-border-1__content box-bg">完全自定义边框颜色</div>
</StDynamicBorder1>
</div>
</template>
<style scoped lang="scss">
.dynamic-border-1-demo-1 {
margin-top: 1rem;
.st-dynamic-border-1__content {
width: 100%;
height: 100%;
padding: 1rem;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
荧光边框
荧光边框
示例源码
vue
<script setup lang="ts">
import {StDynamicBorder1} from 'st-common-ui-vue3'
</script>
<template>
<div class="dynamic-border-1-demo-1">
<StDynamicBorder1
:width="150"
:height="150"
shine
:shine-range="20"
>
<div class="st-dynamic-border-1__content box-bg">荧光边框</div>
</StDynamicBorder1>
</div>
</template>
<style scoped lang="scss">
.dynamic-border-1-demo-1 {
margin-top: 1rem;
.st-dynamic-border-1__content {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
Hover 时显示边框动效
Hover 时显示边框动效
示例源码
vue
<script setup lang="ts">
import {StDynamicBorder1} from 'st-common-ui-vue3'
</script>
<template>
<div class="dynamic-border-1-demo-1">
<StDynamicBorder1 :width="150" :height="150" hover>
<div class="st-dynamic-border-1__content box-bg">Hover 时显示边框动效</div>
</StDynamicBorder1>
</div>
</template>
<style scoped lang="scss">
.dynamic-border-1-demo-1 {
margin-top: 1rem;
.st-dynamic-border-1__content {
width: 100%;
height: 100%;
padding: 1rem;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
Hover 时暂停边框动效
Hover 时暂停边框动效
示例源码
vue
<script setup lang="ts">
import {StDynamicBorder1} from 'st-common-ui-vue3'
</script>
<template>
<div class="dynamic-border-1-demo-1">
<StDynamicBorder1 :width="150" :height="150" hover-pause>
<div class="st-dynamic-border-1__content box-bg">Hover 时暂停边框动效</div>
</StDynamicBorder1>
</div>
</template>
<style scoped lang="scss">
.dynamic-border-1-demo-1 {
margin-top: 1rem;
.st-dynamic-border-1__content {
width: 100%;
height: 100%;
padding: 1rem;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
组件参数
参数名 | 说明 | 类型 | 默认值 |
---|---|---|---|
width | 组件的宽度,如果传递的参数值为数字类型,则其默认单位为 px | number | string | '100%' |
height | 组件的高度,如果传递的参数值为数字类型,则其默认单位为 px | number | string | '100%' |
backgroundColor | 组件中默认插槽所在父元素的背景颜色,即组件内容区域的背景颜色 | string | '#111' |
borderColorList | 边框的颜色列表,默认情况下,实现边框渐变效果的组件根元素的背景渐变效果为 conic-gradient | Array<string> | ['transparent 180deg', 'skyblue 360deg'] |
customBorderColor | 是否完全自定义边框颜色,即是否自定义边框的渐变效果及其颜色组成,如果其值为 false ,则边框的渐变效果为 conic-gradient | boolean | false |
borderColor | 完全自定义边框颜色时,即 customBorderColor 值为 true 时,使用该参数值指定边框的颜色 | string | 'linear-gradient(135deg, #43CBFF 15%, #9708CC 100%)' |
borderWidth | 边框的宽度,如果传递的参数值为数字类型,则其默认单位为 px | number | string | '2px' |
borderRadius | 边框的圆角,如果传递的参数值为数字类型,则其默认单位为 px | number | string | '0.25rem' |
rotate | 是否开启边框的旋转效果 | boolean | true |
speed | 边框旋转动画的速度,即执行一次边框动画所需的时间,如果传递的参数值为数字类型,则其默认单位为 ms | number | string | '5s' |
shine | 是否开启边框的光晕效果 | boolean | false |
shineRange | 边框光晕的范围,如果传递的参数值为数字类型,则其默认单位为 px | number | string | '10px' |
shineBrightness | 边框光晕的亮度,取值范围为 0 - 1 | number | 0.8 |
hover | 边框的效果是否在鼠标悬停时才生效 | boolean | false |
hoverPause | 是否在鼠标悬停时暂停边框旋转动画 | boolean | false |
组件插槽
插槽名 | 说明 |
---|---|
default | 组件内容区域 |