Как заставить границы CSS отображаться на многослойной странице?
Вопрос
Я пытаюсь закодировать графы Box и Whiskers в html. Проблема в том, что у меня есть границы вокруг div (как в Box), но эти границы исчезают при наложении предыдущего слоя, который содержит цветное изображение с полосами. Предпочтение не состоит в том, чтобы использовать фоновое изображение (или цвета) здесь, если я могу избежать этого.
HTML-код:
<table cellspacing="0" cellpadding="0" id="BoxAndWhiskers" width="100%">
<tr class="graphArea">
<td><div class="graphColors"><img src="ReadingColorScale.png" width="100%" height="250" alt="" /></div>
<div class="graphBoxes"><img src="black.gif" width="2" height="50" alt="" class="Whisker" /><div class="graphBox"><img src="black.gif" width="100%" height="2" alt="" style="padding-top: 10px; padding-bottom: 10px;" /></div><img src="black.gif" width="2" height="50" alt="" class="Whisker" /></div></td>
</tr>
</table>
и css:
table#BoxAndWhiskers tr.graphArea td {
width: 33%;
}
table#BoxAndWhiskers tr.graphArea td div.graphBoxes {
z-index: 1;
margin-top: -250px;
}
table#BoxAndWhiskers tr.graphArea td div.graphBoxes img.Whisker {
display: block;
margin-left: auto;
margin-right: auto;
}
table#BoxAndWhiskers tr.graphArea td div.graphBoxes div.graphBox {
margin: 0;
padding: 0;
margin-left: auto;
margin-right: auto;
width: 50%;
border: 2px solid black;
}
Обратите внимание на верхнюю границу -250px в css для div.graphBoxes. Когда это значение уменьшится, вы увидите, что границы вокруг поля появляются, когда они выглядывают из предыдущего слоя.
Можно ли показать границы в этом случае? Спасибо ...
Решение
Вы не можете наложить элемент, не имея позиционирования.
.graphBoxes {
position: relative;
z-index: 1;
margin-top: -250px;
}
Другие советы
Возможно, вам просто нужно отрегулировать поля и отступы, чтобы границы отображались так, как вы хотите. Мой совет - убрать все отступы и поля и добавить
* { margin: 0; padding: 0; }
в начало вашей таблицы стилей. Затем настройте все отступы и поля, ширину и высоту, чтобы они выглядели так, как вы чувствуете.
Имейте в виду, что z-index не применяется к элементам, которые не имеют свойства position в таблице стилей.
Скромное предположение, что ваша отрицательная разница вызывает проблемы.
Иногда случается, что у div нет индикации в файле css, поэтому он автоматически устанавливает границу или отступ в какое-то значение пикселя. Если вы укажете тег img в css, вы можете избавиться от этого раздражающего параметра. Я полностью согласен с позицией ответа. Вы должны установить любой div или другой созданный вами селектор как релятивный, статический, абсолютный и т. Д. Подробное объяснение свойства позиции можно найти, конечно, в школе CSS W3C.
Надеюсь, что это может помочь! Р>
Трудно точно сказать, что происходит без изображения, но я думаю, что если вы увеличите z-индекс нужного слоя сверху до 9999, а затем измените слой под z-индексом на -100, это должно работать как положено. Р>