V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Can I use?
http://caniuse.com/
Less
http://lesscss.org
Cool Libraries
Bootstrap from Twitter
Jetstrap
17681880207
V2EX  ›  CSS

老哥们,问一个 SCSS 的问题

  •  
  •   17681880207 · 2 天前 · 569 次点击

    我有个组件的 html 定义如下:

    <!-- 默认卡片 -->
    <div class="card">
      <div class="card__title">
      	<slot name="title"/>
      </div>
      <div class="card__content">
        <slot name="content"/>
      </div>
    </div>
    
    <!-- 警告卡片样式 -->
    <div class="card card--warning">
      <div class="card__title">
      	<slot name="title"/>
      </div>
      <div class="card__content">
        <slot name="content"/>
      </div>
    </div>
    
    <!-- 成功卡片样式 -->
    <div class="card card--successful">
      <div class="card__title">
      	<slot name="title"/>
      </div>
      <div class="card__content">
        <slot name="content"/>
      </div>
    </div>
    

    关于 SCSS 我的想法是:

    // 这里定义了普通卡片样的样式
    .card {
      &__title {
        color: gray;
      }
      
      &__content {
        color: lightgray;
      }
      
      // 定义警告卡片的样式
      &--warning {
        &__title {
          color: yellow;
        }
      
        &__content {
          color: lightyello;
        }
      }
      
      // 定义成功卡片的样式
      &--successful {
        &__title {
          color: green;
        }
      
        &__content {
          color: lightgreen;
        }
      }
    }
    

    但是警告卡片和成功卡片的 css 会被解析为:

    .card--warning__title {}
    .card--warning__content {}
    
    .card--successful__title {}
    .card--successful__content {}
    

    也就是我实际使用的时候如果要使用警告卡片,实际上 html 应该写成:

    <div class="card card--warning">
      <div class="card--warning__title"><!-- 而不是 <div class="card__title"> -->
      	<slot name="title"/>
      </div>
      <div class="card-warning__content"><!-- 而不是 <div class="card__content"> -->
        <slot name="content"/>
      </div>
    </div>
    

    请问各位老哥,SCSS 应该怎么来定义样式啊?

    5 条回复    2025-02-20 10:09:56 +08:00
    Perry
        1
    Perry  
       2 天前 via iPhone
    这种问题直接问 LLM 就能有答案
    P233
        2
    P233  
       2 天前   ❤️ 1
    & 在 scss 里是 parent reference 的意思,全部平级就好了
    zhuoyan
        4
    zhuoyan  
       2 天前
    // 这里定义了普通卡片样的样式
    .card {
    &__title {
    color: gray;
    }

    &__content {
    color: lightgray;
    }

    // 定义警告卡片的样式
    &--warning {
    .card {
    &__title {
    color: yellow;
    }

    &__content {
    color: lightyello;
    }
    }
    }

    // 定义成功卡片的样式
    &--successful {
    .card {
    &__title {
    color: green;
    }

    &__content {
    color: lightgreen;
    }
    }
    }
    }
    dallaslu
        5
    dallaslu  
       2 天前
    & 是指 parent ,根据层级来的。你需要的是固定前缀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2974 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:42 · PVG 16:42 · LAX 00:42 · JFK 03:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.