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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Sass

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

compass

CompassはSassを拡張したオープンソースのCSSフレームワークです。 特徴は、ベンダープレフィックス等の複雑なCSSを手軽に記述できる点、 CSSスプライト画像を簡単に作成できる点などが挙げられます。

CSS

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

Q&A

2回答

2964閲覧

【Sass3.3】連想配列を使用した@each内でインデックスキーを取得したい

J0110

総合スコア8

Sass

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

compass

CompassはSassを拡張したオープンソースのCSSフレームワークです。 特徴は、ベンダープレフィックス等の複雑なCSSを手軽に記述できる点、 CSSスプライト画像を簡単に作成できる点などが挙げられます。

CSS

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

0グッド

0クリップ

投稿2016/03/01 02:54

列を2つ定義せず連想配列を使用して定義した場合、
エラーが出てしまいインデックスの値が取ることができずに困っています。
エラーの内容は$keyが空が原因のシンタックスエラーです。

連想配列でのインデックス値の取り方がわかる方いらっしゃいましたら教えて頂きたく思います。

【Sass文】

$fruit: ( apple: #FF0000, lemon: #FFEB3B, peach: #E91E63 ); @each $name, $color in $fruit { $key: index( $fruit, $name ); li{ &:nth-child(#{$key}){ background: url('../images/#{$name}.png') #{$color}; } } }

【CSS(このような出力になってほしい)】

li:nth-child(1) { background: url("../images/apple.png") #FF0000; } li:nth-child(2) { background: url("../images/lemon.png") #FFEB3B; } li:nth-child(3) { background: url("../images/peach.png") #E91E63; }

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ちょっと格好悪いですが、これで出来ました。
sass 3.4.21

番号部分はインデックスという意味でidxにしました。

sass

1$fruit: ( 2 0: ( 3 apple, #FF0000 4 ), 5 1: ( 6 lemon, #FFEB3B 7 ), 8 2: ( 9 peach, #E91E63 10 ) 11); 12 13@each $idx, $item in $fruit { 14 $key: nth($item, 1); 15 $val: nth($item, 2); 16 li{ 17 &:nth-child(#{$idx}){ 18 background: url('../images/#{$key}.png') #{$val}; 19 } 20 } 21}

どうでしょうか。

投稿2016/03/03 15:27

編集2016/03/03 15:35
ogaaaan

総合スコア765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

$key: index( $fruit, $name );

この部分、もしかしてだけど、$fruit自体に数値としてのインデックスがないからじゃないですかね。
あるのは連想配列のkeyなんで、文字列だし。

$iとかつくっていてレート内でインクリメントするのがよいかな。

参考になれば幸いっす。

投稿2016/03/01 03:54

ogaaaan

総合スコア765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

J0110

2016/03/03 06:54

ogaaaanさん 早速ご回答ありがとうございます。 お返事が遅くなって申し訳ありません。 $fruitの中でインデックスとなるような数字を設けるということですよね。 やはり手動的なやり方になってしまいますよね>< 回答の捉え方が間違えてましたらすいません。 理想としては、 $fruitの中の配列が1000個とか多くなった場合は手動だとミスが出てしまうので、 自動で上から番号(1スタート)が振られると良いんですが...
ogaaaan

2016/03/03 15:25

なかなか時間なくて遅れましたが、 sass 3.4.21で出来ました。 ハイライト表示したいので別回答でコメントしますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問