text-shadow プロパティの入力を構成する 4 つのテキスト ボックスがあり、次のように DIV 内に含まれています。
<div id="shadow">
<input type="number" min="-5" max="5" step="1" value="0" id="hshad" />
<input type="number" min="-5" max="5" step="1" value="0" id="vshad" />
<input type="number" min="0" max="20" step="1" value="0" id="bshad" />
<input type="text" value="#000000" id="cshad" />
</div>
現在、4 つの入力を手動で組み合わせて目的の CSS 値を取得しています。このようなもの:
$('#elem').css('text-shadow', $('#hshad').val() + "px " + $('#vshad').val() + "px " + $('#bshad').val() + "px " + $('#cshad').val());
これらの値を#shadow
ゲッターとセッターの両方の値に「マップ」する方法はありますか?
たとえば$('#shadow').val()
、私に与えるだろう
"0px 1px 5px #FFFFFF"
そして、次のようにして 4 つの入力の値を設定できます。
$('#shadow').val("0px 1px 5px #FFFFFF")
これは、既存のルールを持つレコードを編集するときに、CSS ルールをループしてフォーム フィールドの値を設定できるようにするためのものです。これはすべて、私が作成している邪悪な WYSIWYG に適用されます。
編集
わかりました。この質問のために、から返すことが重要ですval()
。私は 20 ~ 30 個の CSS ルールをループしていますが、1 つのルールで困惑する必要はありません。ループの後に戻って値を分割することもできましたが、コードを拡張してきちんと整理されたループに保つことを望んでいましたval
。
例
ループする CSS (JSON オブジェクトとして)"
{
"top": "48px",
"left": "59px",
"width": "100px",
"height": "100px",
"font-family": "Oxygen",
"font-size": "1em",
"font-weight": "normal",
"color": "rgb(51, 51, 51)",
"text-shadow": "rgb(0, 0, 0) 1px 0px 0px",
"background-color": "rgba(0, 0, 0, 0)",
"border-radius": "0px",
"-moz-border-radius": "0px",
"box-shadow": "none",
"-moz-box-shadow": "none",
"padding": "0px"
}
次のように、各フォーム フィールドにdata-prop
関連する CSS プロパティの属性を与えます。
<input type="text" data-prop="font-family" />
次に、次のようにルールをループします
$.each(cssRules, function(name, value) {
$('[data-prop=' + name + ']').val(value);
})
かっこよく、かっこよく、心地よく。