Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№119-09-2005 19:58:22

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

(<select> + слои) + IE = Кошмар!

Сегодня заканчивая (практически) сайт, решил посмотреть его в IE... И увидел кошмар! На сайте используется выпадающее DHTML меню. К меню претензий нет, оно использует слои для своей выпадающей части (как и все подобные меню), но беда в том, что прямо под меню оказался выпадающий список(элемент <select>) и в IE, меню выпадает под  этот выпадающий список! Зрелище не для слабонервных. В Fx все в порядке. Истощив запас матерных выражений в адрес создателей этого недобраузера начал эксперементировать, но до сих пор ничего не вышло...
Вот, быстренько слабал демо-страничку этого ужаса

Выделить код

Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>test</title>
	<style>
	div{
	  width: 100;
	  height: 100;
	  background-color: blue;
	  position: absolute;
	  z-index: 1;
	}
	
	select{
	  width: 100px;
	  background-color: green;
	  position: absolute;
	  z-index: 0;
	  left: 20;
	}
	
	input{
	  width: 100;
	  position: absolute;
	  z-index: 0;
          top: 30;
	  left: 20;
	}
	
	</style>
</head>

<body>
<div>&nbsp;</div>

<select name=1>
  <option>one</option>
  <option>two</option>
</select>
<input type=text>

</body>
</html>

<input> введен для демонстрации нормального поведения. Посмотрите в IE и Fx... Может у кого есть идеи как решить эту проблему? Менять что-то на сайте уже поздно, да и жаль нескольких месяцев работы...

Отсутствует

 

№219-09-2005 20:01:54

LattyF
Участник
 
Группа: Members
Откуда: г. Самара
Зарегистрирован: 19-06-2005
Сообщений: 2924

Re: (<select> + слои) + IE = Кошмар!

А у меня вообще везде (опера, фокс, осел) глючит :( Везде синий квадрат, а под ним меню и поле ввода. Или так должно быть?


Black holes were created when the God divided by zero.

Отсутствует

 

№319-09-2005 20:37:42

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: (<select> + слои) + IE = Кошмар!

Да, синий квадрат (эмуляция меню) должна быть поверх всех полей (<select> и <input>). В IE он под выпадающим списком и над текстовым полем...

Отсутствует

 

№419-09-2005 21:45:30

Bananas
Участник
 
Группа: Members
Откуда: Minsk, Belarus
Зарегистрирован: 12-03-2005
Сообщений: 1059
Веб-сайт

Re: (<select> + слои) + IE = Кошмар!

oh.gif
:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4


Sometimes I give myself the creeps,
Sometimes my mind plays tricks on me...

Отсутствует

 

№519-09-2005 21:55:06

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
Веб-сайт

Re: (<select> + слои) + IE = Кошмар!

ragnaar
Это ж баян ещё тот. В IE select сдеан окном и поэтому всегда находится поверх любых элементов. (кроме iframe, кажется). В грядущем IE7 баг полечен.


Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№619-09-2005 22:30:33

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: (<select> + слои) + IE = Кошмар!

Bananas
Ну да, я просто для <option> правило не прописал...
Lynn

В грядущем IE7 баг полечен.

Но сейчас мне от этого не легче... :(

Отсутствует

 

№723-09-2005 16:32:24

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: (<select> + слои) + IE = Кошмар!

Наверное, я был неоригинален, набрав в строке поиска google строку "z-index in ie" :)

В найденном мною, в качестве решения предлагается закрывать <select> элементом <iframe>. То есть, для приведенного ragnaar'ом кода надо сделать такие изменения:

Выделить код

Код:

...
    div{
      ...
      z-index: 3;
    }

    #ifr{
    top: 0;
    left: 0;
      width: 100;
      height: 100;
      position: absolute;
      z-index: 2;
    }
...
<body>
<div id="div1">&nbsp;</div>
<iframe id="ifr" frameborder="no"></iframe>
...

Это работает в IE и Firefox, но не работает в Opera.

Я попробовал сделать так, чтобы <iframe> был только в IE. Для этого требуются такие изменения:

Выделить код

Код:

...
    div{
      ...
      z-index: 3;
    }

    select{
      ...
      behavior: url(ragdht.htc);
    }
...
<body>
<div id="div1">&nbsp;</div>
...

и дополнительный файл ragdht.htc:

Выделить код

Код:

<?xml version="1.0"?>

<public:component xmlns:public="urn:HTMLComponent" lightweight="true">

    <public:attach event="ondocumentready" handler="myfunc2"/>

    <script type="text/javascript">
        //<![CDATA[

        function myfunc2 ()
        {
            var fr = element. document. createElement ("iframe");
            var x = element. document. all ("div1");
            fr. style. width = x. clientWidth;
            fr. style. height = x. clientHeight;
            fr. style. left = x. offsetLeft;
            fr. style. top = x. offsetTop;
            fr. style. zIndex = 2;
            fr. style. position = "absolute";
            fr. scrolling = "no";
            fr. frameBorder = 0;
            fr. width = "100%";
            fr. height = "100%";
            element. document. body. appendChild (fr);
            element. document. recalc ();
        }

        //]]>
    </script>

</public:component>

Это работает в IE, Firefox и Opera, элемент <iframe> вставляется в структуру документа только в IE. Правда, IE будет ругаться на активное содержимое.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№823-09-2005 16:56:30

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: (<select> + слои) + IE = Кошмар!

Хм, про трюк с Iframe я тоже читал... Я пробовал - у меня не прокатило. Попробую твой вариант. Спасибо.

Отсутствует

 

№923-09-2005 22:02:14

vladmir
SeaMonkey - вот это браузер
 
Группа: Extensions
Откуда: НН
Зарегистрирован: 16-10-2004
Сообщений: 4630

Re: (<select> + слои) + IE = Кошмар!

ragnaar

Но сейчас мне от этого не легче...

С ИЕ самое забавное не то, что он сейчас что-то не поддерживает в последней версии, а то, что существенная часть пользователей сидят на старых версиях и нужно оптимизировать и под старьё. То ли дело моззилловцы и оперовцы.

Отсутствует

 

№1023-09-2005 23:57:19

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: (<select> + слои) + IE = Кошмар!

vladmir
Для себя я уже решил, что после выхода ИЕ7 на неподдержку фич в 6 я забиваю... Кто не может без ИЕ - установит 7, остальные(пользователи W2K например) пусть юзают фокса или оперу... Хватит заниматься трюкачеством, пора писать по стандартам...

Отсутствует

 

№1124-09-2005 11:17:13

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: (<select> + слои) + IE = Кошмар!

ragnaar
Интересный подход. Однако, кто кому больше нужен, Вы посетителям, или посетители Вам? У IE7 есть несколько особенностей, сильно затрудняющих или даже делающих невозможной установку на многие машины.

Отсутствует

 

№1224-09-2005 19:50:18

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: (<select> + слои) + IE = Кошмар!

Al_H

У IE7 есть несколько особенностей, сильно затрудняющих или даже делающих невозможной установку на многие машины.

Поэтому я и написал

остальные(пользователи W2K например) пусть юзают фокса или оперу...

Вообще, это тема для флейма, тем более что там ее уже поднимали...

Отсутствует

 

№1325-09-2005 01:08:16

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: (<select> + слои) + IE = Кошмар!

Все-таки жалко, что в Ёксплорерах, включая 6 и 7, со стандартами так плохо. Это на руку Файрфоксу и Опере, равно как и Сафари, но делает Веб скучнее и менее красивым, и по разработчикам бьет. В некоторых случаях обход багов увеличивает таблицу стилей на 30-40%.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]