Как заставить границы CSS отображаться на многослойной странице?

StackOverflow https://stackoverflow.com/questions/836415

  •  08-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь закодировать графы 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, это должно работать как положено.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top