Как сделать так, чтобы тень блеснула над своими детьми?

Я хочу, чтобы внутренняя тень моего div проходила через его содержимое (обратите внимание, что я не просто хочу, чтобы изображение имело внутреннюю тень, у меня гораздо более сложный прокручиваемый div с таким количеством детей, это лишь минимальный пример.

div {
  white-space: nowrap;
  box-shadow: inset 0 0 10px #000000;
}

img {
  display: block;
}
<div>
  <img src="http://www.claireking.com/wp-content/uploads/2018/01/images.png" />
</div>

4 ответа

Решение

Согласна с ответом Виталия Чмовжа, но в случае, если вы не хотите пробела отступом.

Так что просто используйте это для вашего img тег.

img{
  display: block;
  position:relative;
  z-index:-1;
}

Без изменения размеров вашей модели коробки.

Обновленная скрипка

Просто добавьте отступы для количества тени.

div {
  white-space: nowrap;
  box-shadow: inset 0 0 10px #000000;
  padding: 10px;
}

Смотрите рабочую скрипку: https://jsfiddle.net/f0qasdo6/

UPD: еще один рабочий пример без изменений div размер:

div {
  white-space: nowrap;
  position: relative;
}

div:before {
  content: '';
  display: block;
  position: absolute;
  top:0;
  left: 0;
  right: 0;
  bottom: 0;
  box-shadow: inset 0 0 10px #000000;
}

Недостатком этого подхода является то, что вы не сможете нажимать на содержимое внутри div, поэтому его можно использовать для добавления эффекта к неинтерактивным блокам.

Смотрите скрипку: https://jsfiddle.net/r3t2p2cw/

Проблема в том, что изображение отображается поверх тени.

Попробуй это,

div {
  white-space: nowrap;
    position: relative;
}

img{
  display: block;
}

div::before {
  box-shadow: inset 0 0 10px #000000;
    position: absolute;
    width: 100%;
    height: 100%;
    content: "";
}

Как-то ваш образ не работает для меня. Вот решение:

div {
  width: 70%;
  white-space: nowrap;
  box-shadow: inset 0 0 10px #000000;
}

img{
  width: 100%;
  display: block;
  position: relative;
  z-index: -1;
}

https://jsfiddle.net/tp9pz9w0/7/

Другие вопросы по тегам