質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • CSS

    6025questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • CSS3

    2143questions

    CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

  • Sass

    270questions

    Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

【scss】 リスト内に括弧を代入する方法につきまして

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 734

_k_

score 26

質問内容

掲題の件につきまして
現実コードではrgbaに括弧がない状態です。

求めている夢コードの様に出力させたく
試行錯誤してみましたが、夢を実現できないため
ご質問させていただきました。

質問内容としてはリストに括弧を代入とさせていただきましたが
他の方法で夢を実現できればご教示願います。

宜しくお願い致します。


・scss

.hoge{
  width: 100px;
  height: 100px;
  
  $bglist:(232,110,164,.5),(94,169,221,.5),(120,193,91,.5);
  
  @for $i from 1 through 3{
    &:nth-child(#{$i}){
      background-color:rgba nth($bglist,$i)
    }
  }

}


現実コード

.hoge {
  width: 100px;
  height: 100px;
}
.hoge:nth-child(1) {
  background-color: rgba 232, 110, 164, 0.5;
}
.hoge:nth-child(2) {
  background-color: rgba 94, 169, 221, 0.5;
}
.hoge:nth-child(3) {
  background-color: rgba 120, 193, 91, 0.5;
}



夢コード

.hoge {
  width: 100px;
  height: 100px;
}
.hoge:nth-child(1) {
  background-color: rgba(232, 110, 164, 0.5);
}
.hoge:nth-child(2) {
  background-color: rgba(94, 169, 221, 0.5);
}
.hoge:nth-child(3) {
  background-color: rgba(120, 193, 91, 0.5);
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

SCSSのrgba()が関数として認識されるので、各色を別々に渡してあげるか、16進数表記などの$colorとアルファ値に分けて渡してあげないと上手く動作しないっぽいですね。
この例ではrgbaと()の間にスペースがある為に()が無視されて文字列として出力されているのではないかと思います。
Module: Sass::Script::Functions rgba
rgba($red, $green, $blue, $alpha)
rgba($color, $alpha)

最も簡単な解決方法は、
配列にrgbaを付けてしまって置いて単純に文字列として出力してしまう方法だと思います。
ついでに、配列が増えてもループ文を変更しなくても済むように@each文に変更してみました。
$bglist: rgba(232,110,164,.5), rgba(94,169,221,.5), rgba(120,193,91,.5);

.hoge {
  width: 100px;
  height: 100px;

  @each $color in $bglist {
    $index: index($bglist, $color);
    &:nth-child(#{$index}) {
      background-color: #{$color};
    }
  }
}

Sass3.3からは連想配列が使えますので、次の様な書き方も可能です
$bglist: (1: rgba(232,110,164,.5), 2: rgba(94,169,221,.5), 3: rgba(120,193,91,.5));

.hoge {
  width: 100px;
  height: 100px;

  @each $key, $color in $bglist {
    &:nth-child(#{$key}) {
      background-color: #{$color};
    }
  }
}


追記

カンマ区切りを配列としても扱えるようですので、$colorを配列と捉えさせて
rgba($red, $green, $blue, $alpha)という渡し方もできなくはないっぽいです。
※ $bglistの各値が常に rgba の形式になってないとコンパイルエラー起こすと思いますが
$bglist: (232,110,164,.5), (94,169,221,.5), (120,193,91,.5);

.hoge {
  width: 100px;
  height: 100px;

  @each $color in $bglist {
    $index: index($bglist, $color);
    &:nth-child(#{$index}) {
      background-color: rgba( nth($color, 1), nth($color, 2), nth($color, 3), nth($color, 4) );
    }
  }
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/22 01:13

    的確なご解答誠にありがとうございます。
    @each文、連想配列どちらもとても勉強になりました。

    キャンセル

  • 2015/08/22 01:58

    追記内容確認致しました。
    ありがとうございます。

    キャンセル

  • 2015/08/22 02:00

    少しでもお役に立てれば幸いです!

    キャンセル

関連した質問

同じタグがついた質問を見る

  • CSS

    6025questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • CSS3

    2143questions

    CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

  • Sass

    270questions

    Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。