Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.12.2010, 15:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Как установить в opera option background-color?
В opera селектор выводиться бесцветным, есть ли какой способ сделать его цветным?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title></title>
</head>
<body>
<center><form name="f" action="http://">
</form></center>
<script type="text/javascript">
var c = document.createElement("select"),
col=['333333','444444','555555','666666','777777','888888','999999',
'aaaaaa','bbbbbb','cccccc','dddddd','eeeeee','ffffff','220000',
'330000','440000','550000','660000','770000','880000','990000',
'aa0000','bb0000','cc0000','dd0000','ee0000','ff0000','002200',
'003300','004400','005500','006600','007700','008800','009900',
'00aa00','00bb00','00cc00','00dd00','00ee00','00ff00','000022',
'000033','000044','000055','000066','000077','000088','000099',
'0000aa','0000bb','0000cc','0000dd','0000ee','0000ff','111100',
'222200','333300','444400','555500','666600','777700','888800',
'999900','aaaa00','bbbb00','cccc00','dddd00','eeee00','ffff00',
'110011','220022','330033','440044','550055','660066','770077',
'880088','990099','aa00aa','bb00bb','cc00cc','dd00dd','ee00ee',
'ff00ff','001111','002222','003333','004444','005555','006666',
'007777','008888','009999','00aaaa','00bbbb','00cccc','00dddd',
'00eeee','00ffff','221100','442200','663300','884400','aa5500',
'cc6600','ee7700','ff8800','220011','440022','660033','880044',
'aa0055','cc0066','ee0077','ff0088','002211','004422','006633',
'008844','00aa55','00cc66','00ee77','00ff88','112200','224400',
'336600','448800','55aa00','66cc00','77ee00','88ff00','110022',
'220044','330066','440088','5500aa','6600cc','7700ee','8800ff',
'001122','002244','003366','004488','0055aa','0066cc','0077ee',
'0088ff'];
for ( var n=0; n<col.length; n++)
{var o = document.createElement("option");
  o.appendChild(document.createTextNode(col[n]));
  o.setAttribute("value", col[n]);
  o.setAttribute("style","background-color: #"+col[n]);
  c.appendChild(o);
}
document.f.appendChild(c);
</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 11.12.2010, 16:58
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Давно копал тему стилизации форм/селектов и пр., приходилось решать альтернативным путем. Могу предложить сделать на подобии такой реализации:

<style type="text/css">
#select {
    background: url('http://png-4.findicons.com/files/icons/2212/carpelinx/16/2downarrow.png') 100% 50% no-repeat;
    border: 1px solid #DDD;
    color: #747474;
    cursor: pointer;
    padding-left: 8px;
    user-select: none;
    -moz-user-select: none;
    -o-user-select:none;
    -khtml-user-select: none;
    width: 101px;
    height: 20px;
}

#colors {
    border: 1px solid #DDD;
    display: none;
    overflow: auto;
    width: 110px;
    max-height: 150px;
}

#colors div {
    width: 97px;
    height: 20px;
}
</style>

<script type="text/javascript">
window.onload = function(){
    var colors = document.getElementById('colors'), select = document.getElementById('select');
    
    for(var i=0; i<10; i++){
        var div = document.createElement('div');
        div.style.background = '#'+i+i+i+i+i+i;
        colors.appendChild(div);
    }
    
    select.onclick = function(){
        colors.style.display = colors.style.display == '' ? 'block' : '';
    };
};
</script>
<div id="select">--- select ---</div>
<div id="colors"></div>

Последний раз редактировалось monolithed, 11.12.2010 в 17:33.
Ответить с цитированием
  #3 (permalink)  
Старый 11.12.2010, 17:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

monolithed,
Спасибо за вариант замены селекта, но хотелось бы побороть глюк оперы с option.
Ответить с цитированием
  #4 (permalink)  
Старый 11.12.2010, 18:02
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<style type="text/css" media="all">
select {width: 100px;}
</style>

<script type="text/javascript">
window.onload = function(){
    document.body.appendChild(document.createElement('select'));

    for(var i=0; i<10; i++){
        var option = document.createElement('option');
        option.style.background = '#'+i+i+i+i+i+i;
        document.getElementsByTagName('select')[0].appendChild(option);
    }
};
</script>

Последний раз редактировалось monolithed, 11.12.2010 в 18:41.
Ответить с цитированием
  #5 (permalink)  
Старый 11.12.2010, 18:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

monolithed,
Увы не помогло opera отрисует селект как надо если на странице не будет никаких других видимых элементов, иначе опционы в селекте остануться бесцветными.
Для примера, смотреть в опере.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title></title>
<style type="text/css" media="all">
select {width: 100px;}
</style>

<script type="text/javascript">
window.onload = function(){
    var create_select = document.createElement('select');
    document.body.appendChild(create_select);

    for(var i=0; i<10; i++){
        var option = document.createElement('option');
        option.style.background = '#'+i+i+i+i+i+i;
        document.getElementsByTagName('select')[0].appendChild(option);
          }
};
</script>

</head>

<body>
<form name="f" action="http://" id="f">
<input name="nn" value="test" />
</form>
</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 11.12.2010, 19:11
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<style type="text/css" media="all">
select {width: 100px;}
</style>

<script type="text/javascript">
window.onload = function(){
    document.getElementsByName('form1')[0].appendChild(document.createElement('select'));

    for(var i=0; i<10; i++){
        var option = document.createElement('option');
        option.style.background = '#'+i+i+i+i+i+i;
        document.getElementsByTagName('select')[0].appendChild(option);
    }
};
</script>

<form name="form1" action="">
</form>

<form name="form2" action=""> 
    <input type="text" /> 
</form>

Последний раз редактировалось monolithed, 11.12.2010 в 19:15.
Ответить с цитированием
  #7 (permalink)  
Старый 11.12.2010, 19:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

monolithed,
опера не сдаётся )))
<html>
<head>
  <title></title>
<style type="text/css" media="all">
select {width: 100px;}
</style>
<script type="text/javascript">
window.onload = function(){
    document.getElementsByName('form1')[0].appendChild(document.createElement('select'));

    for(var i=0; i<10; i++){
        var option = document.createElement('option');
        option.style.background = '#'+i+i+i+i+i+i;
        document.getElementsByTagName('select')[0].appendChild(option);
    }
};
</script>
</head>
<body>
<form name="form1" action="">
<input type="text" /></form>

<form name="form2" action="">
</form>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 11.12.2010, 20:10
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от рони
опера не сдаётся )))
тоже не ожидал от нее таких сюрпризов

<html>
<head>
  <title></title>
<style type="text/css" media="all">
select {width: 100px;}
</style>
<script type="text/javascript">
window.onload = function(){
    document.getElementsByName('form1')[0].insertBefore(document.createElement('select'), document.getElementsByTagName("input")[0]);
    for(var i=0; i<10; i++){
        var option = document.createElement('option');
        option.style.background = '#'+i+i+i+i+i+i;
        document.getElementsByTagName('select')[0].appendChild(option);
    }
};
</script>
</head>
<body>
<form name="form1" action="">
    <input type="text" />
</form>
    
<form name="form2" action="">
    <input type="text" />
</form>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поместить курсор в IFrame в Opera mcfly Элементы интерфейса 11 29.10.2010 16:28
Как отследить нажатие клавиш <Alt>+<N> в Opera? alex77 Opera, Safari и др. 8 02.10.2010 16:08
Как в opera узнать, что popup заблокирован? Kirrr Общие вопросы Javascript 0 06.08.2010 21:00
Как писать скрипты под Opera? ucsus (X)HTML/CSS 2 15.04.2009 13:07
Как сделать find() в Opera? romix Events/DOM/Window 0 31.08.2008 15:46