@mixinの繰り返し生成について

このQ&Aのポイント
  • ミックスインを繰り返し文を使用して自動的に生成する方法について教えてください。
  • 提供されたコードではエラーが発生しているようですが、他の方法でミックスインを自動生成することは可能でしょうか?
  • また、ミックスインを大量に作成して全てシングルトン構成にする理由についても教えてください。
回答を見る
  • ベストアンサー

@mixinの繰り返し生成について

もしかしたら仕様で出来ないのかもしれないのですが、 ご存知の方は教えてください。 ミックスインを繰り返し文を使用して自動的に生成していきたいのですが、出来るのでしょうか? 試したコードが以下です。 -------------------------- @for $i from 1 through 5 { @mixin test#{$i}() { .test#{$i} { /* style */ } } } -------------------------- 上のコードではエラーになってしまいます。 そもそも@に対して変数を設定すること自体できないのかもしれませんが。 他に別の方法等ありましたら教えていただきたく思います。 宜しくお願いいたします。 ※また、なぜmixinを自動生成するのかというと、mixinを大量に作成し、全てシングルトン構成にしたいからです。

  • CSS
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

現状では無理なようですね。 >※また、なぜmixinを自動生成するのかというと、mixinを大量に作成し、全てシングルトン構成にしたいからです。 たぶん @include test1; @include test2; という書き方をしたいということだと思いますが、 @include test(1); @include test(2); カッコ付の方が基本ですし、その方が汎用性がありますし、 よほどの理由がない限り、動的にmixinのIDを作る方法はサポートされないと思います。 ------------------ 連番のセレクタを作りたいのであれば、@includeをループさせればいいです。 引数をセレクタにすれば、子セレクタなども作れます。 @mixin test($i) { .test#{$i} { /* style */ } } @for $i from 1 through 5 { @include test( $i ); } @include test( " span" ); ---- 出力 ---- .test1{/* style */} .test2{/* style */} .test3{/* style */} .test4{/* style */} .test5{/* style */} .test span{/* style */}

javat8686
質問者

お礼

これ以上ない様な回答ありがとうございます。 >@include test1; >@include test2; >という書き方をしたいということだと思いますが、 まさにこれです。 やはり現状できないのですね、 @for $i from 1 through length($colorArray) { .back-color#{$i} { @include backColor(#{nth($colorArray,$i)}); } } ↑のようにしているのですが、 使うものだけクラスの生成をしたかったのです、 これだと、配列に入った値の全てのクラスを作ってしまうので・・・ なにかそれに変わるような方法の発見、もしくは機能が追加されればいいのですが。

その他の回答 (1)

回答No.2

>No.1お礼 よくわかりませんが、それは$colorArrayを調整すべき事ではないですかね。 でなければ@mixin backColorの中身、つまり @mixin backColor( $colorName ){ この部分 } で調整できると思いますが。

関連するQ&A

  • Dreamweaverのコード生成について

    こんにちは。 Dreamweaverのコード自動生成について教えていただきたいと思っています。 Dreamweaver8で、textに色をつける際、自動生成されるコードに外部CSSをあてないように作らさせるにはどうしたらよいのでしょう。 「デザイン」を選択して、文字列に色をつけると、 自動で生成されたコードは下のようになります。 <span class="style1">あいうえお</span> (style1は、.style1 {color: #FF0000}) それを、↓のように自動生成させる方法はありませんか? <span style="color: #FF0000;">あいうえお</span> すべて、<body> ~ </body>の中で完結させる記述を生成させたいのです。styleを使わない方法でもいいのです。 むかし、DREAMWEAVER4を使っていました。 CSSをつかわないあの感覚でソース生成させたいのです。 教えてください。よろしくお願いいたします。

  • テストコードのコーディング負担を減らす方法

    こんにちは。 今会社で扱っているコードにテストコードがついておらず、かなり大量にテストコードを書かなくてはいけなくなりそうです。 今はJUnitとEasyMockを使っているので、何もないよりはもちろん楽なのですが、それでもかなりめんどくさくて。。。 テストコードを自動生成する方法などはないでしょうか?

    • ベストアンサー
    • Java
  • 空白文字列の生成

    今、javascriptの勉強をしているのですがインターネットで調べてみても、分からないところがあるので教えてください。 問題のプログラム仕様は 空白文字列(スペース)を生成する関数を作る。 関数を利用して、イメージファイルの先頭にスペースを表示していく。 コードの入力手順は 1、空白文字列を作成するspc(n)関数を作る for(i=1; i<n; i++) s=s+" "; return s; 2、イメージファイルを表示する。 3、for文を使用して「i」が1,3,5,7,9になるように繰り返しを行う。 4、関数spc(i)でi個分の空白文字列と生成し、「スペースi」とイメージファイルの間に表示させる。 という問題なのですが2番と3番はできるのですが1番と4番が分からないので教えてください。お願いします

  • 変数名に変数を使用

    for文を使って,double型の変数test1,test2,test3…をN個生成したいのですが,どのようにすればいいのでしょうか?

  • for文内での変数定義

    以前にC++の講義を受けた際に for(int i = 0; i < hoge ; i++){    int j;    ・    ・    ・ } のようなコードを書くと、jがhoge分だけ"生成されて しまう"のでよろしくありません。と教えられました。 しかし、最近別の方からこの部分に関しては、jをfor文の 中に定義しようが、最適化?によりfor文の外に出された バイナリが生成されると聞きました。そのため、jが 必要となる直前でjを定義しても(for文の中に定義しても) 問題ない。と教えられました。 どちらが正しいのでしょうか? 近年にC++の仕様変更があったとしたら、それに伴い 変更されたのでしょうか? また、どのようなコードが望ましいなどありましたら 教えてください。

  • 画像編集のバッチ処理ができるツールを教えて下さい

    適切なカテゴリが見つけられませんでしたので、こちらでお願いします。 今、テスト用の画像を大量に自動作成したいと思っています。 具体的には、1つのベースとなる画像に任意の文字列を入れ込んでいきたいです。 やりたいことは、以下の擬似コードのような単純なことなのですが、こういうことができるフリーのツールをご存知でしたら、教えて下さい。 windows7 64bitマシンです。よろしくお願いします。 for i = 0; i < テストケース数; i++{   ベース画像を開く   ベース画像の上から、「テスト_i 」と文字を入れる   「テスト_i.jpg」という名前で新規保存する }

  • VB.NETでDB書き込みエラー

    VB.NETで開発を行っています。データベースを使用するのですが、 フィールド数が150近いものになっており、クエリの自動生成ができなくて、 その部分は手動で作成しました。 で、DBへ書き込みを行う際に、INSERT文を作成していますが、そこで使用して いる@付の変数が宣言されていない、という実行エラーが発生してます。この @付の変数はどこで宣言を行えばよろしいのでしょうか? よろしくお願いいたします。

  • as3 addEventListenerの動的な生成について

    addEventListenerを動的に生成したいのですが、 下記のコードは動いてくれません。(エラーはないです。) //2つのインスタンスは適当な座標においてあります for(var num=0; num < 2; num++){ var mc = "test"+num+"_mc"; mc = new MovieClip(); mc.addEventListener(MouseEvent.CLICK, move); } function move(event:Event):void{ event.currentTarget.x = 0; } 上記のような場合は、 どのようにすればよいのでしょうか。 ご教授お願いいたします。

    • ベストアンサー
    • Flash
  • 教えて下さい。for文内での変数宣言について

    Javaのプログラムで困っています。 for文内でfor分だけ変数を宣言したいのですが、 その際変数名に数字(ナンバリング)を付与した形にしたいと考えています。 例) String Test1 String Test2 : : 上記の様な場合、for文をどの様に作成したらいいですか? num = 5; for(int i = 0; i < num; i++){ String Test = null; } ⇒このままだと変数Testが1つしか出来ない・・・   変数の後にナンバリングしたいのですが上手くいきません。 numの数はユーザの指定で毎回変更されるため、 for文でその数だけ変数を作成したいと考えています。 どなたかご教授宜しくお願い致します。

    • ベストアンサー
    • Java
  • 変数名

    以下のような変数があります。 test01 test02 test03 . . . 01の数字部分を↓のような感じにはできないのでしょうか? for(i = 0; i < 10; i++){ if(test + i == 0){} }

    • ベストアンサー
    • Java

専門家に質問してみよう