首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCSS中每个类具有相同样式的多个类

SCSS中每个类具有相同样式的多个类
EN

Stack Overflow用户
提问于 2021-05-21 18:51:25
回答 2查看 1.2K关注 0票数 0

假设以下代码:

代码语言:javascript
复制
<div class="example">
  <div class="class-1">Class 1</div>
  <div class="class-2">Class 2</div>
  <div class="class-3">Class 3</div>
  <div class="class-4">Class 4</div>
  <div class="class-5">Class 5</div>
</div>
代码语言:javascript
复制
/* Code every class shares */
.example .class-1,
.example .class-2,
.example .class-3,
.example .class-4,
.example .class-5 {
    padding: 1em;
    font-family: sans-serif;
    /* More code... */
}

/* Code that is different */
.example .class-1 {
    color: red;
}

.example .class-2 {
    color: blue;
}

.example .class-3 {
    font-weight: bold;
}

.example .class-4 {
    background-color: darkcyan;
}

.example .class-5 {
    text-transform: uppercase;
}

有没有办法避免重复使用SCSS?请记住,我不是在寻找使用属性迭代映射的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-21 19:51:31

举你的例子,这是我能想到的,为了不重复太多使用SCSS。

代码语言:javascript
复制
.example {
    /* Code every class shares */
    [class^="class-"] {
       padding: 1em;
       font-family: sans-serif;
       /* More code... */
    }

    /* Code that is different */
    .class-1 {
        color: red;
    }

    .class-2 {
        color: blue;
    }

    .class-3 {
        font-weight: bold;
    }

    .class-4 {
        background-color: darkcyan;
    }

    .class-5 {
        text-transform: uppercase;
    }
}

请记住,[class^="class-"]将影响所有包含以"class-“开头的类的元素,如class-aclass-x等,有关属性选择器:选择器的更多细节。

票数 1
EN

Stack Overflow用户

发布于 2021-05-21 20:02:10

下面是您可以使用提供的示例代码的基本示例:

代码语言:javascript
复制
/* Code every class shares */
.example > div {
    padding: 1em;
    font-family: sans-serif;
    /* More code... */
    
    &.class {
        &-1 {
            color: red;
        }
        
        &-2 {
            color: blue;
        }
        
        &-3 {
            font-weight: bold;
        }
        
        &-4 {
            background-color: darkcyan;
        }
        
        &-5 {
            text-transform: uppercase;
        }
    }
}

为此编写的文件如下:

代码语言:javascript
复制
/* Code every class shares */
.example > div {
  padding: 1em;
  font-family: sans-serif;
  /* More code... */
}
.example > div.class-1 {
  color: red;
}
.example > div.class-2 {
  color: blue;
}
.example > div.class-3 {
  font-weight: bold;
}
.example > div.class-4 {
  background-color: darkcyan;
}
.example > div.class-5 {
  text-transform: uppercase;
}

因为您正在为每个.class-*元素更改不同的属性,所以您不能避免像这样写出它,除非您想要进入SASS地图,如果您想要预定义样式,这可能对您有用。

代码语言:javascript
复制
$elements : ( 
    1: ( 'color' : 'red', 'text-align' : 'left', 'font-size': '16px'), 
    2: ( 'color' : 'blue'), 
    3: ( 'font-weight' : 'bold')
    );


/* Code every class shares */
.example > div {
    padding: 1em;
    font-family: sans-serif;
    /* More code... */
    
    &.class {
        @each $index, $maps in $elements {
            &-#{$index} {
                @each $prop, $style in $maps {
                    #{$prop} : #{$style}
                }
            }
        }
    }
}

汇编成:

代码语言:javascript
复制
/* Code every class shares */
.example > div {
  padding: 1em;
  font-family: sans-serif;
  /* More code... */
}
.example > div.class-1 {
  color: red;
  text-align: left;
  font-size: 16px;
}
.example > div.class-2 {
  color: blue;
}
.example > div.class-3 {
  font-weight: bold;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67642477

复制
相关文章

相似问题

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