文章目录
- 需求
- 效果如下图所示
- 代码逻辑
- 代码
- 参考
需求
开发一个箭头组件,根据父组件传递的 props 来修改 css 的颜色
效果如下图所示
代码逻辑
代码
父组件:
<Arrow color="red" />
子组件:
<template><div class="arrow" :style="{ '--arrow-color': color, '--arrow-width': `${width}px`,'--arrow-rotation': `${rotation}deg`}"></div>
</template><script lang='ts' setup>
import { defineProps } from 'vue';const props = defineProps({color: {type: String,default: 'black'},width: {type: Number,default: 30},rotation: {type: Number,default: 0 // 旋转角度,默认不旋转}
});
</script><style scoped>
.arrow {display: inline-block;position: relative;margin: 10px;width: var(--arrow-width);transform: rotate(var(--arrow-rotation)); /* 添加旋转样式 */
}.arrow::before {content: '';position: absolute;top: 50%;left: 0;width: var(--arrow-width);border-top: 2px dotted var(--arrow-color);transform: translateY(-50%);
}.arrow::after {content: '';position: absolute;top: 50%;left: calc(var(--arrow-width) - 8px);width: 0;height: 0;border-left: 10px solid var(--arrow-color);border-top: 7px solid transparent;border-bottom: 7px solid transparent;transform: translateY(-50%);
}
</style>
参考
1. 使用 CSS 自定义属性(变量) https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties