Добавление тени к трапеции

Во-первых, этот вопрос может быть похож на это, но форма в моем случае другая, поэтому он не может мне помочь.

Код трапеции следующий:

#light {
  /*setting the element*/
  border-bottom: 164px solid grey;
  border-left: 148px solid transparent;
  border-right: 165px solid transparent;
  height: 0;
  width: 80px;
}
<div id = "light"></div>

Просто чтобы уточнить, я пытаюсь добавить эффект тени, как в следующем примере:

#bulb {
  /*setting the element*/
  background: grey;
  width: 200px;
  height: 200px;
  border-radius: 50%;
  /*adding "light" (shadow)*/
  box-shadow: 0 0 100px 10px rgba(128, 128, 128, 0.5);
}
<div id = "bulb"></div>

Когда я пытаюсь добавить обычный box-shadow:, моя трапеция становится обычным прямоугольником с белыми частями.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
718
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вместо box-shadow вы можете использовать фильтр drop-shadow, например

filter: drop-shadow(0 0 40px #222);

#light {
	/*setting the element*/
	border-bottom: 164px solid grey;
	border-left: 148px solid transparent;
	border-right: 165px solid transparent;
	height: 0;
	width: 80px;
    filter: drop-shadow(0 0 40px #222);

}
<div id = "light"></div>

Подробнее о МДН

Спасибо за ответ, будем пробовать :)

Newbie J 30.01.2019 10:18

Я бы создал форму по-другому, используя псевдоэлемент с эффектом размытия:

#light {
  width:400px;
  height:160px;
  position:relative;
}
#light:before,
#light:after{
  content:"";
  position:absolute;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background:
    /*triangle on the right*/
    linear-gradient(to top right,grey 49.5%,transparent 50%) right/150px 100%,
    /*triangle on the left*/
    linear-gradient(to top left, grey 49.5%,transparent 50%) left /150px 100%,
    /*rectangle at the center*/
    linear-gradient(grey,grey) center/100px 100%;
 background-repeat:no-repeat;
}
#light:before {
  filter:blur(20px);
}
<div id = "light">

</div>

Я попробовал ваше решение, и оно кажется почти таким же, как и решение, данное @fcalderan, разница в том, что ваш код кажется более сложным, чем его, но, как уже говорилось, достигается очень похожая цель. Спасибо за вашу помощь.

Newbie J 30.01.2019 10:23

@NewbieJ это цель дать разные ответы;) один и тот же вывод разными методами.

Temani Afif 30.01.2019 10:26

В вашем примере вы не могу добавляете правильную тень блока, не имея этих белых частей с каждой стороны. Это связано с тем, что граница CSS окрашивает серую трапецию DIV.

В приведенном выше примере они используют .SVG-файл (изображение), поскольку это изображение, исходная форма которого — трапеция, а не прямоугольник с белой стороной, как у вас.

Вам нужно будет нарисовать .svg желаемой формы и цвета, а затем добавить тень к самому элементу.

Вот дополнительная информация о SVG.

Я надеюсь, что это помогает.

Я частично согласен с вашим аргументом, но если вы посмотрите на первый пример по ссылке, вы ясно увидите, что человек сделал форму, используя чистый css, и не было импортировано SVG. Кроме того, ответы, данные на этот вопрос, немного по-другому доказывают ваши утверждения. Спасибо за ответ :) P.S. надеюсь, я не звучал резко или что-то в этом роде

Newbie J 30.01.2019 10:16

Здравствуйте, все отлично. Я кое-что узнал из ответа выше, теперь я знаю, что SVG не требуется, чтобы добавлять к нему тень. Хорошего дня :)

Alexis Philip 30.01.2019 10:21

аналогично @Alexis Philip

Newbie J 30.01.2019 10:23

на базе css-tricks Метод двойного ящика можно "have a container box with hidden overflow and another box inside it which is rotate and hangs out of it"

.light {
  width: 350px;
  height: 135px;
  position: relative;
  overflow: hidden;
  box-shadow: 0 16px 10px -17px rgba(0, 0, 0, 0.5);
}
.light:after {
  content: "";
  position: absolute;
  width: 300px;
  height: 300px;
  background: #999;
  transform: rotate(45deg);
  top: 25px;
  left: 25px;
  box-shadow: -1px -1px 10px -2px rgba(0, 0, 0, 0.5);
}
<div class = "light"></div>

попробовал ваш код, и если я не сделал что-то не так, трапеция получает тень вокруг, но создает какие-то черные пятна, оставляя видимую форму прямоугольника (если я, конечно, изменю количество теней с вашего "10px" на, давайте скажите "100px". Тем не менее, я ценю вашу помощь.

Newbie J 30.01.2019 10:29

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