Отступы для <option>

Ashotovich

Новичок
Отступы для <option>

Всем привет!

Подскажите, пожалуйста, есть ли какой-нибудь альтернативный способ делать отступ для <option> списка <select> кроме nbsp?

Заранее спасибо.
 

Кром

Новичок
В качестве альтернативы есть тег optgroup, можешь с ним поэксперементировать.
 

Ashotovich

Новичок
Неа. Не пашет. =( Ни leftmargin, ни padding-left. =(((

-~{}~ 05.05.04 10:29:

Да, в Мозилле padding-left действительно работает. Вот только толку от этого... :(
 

Ashotovich

Новичок
Неа. В IE не работает. :(

-~{}~ 05.05.04 11:01:

Вот пример кода:
PHP:
<select size="6">
<option>level 1</option>
<option>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;level 2</option>
<option>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;level 3</option>
<option>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;level 4</option>
</select>
Как сделать тоже самое, но без тучи nbsp?
 

confguru

ExAdmin
Команда форума
<OPTGROUP label="Overture">
<option value="1.php">Statistiques 1</option>
<option value="2.php">Statistiques 2</option>
</OPTGROUP>
 

Ashotovich

Новичок
Автор оригинала: admin
<OPTGROUP label="Overture">
<option value="1.php">Statistiques 1</option>
<option value="2.php">Statistiques 2</option>
</OPTGROUP>
Не совсем понял. Где здесь отступы?

Вот, на всякий случай, скриншот того, что должно выйти:

 

confguru

ExAdmin
Команда форума
Ashotovich

Сделай это стилями... для каждой option свой стиль..
 

Ashotovich

Новичок
Без мазы. Не любит IE, когда к <option> стиль прикручивают. Не работают ни margin, ни padding. Может, есть еще какой стиль?

-~{}~ 05.05.04 12:08:

Да, text-indent тоже не пашет :(
 

Ashotovich

Новичок
Дааа... Западло. Спасибо, как говорится, товарищу Гейтсу за наше счастливое. Мде. :(
Может, есть еще идеи? Да, можно проставлять вместо nbsp просто точку с пробелом - занимает ровно в шесть раз меньше байт, но выглдяит страшнее:
 

гоша

Guest
Трафик экономим или чем-то еще nbsp не нравятся?
Можно еще так

Код:
<select id="ID_SEL">
<option>1aaa</option>
<option>1bbb</option>
<option>2ccc</option>
<option>3ddd</option>
<option>4eee</option>
</select>

<script>
onload=function(){
	var cc=document.getElementById("ID_SEL").options;
	for(var i=0;i<cc.length;i++)
		cc[i].text=
			new Array(parseInt(cc[i].text.charAt(0))).join(" ")+
			cc[i].text.substr(1);
}
</script>
 

Кром

Новичок
Ashotovich
На самом деле такие вещи как поведение выпадающих списков просто неопределено конкретно в спецификации. Поэтому "товарища Гейтса" ничего не обязывает приделывать к спискам стили и т.д.
А поддержка отдельных свойств типа "background-color", это скорей всего инициатива на местах.
 

Ashotovich

Новичок
2 Гоша:
Трафик экономим или чем-то еще nbsp не нравятся?
Именно трафик. Только не свой, а клиентский. Потому как работать из какого-нибудь Невинномысска с базой, в которой формы по 100 кб весят - жуть. А за совет спасибо. Я уже думал насчет JS, но список имеет сложную иерархию, все берется из базы. Хотя, в принципе, это реализуемо. Надо поэкспериментировать. ;)

2 Кром:

Да я как-то гейтсофобией не страдаю. :) Просто обиделся, что в Мозилле функция есть, а в самом лучшем браузере на свете - нет. ;)

-~{}~ 05.05.04 15:06:

Вот, слегка переделал. Уровень записи берется из базы и пишется в искусственное свойство level каждой option. А уж на основе уровня можно и отступ делать, и цвет задавать.
Код:
<select id="select1" size="6">
<option level="1">aaa</option>
<option level="2">bbb</option>
<option level="3">ccc</option>
<option level="4">ddd</option>
<option level="2">eee</option>
</select>

<script>
onload=function(){
	var arr_opt=document.getElementById("select1").options;
	var arr_col=new Array("#ff0000", "#ff00ff", "#00aadd", "#00ff00", "#0000ff");
	for(var i=0;i<arr_opt.length;i++) {
		lvl=parseInt(arr_opt[i].level);
		arr_opt[i].text=new Array(lvl).join("    ")+arr_opt[i].text;
		arr_opt[i].style.color=arr_col[lvl];	
	}
}
</script>
Да, Гоша, решпект за интересное решение с new Array(...).join(" "). Спасибо, а то так бы в цикле и делал... ;)

-~{}~ 05.05.04 15:34:

А, еще хохма. В Мозилле сей код не работает. Наш ответ, так сказать, чемберлену. ;)

-~{}~ 05.05.04 15:36:

Мде. И в коде форума чтобы внутри
Код:
не реагировало на ;)
 

гоша

Guest
для мозиллы

--lvl=parseInt(arr_opt[c].level);
++lvl=parseInt(arr_opt[c].getAttribute("level"));

--new Array(lvl).join(" ")
++new Array(lvl).join("\xA0\xA0\xA0\xA0")

> И в коде форума чтобы внутри

я лично полагаю, что BB и его клоны -- жуткий отстой.
 

Ashotovich

Новичок
Гоша, спасибо.
Мои пользователи, к счастью, ничего кроме ИЕ не видали в жизни. ;)
 

Cruiser

Новичок
А у меня <optgroup label="lala"> вообще ничего не выводит.
Какой формат правильный то?
 
Сверху