首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Svelte支持动态CSS样式吗?

Svelte支持动态CSS样式吗?
EN

Stack Overflow用户
提问于 2017-07-26 18:45:33
回答 5查看 7.7K关注 0票数 13

在Svelte中,类应该如何根据组件状态的元素进行更改?

例如,您可能希望在某些条件下将类应用于按钮,如下面的示例所示。

代码语言:javascript
运行
复制
<button class="{{class}}">

现在,这可以通过创建一个在特定条件下返回类名或空字符串的computed property来实现。

但是,我担心这是否会污染计算属性命名空间。例如,如果有一个status,可能需要同时设置一个动态文本(如statusMessage )和一个类(如statusClass )。

有没有更好的方法来做到这一点,或者计算属性是更好的方法?Svelte还计划对CSS提供更明确的支持吗?

EN

回答 5

Stack Overflow用户

发布于 2017-07-26 20:38:41

您可以使用内联表达式,如下所示:

代码语言:javascript
运行
复制
<button class='{{active ? "active": "inactive"}}'>
  {{active ? 'Selected' : 'Select this'}}
</button>

这通常比使用计算属性更好,因为只需查看模板,就可以立即清楚可能的值是什么。

如果表达式变得笨重,你也可以使用助手函数--在某些情况下,你可能更喜欢这些而不是计算值:

代码语言:javascript
运行
复制
<button class='{{getClass(status)}}'>{{getText(status)}}</button>

<script>
  export default {
    helpers: {
      getClass(status) {
        // ...
      },
      getText(status) {
        // ...
      }
    }
  };
</script>
票数 13
EN

Stack Overflow用户

发布于 2019-11-28 07:17:12

现在,您可以使用:

代码语言:javascript
运行
复制
export let whitetext = false;
<div class:whitetext></div>

然后

代码语言:javascript
运行
复制
<MyComponent whitetext={true} />

基于true/false的简单类的语法。

票数 12
EN

Stack Overflow用户

发布于 2018-07-18 18:53:41

根据其他流行的框架,没有内置的方式来使用,例如,class=中的条件{#if}

因为一旦你有两个以上的类,内联表达式就会变得不奇怪,在这种情况下,我会直接使用helper。类生成器帮助器的快速示例:

代码语言:javascript
运行
复制
helpers: {
    getSlideClasses(index, currentIndex) {
        let classes = ['js_slide']
        if ( index === currentIndex ) {
            classes.push('selected')
        }
        if ( index === 0 ) {
            classes.push('first')
        }
        return classes.join(' ')
    }
}

然后:

代码语言:javascript
运行
复制
<div class='{ getSlideClasses(index, currentIndex)}'>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45324684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档