Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.0k views
in Technique[技术] by (71.8m points)

vue.js - How can I use data in css with Vue?

I want to design a button component with Vue.
When I get main props, how can I get in css --mainColor variable without setting inline-style? thanks.

<script>
import Vue from "vue";

    export default Vue.extend({
    name: "Button",
    props: {
        text: {
            type: String,
            default: ""
        },
        main: {
            type: String,
            default: "#10b981"
        }
    }
});
</script>

<style lang="scss" scoped>
.btn {
    --mainColor: #10b981;
    display: inline-block;
    border: 1px solid var(--mainColor);
    color: var(--mainColor);
    &:hover {
        background-color: var(--mainColor);
        color: #fff;
    }
}
</style>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I doubt that's possible. But you can run conditional logic in sass, like their official example:

$light-background: #f2ece4;
$light-text: #036;
$dark-background: #6b717f;
$dark-text: #d2e1dd;

@mixin theme-colors($light-theme: true) {
  @if $light-theme {
    background-color: $light-background;
    color: $light-text;
  } @else {
    background-color: $dark-background;
    color: $dark-text;
  }
}

.banner {
  @include theme-colors($light-theme: true);
  body.dark & {
    @include theme-colors($light-theme: false);
  }
}

https://sass-lang.com/documentation/at-rules/control/if


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...