我有 4 个文本框构成 text-shadow 属性的输入,并且包含在 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>
现在,我手动组合四个输入以获得所需的 css 值。像这样的东西:
$('#elem').css('text-shadow', $('#hshad').val() + "px " + $('#vshad').val() + "px " + $('#bshad').val() + "px " + $('#cshad').val());
有没有办法可以将这些值“映射”到#shadow
作为 getter 和 setter 的值?
例如$('#shadow').val()
会给我
"0px 1px 5px #FFFFFF"
我可以通过以下方式设置四个输入的值:
$('#shadow').val("0px 1px 5px #FFFFFF")
这几乎是为了在编辑具有预先退出规则的记录时能够遍历 CSS 规则并设置表单字段值的目的(因为我知道你会问)。这一切都归功于我正在制作的邪恶的所见即所得。
编辑
好的,所以为了这个问题,重要的是要从val()
. 我正在遍历 ~20-30 CSS 规则,并且不想被单一规则所困扰。我可以在循环之后返回并分解值,但我希望扩展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);
})
漂亮,整洁,舒适。