Ответ 1
Я создал прозрачный png, где внешний цвет белый, а флажок частично прозрачен. Я изменил код, чтобы поместить backgroundColor на элемент, и voila!, раскрашенный флажок.
http://i48.tinypic.com/raz13m.jpg (Он говорит jpg, но это png).
Я бы опубликовал этот пример, но я не знаю, как его показать. Какие-нибудь хорошие сайты для песочницы?
Это, конечно, зависит от поддержки png. Вы могли бы плохо сделать это с помощью gif или наложить полупрозрачный слой css над изображением, как вы и предложили, а затем использовать маску gif для маскировки кровотока из цветной коробки. Этот метод предполагает поддержку прозрачности.
Мой png метод использует css, js со страницы, с которой вы связались, с этими изменениями:
JS:
// Changed all instances of '== "styled"' to '.search(...)'
// to handle the additional classes needed for the colors (see CSS/HTML below)
if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className.search(/^styled/) != -1) {
span[a] = document.createElement("span");
// Added '+ ...' to this line to handle additional classes on the checkbox
span[a].className = inputs[a].type + inputs[a].className.replace(/^styled/, "");
CSS
.checkbox, .radio {
width: 19px;
height: 25px;
padding: 0px; /* Removed padding to eliminate color bleeding around image
you could make the image wider on the right to get the padding back */
background: url(checkbox2.png) no-repeat;
display: block;
clear: left;
float: left;
}
.green {
background-color: green;
}
.red {
background-color: red;
}
etc...
HTML:
<p><input type="checkbox" name="1" class="styled green"/> (green)</p>
<p><input type="checkbox" name="2" class="styled red" /> (red)</p>
<p><input type="checkbox" name="3" class="styled purple" /> (purple)</p>
Надеюсь, что это имеет смысл.
Edit:
Вот пример jQuery, который иллюстрирует принцип с помощью флажков: