css - 我如何在sass中使用@for将背景位置分配给多个类

标签 css web sass

好的,这是我的代码:

.file-icon,.folder-icon{
      $size:24px;
      position: absolute;
      top: 10px;
      left: 44px;
      display: block;
      float: left;
      width: $size;
      height: $size;
      margin-right: 10px;
      background: $driveIcon;

      &.folder-close{
        background-position: 0 -72px;
        &.folder-open{
          background-position: -$size -72px;
        }
      }

      &.archiveIcon{
        background-position: -$size*2 -72px;
      }
      &.audioIcon{
        background-position: -$size*3 -72px;
      }
      &.brokenIcon{
        background-position: -$size*4 -72px;
      }
      &.docIcon{
        background-position: -$size*5 -72px;
      }
      &.imgfile{
        background-position: -$size*6 -72px;
      }
      &.pdfIcon{
        background-position: -$size*7 -72px;
      }
      &.pptx{
        background-position: -$size*8 -72px;
      }
      &.txtIcon{
        background-position: -$size*9 -72px;
      }
      &.unknown{
        background-position: -$size*10 -72px;
      }
      &.videoIcon{
        background-position: -$size*11 -72px;
      }
      &.xlsIcon{
        background-position: -$size*12 -72px;
      }
      &.viewer{
        background-position: -$size*13 -72px;
        &.folder-open{
          background-position: -$size*14 -72px;
        }
      }
      &.owner{
        background-position: -$size*15 -72px;
        &.folder-open{
          background-position: -$size*16 -72px;
        }
      }
      &.moderator{
        background-position: -$size*17 -72px;
        &.folder-open{
          background-position: -$size*18 -72px;
        }
      }
    }

我想做的是自动分配背景定位。我尝试将 @for 用于实际语句,但无法弄清楚如何将结果一一分配给我的自定义第二类。请帮助我,我是 sass 的初学者。谢谢。

这是我到目前为止所做的:

@for $i from 0 to 18{ background-position: -($size*$i} -72px; }

最佳答案

好吧,您可以为 Sprite 使用 sass 列表。

这里有一个方法:

$list: archiveIcon, audioIcon;
$size: 24px;
$totalClasess: 2;
@each $value in $list {
  &.#{$value} {
    background-position: -($size*$totalClasses) -72px;

    @if $value == folder-close {
      &.folder-open {
        background-position: -$size -72px;
      }
    }
  }
  $totalClasses: $totalClasses + 1;
}

您必须完成所有类(class)的列表。

问候。

关于css - 我如何在sass中使用@for将背景位置分配给多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24880090/

相关文章:

javascript - 点击 Ext JS 打开/保存对话框

css - 访问SASS多维列表键

css - Sass --watch 检测变化,但没有编译成 CSS

css - float :right property on <p> which is inside a <div> is not working

CSS 加载器微调器在 donut 部分之间添加白色分隔线

javascript - 单击链接时复制链接文本?

javascript - HTML5 排序 DIV

javascript - 选择标签的 SCSS 样式不适用于移动设备

javascript - 单击更改颜色输入字段

php - 可滚动表格上方的固定标题