#html #css
#HTML #css
Вопрос:
Вот проблема, которую я пытался решить какое-то время! Я искал все решения, но не смог их найти. Для начала вот как структурирован мой html (только скелетная структура) —
<body>
<div class="header"> </div>
<div id="content-wrapper">
<a href="/some.html"><div class="feedback_div"></div></a>
</div>
<div id="footer-wrapper"></div>
</body>
Теперь мой .feedback div был установлен в фиксированное положение и задан top: 40%;
и right: 0;
и z-index тоже (конечно). Хотя это нормально работает во всех браузерах, как обычно, IE 6 все портит. Итак, чтобы воспроизвести его влияние на IE 6, я получил это решение —
/* IE 6 only */
* .feedback_div
{
z-index: 9998;
position: absolute;
top: expression( (( t=document.documentElement.scrollTop) ? t: document.body.scrollTop) 'px');
right: -140px;
}
* #content-wrapper
{
position: relative;
z-index: 9999;
}
* #footer-wrapper
{
z-index: 0;
position: relative;
}
* html
{
overflow: auto;
}
* html body
{
height: 100%; /* required */
}
/* END: IE 6 only */
Но теперь проблема в том, что, хотя .feedback div следует за вами при прокрутке, когда он достигает .footer div, за ним следует feedback div. Я попытался поиграть с z-индексом, но ничего не получилось.
Теперь я знаю, что идеальным решением было бы переструктурировать html таким образом, чтобы .feedback div был дочерним <body>
. Но я не собираюсь менять структуру, потому что это означало бы возиться с серверной частью. Я пытаюсь решить это только для ie.. так что даже какой-то взлом подойдет, если он работает так, как задумано.
Итак, есть ли у кого-нибудь решение для этого? Любая помощь будет оценена.
Ответ №1:
В коде есть некоторые ошибки:
- У вас есть
div
тег внутриa
тега, который недействителен. Браузеры будут перемещатьdiv
элемент за пределыa
элемента. - У вас есть
class="feedback"
div
, но вы используете.feedback_div
в CSS, поэтому стиль не будет применяться.
Когда вы используете z-index, он применяется к элементам того же уровня, поэтому вы должны применить его к родительскому элементу элементов обратной связи, поскольку он находится на том же уровне, что и нижний колонтитул.
Комментарии:
1. Привет, спасибо, у меня была какая-то ошибка в коде здесь, я скопировал / вставил css, забыл изменить селекторы, извините за это.
2. Что касается вашего решения, вы можете видеть, что я применяю z-index к #content-wrapper и #footer-wrapper. И из-за того, что div находится внутри тега <a>, я знаю, что это не семантически правильно, но я хотел избежать дополнительного тега с (который я бы ввел) структурой div>a>span . И он отлично работает во всех браузерах, даже в IE6, я не вижу, чтобы он перемещался из тега <a> в DOM
3. @ShalomSam: Я понимаю… z-индекс должен работать, но наличие блочных элементов внутри встроенных элементов определенно вызовет у вас проблемы. Возможно, вы также столкнулись с ошибкой z-index, из-за которой IE игнорирует z-индекс, если родительский элемент не имеет z-индекса: richa.avasthi.name/blogs/tepumpkin/2008/01/11 /…
4. я попытался указать его родительский элемент.. который в данном случае является телом с z-индексом. Но это тоже не помогло.
Ответ №2:
Если я правильно помню, для IE6 вам нужно установить zoom: 1
для корректной работы z-index.
Комментарии:
1. хм.. но к какому элементу мне применить это свойство??
2. я пытался использовать zoom: 1; для каждого использования z-index. Но, похоже, это тоже не помогает
3. Можете ли вы разместить файлы где-нибудь в Интернете и ссылаться на них? Возможно, я смогу быть более полезным, если смогу увидеть полный результат в браузере.
4. вы увидите кнопку обратной связи с правой стороны (во всех браузерах, кроме IE6)