Я пытаюсь добиться эффекта внутренней тени на простой коробке, что-то вроде:
альтернативный текст http://gotinsane.com/test.jpg
где зеленое поле - это содержимое внутри другого поля.
Моя проблема в том, что если я добавлю фону содержимого какой-либо фон, эффект тени блока внешнего поля исчезнет!
Вот пример моей проблемы (с разметкой и css), я установил высоту содержимого меньше, чтобы подтвердить проблему - по крайней мере, меня не волнует IE *, это всего лишь тест.
Есть идеи?
UPDATE
Содержимое внутри поля является своего рода слайдом, здесь пример (исходная проблема) .
Ответ тридцатки делает свое дело, но заставляет меня немного взломать, изменив фон оболочки в зависимости от содержимого: * пример 1010 * (хитрость тридцати) .
Это может быть решением, но мне оно не очень нравится, и я до сих пор не понимаю, почему тень внешнего блока попадает за фон внутреннего блока (цвет, изображение)
ОБНОВЛЕНИЕ 2
Говоря об этой проблеме на другом форуме, я нашел другой способ : в основном, вместо использования box-shadow
для оболочки, который будет действовать как маска, я использую box-shadow
и border-radius
непосредственно на содержание (.step
элементов)
Однако эффект «маски» - это именно то, чего я пытался достичь, так что это тоже не решение.
Я до сих пор не понимаю, как и почему фон внутреннего элемента мешает дизайну внешнего элемента, или почему тень, отброшенная от внешнего элемента, попадает за внутренний. Может ли это быть ошибкой CSS?
Update3
Кто-то открыл ошибку в mozilla и получил ответ, который прояснил «проблему»:
С http://www.w3.org/TR/css3-background/#the-box-shadow:
С точки зрения контекста стека и порядка рисования, внешние тени
элемент рисуется непосредственно под фоном этого элемента, а
внутренние тени элемента рисуются непосредственно над фоном
этот элемент (ниже границ и изображения границы, если есть).
В частности, фоны children элемента будут нарисованы выше
тень вставки (и на самом деле они рисуют над границами и фоном
сам элемент).
Таким образом, рендеринг - это именно то, что требуется для спецификации.
UPDATE4
Фабио А. указал другое решение, с css3 pointer-events
.
Хорошо выглядит и работает на IE8;)