Как в css сделать тень: box-shadow — CSS | MDN

Содержание

Как добавить тень окна CSS в WordPress

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

Вы можете добавить эффект падающей тени с помощью простого свойства CSS под названием Box Shadow почти к любому элементу HTML или изображению. Box Shadow — это простое свойство CSS, которое прикрепляет одну или несколько теней к элементу с помощью смещений, размытия, радиуса и цвета. Box Shadow был введен в CSS еще тогда, когда поддерживается всеми современными браузерами.

Лучшее в Box Shadow — это то, что вы можете добавить эффект тени вне поля содержимого или внутри. Теперь вам может быть интересно, что вообще означает поле содержимого. Проще говоря, поле содержимого — это не что иное, как элемент HTML, такой как P, DIV и т. Д.

Синтаксис тени блока CSS

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Синтаксис свойства Box-Shadow будет примерно таким.
box-shadow: <смещение по горизонтали> <смещение по вертикали> <радиус размытия> <радиус распространения> <цвет>;
Горизонтальное смещение (обязательное значение): это обязательное значение, и когда вы устанавливаете положительные значения (например, 10 пикселей), тень будет сдвигаться влево по горизонтали. Отрицательное значение (например, -10px) сдвинет тень вправо. Вы можете установить его на 0, если не хотите смещать тень.

Вертикальное смещение (обязательное значение): это обязательное значение, и когда вы устанавливаете положительные значения (например, 10 пикселей), тень будет смещаться вниз по вертикали. Отрицательные значения (например, -10 пикселей) будут подталкивать тень вверх по вертикали. Вы можете установить его на 0, если не хотите смещать тень.

Радиус размытия (обязательное значение): это значение размывает тень, чтобы у нее не было резких краев. Чем выше вы установите значение, тем выше будет эффект размытия. Если вам не нужен эффект размытия, вы можете установить его на «0».

Радиус распространения (значение параметра): это необязательное значение, которое расширяет тень в зависимости от установленного вами значения. Чем выше значение, тем выше будет спред. Если вам не нужен эффект распространения, вы можете либо опустить значение, либо установить его на «0».

Цвет (обязательное значение): вы можете установить любой цвет, используя шестнадцатеричный, RGB (красный, синий, зеленый, альфа), HLSA (оттенок, насыщенность, яркость, альфа) и именованные цвета HTML. Если вы не установили никакой цвет, браузер установит цвет по умолчанию. Цвет по умолчанию полностью зависит от используемого вами браузера. Таким образом, всегда рекомендуется устанавливать цвет.

Добавление тени блока CSS к изображению или блоку содержимого

Используя приведенный выше синтаксис, вы можете легко добавить эффект тени к любому элементу. Например, если вы хотите добавить эффект тени с размытием и распространением к элементу div, то все, что вам нужно сделать, это настроить таргетинг на этот элемент с помощью тега элемента или его класса CSS или идентификатора и заполнить значения box-shadow. свойство. Это будет выглядеть примерно так.
.shadow-эффект {box-shadow: 3px 3px 10px 2px # a9a1a1; }
Результат:

Если вы не хотите размывать тень, но хотите ее растянуть, код будет выглядеть примерно так.
.shadow-эффект {box-shadow: 5px 5px 0px 2px # a9a1a1; }
Как видите, я установил радиус размытия на 0 пикселей. Результирующий эффект тени имеет резкие края и выглядит примерно так.

Одна из самых безумных особенностей свойства Box-Shadow заключается в том, что оно позволяет добавлять несколько теней. Для этого все, что вам нужно сделать, это указать значения, разделенные запятыми. Синтаксис будет выглядеть примерно так.
.shadow-effect {box-shadow: 10px 10px 0 синий, 15px 15px 0 красный, 20px 20px 0 зеленый; }

Добавив «inset» к свойству box-shadow, вы можете показать эффект тени внутри поля содержимого.
.shadow-effect {box-shadow: вставка 3px 3px 10px 2px # a9a1a1; }
Результат:

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

Генератор теней текста CSS

Если вы хотите добавить тень к тексту, вы должны использовать свойство Text-Shadow. Синтаксис очень похож на свойство Box-Shadow, но в свойстве Text-Shadow нет радиуса распространения. Вот синтаксис.
тень текста: <смещение по горизонтали> <смещение по вертикали> <радиус размытия> <цвет>;
Когда вы замените приведенный выше синтаксис фактическими значениями, он будет выглядеть примерно так.
p {text-shadow: 1px 1px 2px # 333333; }
В результате эффект будет примерно таким.

В отличие от свойства box-shadow, значение размытия в Text-Shadow не является обязательным. то есть, если вы не хотите, чтобы тень текста была размытой, вы можете либо опустить значение, либо установить его на «0».

Добавление тени блока CSS для определенных изображений в WordPress

Теперь, когда мы выяснили, как добавить эффект тени к изображениям с помощью CSS, теперь нам нужен способ добавить его к определенным изображениям, не влияя на другие изображения на веб-сайте.

Для этого вы можете просто создать новый класс CSS и добавить его к изображению по мере необходимости. Таким образом, только изображения с этим конкретным классом CSS будут иметь эффект тени.

Чтобы создать новый класс CSS, вы можете использовать Простой пользовательский CSS Плагин WordPress или большинство тем WP также поставляются с файлом custom.css. Вы также можете добавить код CSS в этот файл.

Затем дважды щелкните значок «Редактировать» для этого изображения (того, который выглядит как карандаш). В разделе Advanced найдите Image CSS Class и введите имя класса, которое вы определили в нашей таблице стилей. В этом случае имя нашего класса — shadow-effect после сохранения изменений.

Затем нажмите «Сохранить черновик» или «Обновить», чтобы обновить страницу WordPress. Когда страница обновляется, результат выглядит так:

Только изображения с эффектом тени класса CSS будут иметь Box Shadow вокруг себя. Если в вашем сообщении в блоге 20 изображений, вам придется сделать это вручную для 20 изображений, что немного утомительно. Тем не менее, это сэкономит вам много времени на редактирование в Photoshop.

Как видите, добавить эффект тени с помощью CSS нет ничего сложного. Примеры, которые я здесь показал, — это только основы. Просто поиграйте с разными значениями, и вы увидите, насколько эффективны свойства Box-Shadow и Text-Shadow. Для простоты использования вы можете использовать генератор тени коробки тоже.

Надеюсь, это поможет. Прокомментируйте ниже, поделитесь своими мыслями и опытом об использовании вышеуказанного метода для добавления эффекта тени к изображениям или полям содержимого с помощью CSS.

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Как создавалась функция shadow spread в Figma

Начиная с сегодняшнего дня, вы можете настроить в Figma размер тени для прямоугольников, эллипсов, фонов фреймов и фонов компонентов, совсем как с помощью параметра CSS box-shadow.

Первоначально я планировал добавить эту функцию во время проведенного недавно мероприятия Maker Week, когда каждый сотрудник компании изучал проект, выходящий за рамки своих повседневных обязанностей. То, что казалось простой функцией, которую я мог бы сделать за несколько дней, превратилось в неделю алгоритмических идей, разборов спецификации W3C и уточнение решений, используемых в продуктах. В этой статье я расскажу о том, как нам удалось найти компромисс для этого (на первый взгляд) простого пользовательского запроса.

Существует много возможностей для формирования надежной веб-платформы проектирования для команд, вместе создающих продукты. Мы предоставляем систему, которая помогает вам разрабатывать и понимать ценность сложных дизайн-систем, обеспечивать совместную работу в реальном времени для дизайнеров, разбросанных по всему миру и даже совершенствовать старые инструменты, такие как перо. Вы можете спросить: тогда почему до сих пор нет поддержки изменения размера тени, базовой функции CSS box-shadow? Хотя прошло уже 958 дней с тех пор, как пользователь в Spectrum впервые попросил добавить ее. Неужели нам так сложно сделать тень, просто … больше?

Если вы зададите этот вопрос графическому инженеру, ответ, на самом деле, будет ошеломляющим. Значение размера тени spread представляет собой расстояние, на которое можно расширить или сжать тень во всех направлениях. Чтобы понять сложность этого момента, мы начнем с того, как мы рисуем тени. Ниже представлено несколько простых теней:

Как видите, форма теней выглядят знакомо. Чтобы создать подобную тень, мы копируем геометрию объекта, заливаем его одним цветом, делаем его размытым и визуализируем под самим узлом.

Может показаться, что рендеринг тени со значением spread может быть таким же простым, как масштабирование геометрии тени. Это так для прямоугольника, но не для более сложного объекта – скажем, логотипа Figma, в котором полно дыр:

Если мы будем руководствоваться определением shadow spread – расширение тени на определенное количество пикселей наружу (или внутрь) от фигуры во всех направлениях, то получим примерно такой результат:

Но никто не сказал мне этого до того, как в прекрасный майский день во время Maker Week я решил заняться созданием этой функции. Осознав ошибочность этого подхода, я решил разобраться. Это не ракетостроение, подумал я.

Мы можем выяснить, как визуализировать тени 2D-фигур.

Это правда, что есть несколько интересных алгоритмических способов решения этой проблемы, но ни один из них не вписывался в нашу существующую систему рендеринга. Также можно использовать неалгоритмический способ – используя штрихи для эмуляции теней – но я быстро понял, что это тоже не вариант. Мы обрабатываем определенные углы вершин в штрихах иначе, чем нужно для shadow spread, и в нашем прототипе рендерера нет кода генерации штрихов. Каким-то образом нам нужно было найти способ заставить эту функцию работать без добавления тонны сложного кода в две разные кодовые базы рендеринга.

Фреймворк для определения приоритетов

Если есть одна вещь, которая мне нравится больше, чем отладка ошибок рендеринга, это чтение спецификаций об интернет-технологиях. (Спросите меня обо всех странных вещах, которые я узнал о GIF89 в прошлом году, добавляя в Figma поддержку GIF). Я опросил коллег каких предположений касательно размера тени мы придерживались.

Мы знаем, что сегодня пользователи Figma внедряют обходные пути и добавляют документацию для передачи проекта разработчикам, когда речь идет о значениях shadow spread. Если мы хотим облегчить передачу проекта разработчикам, то наши ограничения должны определяться CSS. Нужно ли нам рисовать идеальную тень для лого Figma? Можем ли мы сделать это в CSS?!

На самом деле, не можем. Особенность параметра box-shadow заключается в том, что он работает только для рендеринга теней блоков (и других подобных объектов, которые включают эллипсы, если вы правильно настроили радиусы углов). box-shadow не будет отображать тень логотипа Figma, как копию логотипа, но как блок.

(Кроме того: на каждом этапе этого процесса кто-то говорил мне: «на самом деле, значения размера тени поддерживаются в filter

: dropshadow()», и указывал на страницу MDN, которая по ошибке утверждала, что значения размера тени еще не поддерживались браузерами. К сожалению, это не правда, что явно указано в спецификации W3C).

Мы провели дискуссию с нашими дизайнерами. Они были уверены, что в большинстве вариантов использования будет достаточно функции shadow spread для прямоугольников и эллипсов. Кроме того, подкрепленный идеей, что соответствие CSS должно мотивировать наши решения, мы решили, что не имеет значения, можем ли мы сделать логотип в форме Figma. Мы решили безжалостно расставить приоритеты: по крайней мере, мы будем делать то, что умеет CSS.

Для этого мы решили реализовать CSS-подобные параметры shadow spread только для фигур, к которым будет применен параметр box-shadow: прямоугольники, эллипсы, фон фрейма и фоновые компоненты. Казалось этого можно добиться просто, генерируя большую или меньшую версию исходного узла. Это не просто растягивание узла, так как это нарушило бы закругленные углы. Тем не менее, достаточно просто генерировать новые геометрии прямоугольников в обоих наших механизмах рендеринга.

Вверху: тень, создаваемая простым растяжением геометрии объекта; внизу: тень, созданная путем создания нового закругленного прямоугольника

Препятствия

Конечно, это не было так просто, как мы ожидали. В этом плане было несколько проблем: как создать правильные эллипсы? (Тень эллипса больше не будет определенно эллиптической; наш код генерации эллипса не генерирует не эллипсы, а простые преобразования эллипса в любом направлении сохраняют свои эллиптические свойства). Как отображать закругленные углы, когда эффект spread shadow был применен к прямоугольнику с закругленными углами? (Спецификация W3 определяет, как общее правило о преобразовании угловых радиусов, так и конкретную формулу, которая будет использоваться для больших значений spread shadow). Как отображать shadow spread на узлах только для обводки?

Мы решили некоторые из этих проблем с помощью проверенного временем метода: нажимать кнопки в CodePen и смотреть, что делают браузеры. Интересно, что браузеры не создают эллиптические тени, они просто создают больший эллипс. Решив подражать CSS, мы тоже это делаем.

Эффект становится более выраженным, когда оси эллипса расходятся:

Что еще более удивительно, после следования кубическому правилу W3C для угловых радиусов теней с большими значениями shadow spread (тщательно продуманное правило!), сравнение наших результатов с CodePen показало, что браузеры вообще не реализуют это. Чтобы создать тень для прямоугольника с закругленными углами, браузеры – а теперь и Figma – просто добавляют или вычитают значение shadow spread и исходный радиус угла.

Но CodePen не помог бы в определении shadow spread только для узлов обводки, поскольку наш подход уже значительно отличается от CSS. Даже полностью прозрачная заливка в CSS влияет на их собственные тени и маскирует их (но не другие тени). В Figma используется подход, близкий к физическому рендерингу, позволяющий пользователю видеть тени сквозь прозрачные и полупрозрачные заливки.

Ниже те же прямоугольники (заливки с нулевой непрозрачностью, с обводками и тенями) в CSS (слева) и Figma (справа):

Хотя легко узнать, как визуализировать тень для узла с заливкой (внизу слева), вы можете представить, как применить shadow spread для обводки несколькими способами:

A. Начните обводку с помощью параметра spread, оставив обводку постоянной

B. Добавьте spreadна внешнюю сторону ширины обводки.

C.

Добавьтеspread к ширине штриха, отцентрированный так, чтобы тень распределялась по обе стороны

D. Добавьте параметр spread к каждому краю ширины обводки, в конечном итоге добавив 2 * spread к ширине обводки.

Изучив варианты, мы пришли к варианту D: мы подумали, что, когда вы переключаете видимость заливки объекта, внешний след тени должен оставаться прежним, что исключает вариант C. Из оставшихся вариантов D, похоже, больше всего соответствует идее shadow spread: тень, вытянутая вдоль каждой точки с помощью параметра spread.

Создание новой функции не всегда так просто, как кажется. При интерпретации запроса функции важно подумать о мотивах этого запроса и внимательно рассмотреть компромиссы, сделанные дизайнерами, работавшими до нас. В этом случае, пройдя извилистое путешествие по исследованиям, мы с радостью представляем широко востребованную функцию, которая, как мы надеемся, облегчит жизнь дизайнеров и разработчиков. Проверьте файл нашей игровой площадки, чтобы увидеть возможности новой функции shadow spread!


Перевод статьи figma. com

css — Как сделать тень только с одной стороны? — Stack Overflow на русском

css — Как сделать тень только с одной стороны? — Stack Overflow на русском

admin / 10.02.2018

css — Как сделать тень только с одной стороны? — Stack Overflow на русском

Содержание

  • CSS Box-Shadow:Inset
  • 2.18. CSS3-тень блока
    • Для элементов DIV:
  • box-shadow
    • Для изображений:
    • Создание эффекта неоного свечения для вашего текста, используя свойство text-shadow:
  • CSS Box Shadow
  • Собственная тень
    • Куб
    • Цилиндр.
    • Конус
    • Шар
  • Падающая тень
    • Куб, цилиндр и конус
    • Шар

CSS Box-Shadow:Inset

You’ve gotta appreciate the imageless design elements the CSS box-shadow property makes possible. No more slicing up 3 jpgs to recreate the depth so easily gained in Photoshop. Lately, we’ve been using box-shadow:inset on some Paravel jobs, and I’ve seem some clever uses out there on the intertubes. This property is compatible with Webkit (Safari & Chrome), Firefox, Opera, and IE9, so there’s no reason to hold off using it as an enhancement on the page you’re working on right now.

When building Camp Wapo, we used inset on the action item buttons.

Lettering.js has an inset hover state on each of the linked images.

The feature box on A Book Apart has a nice vignette shadow framing the div.

When logged out, the Rdio homepage employs inset shadows on their features list.

Now, what about images? It’d be nice to be able to add a vignetting effect to photos sans-Photoshop, but the way browsers interpret box-shadow:inset is to throw the shadow behind the image, rendering it invisible. While this seems pretty useless, it does make sense when you consider other kinds of content. For example, if you inset a shadow you probably wouldn’t want it overshadowing the text within.

A reasonable way to circumvent this issue would be to wrap the image in a div or a span element and employ some basic z-indexing. See the example code provided below. While this method gets the job done, I wonder if it’d be sensible to update the CSS Working Draft to allow for inset shadows to be displayed on top when applied directly to an image. Despite the inconsistency, it seems intuitive to me and would ultimately lead to cleaner, simpler markup.

Как отметил Кристиан, хороший контроль над z-значениями часто решает ваши проблемы.

Если это не сработает, вы можете взглянуть на CSS Box Shadow Bottom Only при использовании переполнения, скрытого для скрытия избыточной тени.

Я также хотел бы иметь в виду, что свойство box-shadow может принимать список теней, разделенных запятыми:

Это даст вам некоторый контроль над «количеством» тени в каждом направлении.

Посмотрите http://www.css3.info/preview/box-shadow/ для получения дополнительной информации о box-shadow.

Надеюсь, это то, что вы искали!


Итак, это мой первый ответ здесь, и потому, что мне нужно было что-то подобное, что я делал с псевдоэлементами для двух внутренних теней и дополнительный DIV для верхней внешней тени.

2.18. CSS3-тень блока

Не знаю, являются ли это лучшими решениями, но, возможно, это поможет кому-то.

HTML

CSS


по существу, тень — это форма окна, только что смещенная за фактическим полем. чтобы скрыть части тени, вам нужно создать дополнительные divs и установить их z-индекс над затененным полем, чтобы тень не была видна.

Если вы хотите иметь особый контроль над своими тенями , создавайте их как изображения и создавайте контейнеры div с нужным количеством дополнений и полей. Затем используйте png fix, чтобы убедиться, что тени отображаются правильно во всех браузерах


Для элементов DIV:

Если вы не пользуетесь Internet Explorer 8-, то вы счастливый!

box-shadow

=)

Использование «встроенного» кода:

<div /> Если вы не пользуетесь Internet Explorer 8-, то вы счастливый! =) </div>

Конечно,вы не будете использовать только «встроенные» стили в 99% случаев, поэтому предлагаю вашему вниманию следующий код для вашего . css-файла.

Просто сss:

-moz-box-shadow: 0 0 20px #555; -webkit-box-shadow: 0 0 20px #555; box-shadow: 0 0 20px #555;

Для изображений:

«Встроенный» код:

<img src=»photo.jpg» alt=»Superman» />

Чистый css:

-moz-box-shadow: 0 0 20px #555; -webkit-box-shadow: 0 0 20px #555; box-shadow: 0 0 20px #555;

Создание эффекта неоного свечения для вашего текста, используя свойство text-shadow:

Блогосфера.

Используя «встроенный» код:

<p>Disco sucks!</p>

Используя только css:

color:#ff0; text-shadow: 0 0 20px #ff0;

Вот и всё! Всё очень просто.

CSS Box Shadow

Задумывались ли вы, что именно столкновение света и тени позволяет нам увидеть форму предметов. Если выключить свет, то в темноте мы не увидим никакой формы. Если все осветить очень ярким прожектором, то формы мы тоже не увидим. Только столкновение света и тени позволяют нам ее увидеть.

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

Основных форм, из сочетания которых можно построить любую сложную форму, четыре. Это: куб, цилиндр, конус и шар. У каждой из этих форм есть свои закономерности распространения светотени и свои отличия.

Рассмотрим их по порядку.

Собственная тень

  • Куб

    Свет и тень на кубе встречаются в одну жесткую прямую линию, которую называют «линией разлома на светотень» или просто «разломом».

    При этом напряжение тени в сторону света усиливается, также как и напряжение света в сторону тени. Другими словами тень на теневой грани куба будет самой темной там, где она соприкасается с освещенной гранью. В свою очередь и свет на светлой грани будет светлее у линии разлома. Таким образом получается, что ни самая темная часть тени, ни самая светлая часть света не лежат на самом краю формы.

    У куба разлом на светотень будет «жестким».

  • Цилиндр.

    Разлом на светотень на цилиндре ведет себя в чем-то похожим образом. Свет и тень здесь тоже как и у куба образуют прямую линию. Тень так же, как и на кубе будет более напряжена в сторону света. Такое усиление тени в сторону света – это общая закономерность для любых форм. Свет тоже не лежит на краю формы. И это тоже общая закономерность.

    Но есть и существенные отличия в распространении света по цилиндру. Здесь свет и тень не встречаются в одну линию, а между ними есть промежуточные полутона более светлые к свету, и более темные к тени. На цилиндре мы видим «мягкий» разлом.

  • Конус

    Конус очень похож на цилиндр. Линия разлома так же располагается по прямой, мы наблюдаем «мягкий» разлом. Напряжение света и тени и чередование полутонов такое же, как на цилиндре.

    Тем не менее, конус выделен как одна из четырех основных фигур и у него есть одно существенное отличие. Чем ‘уже форма, тем напряженнее и контрастнее становится тень, а там, где форма, становится шире, тень светлеет и как бы расплывается по форме.

  • Шар

    У шара наблюдается несколько иная картина. Линия разлома проходит по окружности, лежащей перпендикулярно направлению источника света.

    Здесь, как и у других форм, усиление тени будет к месту разлома, свет так же будет лежать не на самом краю формы. Полутона расположатся концентрическими кругами от света к линии разлома.

Это то, что касается «собственных» теней, т.е. теней на самой форме. А есть еще и «падающие тени». «Падающей» называют тень, которую форма отбрасывает на другие поверхности.

Падающая тень

«Падающей» называют тень, которую форма отбрасывает на другие поверхности.

У трех из этих форм – куба, цилиндра и конуса – падающая тень строится по одному принципу, а у шара – по другому.

  • Куб, цилиндр и конус

    В первом случае есть точка, где разлом встречается с поверхностью, на которой стоит форма. Это так называемая «мертвая точка». Это то место, где заканчивается собственная тень и начинается падающая. Через эту точку обе тени связаны.

  • Шар

    У шара мы наблюдаем другую картину. Линия разлома проскакивает мимо точки соприкосновения шара с поверхностью, на которой он стоит. И «мертвая точка» отсутствует. Падающая тень ложится вокруг точки соприкосновения шара, как бы обводя ее.

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

И еще. Надо различать светотень и тон в рисунке. И то, и другое может быть сделано с помощью штриховки. Но задачи у светотени и тона разные.

Светотень – это формообразующее начало. Светотень будет одинаково ложиться как на белый, так и на черный или цветной предмет. Любая раскраска предмета или фактура поверхности не изменят законов распространения светотени.

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

FILED UNDER : IT

admin

Найти:

Множественные тени в CSS

В этом уроке вы узнаете, как создать потрясающие эффекты теней в CSS! Синтаксис, пример кода и пояснения приведены ниже.

Если ваш браузер поддерживает Css Box Shadow Property, вы можете увидеть многоцветные тени ниже.

Пример 2

Пример 1

Пример 3

Можно создать несколько теней, используя тот же код, что и для создания одиночной тени.
Чтобы сделать эти несколько теней, нам просто нужно определить несколько значений теней и разделить их запятой.
Затем мы расположим тени, используя разные значения для значений x-offset и y-offset.
Значение тени, которое идет последним, располагается позади всех теней.

Давайте посмотрим на синтаксис кода

Для создания тени:

box-shadow:Inset X-Offset Y-Offset Blur Blur-Offset Color;

Inset

X-Offset

Y-Offset

Blur

Blur-Offset

Color

: Для создания внутренней тени.
(не пишите это ключевое слово для создания внешней тени.)
: Сдвигает тень по горизонтали по оси X.

: Смещает тень вертикально по оси Y.

: Радиус размытия для эффекта радиального размытия тени.
(0 — минимальное значение без эффекта размытия.)
:(необязательно) Радиальное смещение размытия.

: Здесь название цвета или шестнадцатеричный код цвета или цвет RGBA
значения могут быть объявлены.


Пример ››

Для одной тени:
box-shadow: 0px 0px 20px 10px #000000;

Для нескольких теней:
box-shadow:0 0 10px 4px #0000FF , 0 0 20px 30px #008000, 30px 0 20px 30px #FF1493, -30px -30px 20px 30px #FF4500;

 

Важно Для множественной тени значения разделяются запятыми.

Здесь тень синего цвета (#0000FF) определяется первой, поэтому она располагается над другими тенями.
Затем зеленая (#008000) тень, заданная смещением размытия 30 пикселей.
Затем тень розового (#FF1493) цвета, определенная с помощью X-Offset, установленного на 30px;
Затем, наконец, оранжевая (#FF4500) тень с отрицательными значениями X-Offset и Y-Offset, расположенная позади всех теней.

Код для тега

(пример 1)

Итак, давайте создадим несколько теней, как в примере 1 выше.
Сначала нам нужно создать div с id= sample внутри тега.

1
2
3
4
5
6
7
 
 <тело> 

образец >

 

Код для тега

(пример 1)

Теперь нам нужно написать коды Css для div, ссылающиеся на его id= sample .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
23
24
25
26
27
28
2930
31
32
33
34
35
36
37
38
39
40
 
 <голова>

<тип стиля=  текст/css >

#sample{ 

ширина:100px; высота: 100 пикселей; поля:авто; граница: 4px сплошная #444; box-shadow:вставка 10px 10px 20px 10px #CC0000, вставка 10px -10px 20px 10px #00CC00, вставка -10px -10px 20px 10px #FF4500, вставка -10px 10px 20px 10px #0000CC, 50px 50px 50px 10px #CC0000 , 50px -50px 50px 10px #00CC00, -50px -50px 50px 10px #FF4500, -50px 50px 50px 10px #0000CC ; -moz-box-shadow:вставка 10px 10px 20px 10px #CC0000, вставка 10px -10px 20px 10px #00CC00, вставка -10px -10px 20px 10px #FF4500, вставка -10px 10px 20px 10px #0000CC, 50px 50px 50px 10px #CC0000 , 50px -50px 50px 10px #00CC00, -50px -50px 50px 10px #FF4500, -50px 50px 50px 10px #0000CC ; -webkit-box-shadow:вставка 10px 10px 20px 10px #CC0000, вставка 10px -10px 20px 10px #00CC00, вставка -10px -10px 20px 10px #FF4500, вставка -10px 10px 20px 10px #0000CC, 50px 50px 50px 10px #CC0000 , 50px -50px 50px 10px #00CC00, -50px -50px 50px 10px #FF4500, -50px 50px 50px 10px #0000CC ; }

Объяснение (пример 1)

Строка 5 › #sample {
→ Это идентификатор селектора для div с id= sample , любое свойство, которое мы определяем здесь, будет применяться к любому div с id= sample .

Строка 6 › ширина:100 пикселей; Строка 7 › высота:100px;
→ Чтобы установить ширину и высоту для этого div.

Строка 8 › margin:auto;
→ Чтобы расположить div в центре экрана. ( Margin:auto работает только тогда, когда также объявлена ​​фиксированная ширина. )

Line 9 › border:4px solid #444;
→ Чтобы создать сплошную серую (#444) рамку шириной 4 пикселя.

Важно Строка 10 ›
Строка 18 ›
Строка 27 ›
box-shadow:
-moz-box-shadow:
-webkit-box-shadow: несколько значений тени, разделенных запятой.
Несколько значений тени, разделенных запятой.
Несколько значений тени, разделенных запятой.

→ Здесь строка 10 определяет свойство Css Box Shadow для IE9 и Opera 7+.
→ Строка 18 определяет свойство Css Box Shadow для Mozilla Firefox.
→ И строка 27 определяет свойство Css Box Shadow для браузеров Webkit, таких как Safari и Google Chrome.
(Остальные значения множественных теней одинаковы для всех.)

Внутренние тени (пример 1)

Мы начнем заполнять наш

sample > внутренними тенями.
Поскольку мы создаем внутренние тени , нам нужно добавить это ключевое слово «inset» перед каждым значением, которое мы определяем.
Нам просто нужно изменить значения X-Offset и Y-Offset, а цвет, значения Blur Radius и Blur Offset остаются прежними.
Нам нужно обратиться к этой оси Y-X для определения положения теней. Это не обычная ось X-Y.

Изображение 1

Вы можете видеть положительные и отрицательные значения в скобках, которые представляют положительные или отрицательные (X-Offset, Y-Offset) значения в квадрантах.

Строка 10 › вставка 10px 10px 20px 10px #CC0000 ,
→ Этот код создает красную ( #CC0000 ) тень в первом квадранте с положительными значениями смещения по осям X и Y.

Строка 11 › вставка 10px -10px 20px 10px #00CC00 ,
→ Этот код создает зеленую ( #CC0000 ) тень в четвертом квадранте с положительным значением смещения по оси X и отрицательным значением смещения по оси Y.

Строка 12 › вставка -10px -10px 20px 10px #FF4500 ,
→ Этот код создает тень оранжевого ( #FF4500 ) цвета в третьем квадранте с отрицательными значениями смещения X и Y.

Строка 13 › вставка -10px 10px 20px 10px #0000CC ,
→ Этот код создает тень синего ( #0000CC ) цвета во втором квадранте с отрицательным значением смещения по оси X и положительным значением смещения по оси Y.

Внешние тени (пример 1)

Теперь мы добавляем внешние тени к нашему

sample >. Теперь нам не нужно добавлять это ключевое слово «вставка».
Нам просто нужно изменить значения X-Offset и Y-Offset, а цвет, значения Blur Radius и Blur Offset остаются прежними.

Строка 14 › 50px 50px 50px 10px #CC0000 ,
→ Этот код создает красную ( #CC0000 ) тень в первом квадранте с положительными значениями смещения по осям X и Y.

Строка 15 › 50px -50px 50px 10px #00CC00 ,
→ Этот код создает зеленую ( #CC0000 ) тень в четвертом квадранте с положительным значением смещения по оси X и отрицательным значением смещения по оси Y.

Строка 16 › -50px -50px 50px 10px #FF4500 ,
→ Этот код создает тень оранжевого ( #FF4500 ) цвета в третьем квадранте с отрицательными значениями смещения X и Y.

Строка 17 › -50px 50px 50px 10px #0000CC;
→ Этот код создает тень синего ( #0000CC ) цвета во втором квадранте с отрицательным значением смещения по оси X и положительным значением смещения по оси Y.

Пояснение (пример 3)

Чтобы сделать эффекты тени, как в примере 3 выше.
Все то же, что описано выше для (Пример 1) . Просто добавьте еще одно свойство Border Radius к (примеру 1) выше, чтобы получить эффекты тени, как в примере 3.

Вот код таблицы стилей для примера 3.

1
2
3
4
5
 
 #example3{ 

border-radius:50px; -moz-граница-радиус: 50px; -webkit-border-radius: 50px;

}

Теперь давайте попробуем создать тени, как в примере 2

Код для тега

(пример 2)

Здесь я использовал 11 теней для создания эффекта. Сначала мы рассмотрим код, а затем я объясню свойства теней.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
3940
41
42
43
44
45
46
47
48
49
 
 <голова>

<тип стиля=  текст/css >

#example2{ 

ширина:50px; высота: 50 пикселей; граница: 50 пикселей; радиус границы: 5px сплошной #333; -moz-граница-радиус: 50px; -webkit-border-radius: 50px; box-shadow: вставка 0 0 12px 4px #0000FF, вставка 0 0 12px 10px #1E90FF, вставка 0 0 12px 17px #9932CC, 0 0 4px 10px #333333, 0 0 6px 15px #АААААА, 0px -20px 50px 50px #CC0000, 0px -20px 12px 50px #333333, -20px 30px 50px 50px #00CC00, -20px 30px 12px 50px #333333, 20px 30px 50px 50px #FFD700, 20px 30px 12px 50px #333; -moz-box-shadow: вставка 0 0 12px 4px #0000FF, вставка 0 0 12px 10px #1E90FF, вставка 0 0 12px 17px #9932CC, 0 0 4px 10px #333333, 0 0 6px 15px #АААААА, 0px -20px 50px 50px #CC0000, 0px -20px 12px 50px #333333, -20px 30px 50px 50px #00CC00, -20px 30px 12px 50px #333333, 20px 30px 50px 50px #FFD700, 20px 30px 12px 50px #333; -webkit-box-shadow: вставка 0 0 12px 4px #0000FF, вставка 0 0 12px 10px #1E90FF, вставка 0 0 12px 17px #9932CC, 0 0 4px 10px #333333, 0 0 6px 15px #АААААА, 0px -20px 50px 50px #CC0000, 0px -20px 12px 50px #333333, -20px 30px 50px 50px #00CC00, -20px 30px 12px 50px #333333, 20px 30px 50px 50px #FFD700, 20px 30px 12px 50px #333; }

Объяснение (Пример 2)

Строка 5 › #sample {
→ Это идентификатор селектора для div с id= sample , любое свойство, которое мы определяем здесь, будет применяться к любому div с id= sample .

Строка 6 › ширина:100 пикселей; Строка 7 › высота:100px;
→ Чтобы установить ширину и высоту для этого div.

Строка 8 › margin:auto;
→ Чтобы расположить div в центре экрана. ( Margin:auto работает только тогда, когда также объявлена ​​фиксированная ширина. )

Line 9 › border:5px solid #333;
→ Чтобы создать сплошную серую (#333) рамку шириной 5 пикселей.

Важно Строка 12 ›
Строка 23 ›
Строка 34 ›
box-shadow:
-moz-box-shadow:
-webkit-box-shadow: несколько значений тени, разделенных запятой.
Несколько значений тени, разделенных запятой.
Несколько значений тени, разделенных запятой.

→ Здесь строка 12 определяет свойство Css Box Shadow для IE9 и Opera 7+.
→ Строка 23 определяет свойство Css Box Shadow для Mozilla Firefox.
→ И строка 34 определяет свойство Css Box Shadow для браузеров Webkit, таких как Safari и Google Chrome.
(Остальные значения множественных теней одинаковы для всех.)

Внутренние тени (пример 2)

Мы начнем добавлять внутренние тени в

с id= example2 т.е.
example2 >.

Строка 12 › вставка 0 0 12px 4px #0000FF ,
→ Здесь значения X-смещения и Y-смещения установлены равными нулю, поэтому тень находится в центральной позиции.
→ Синий (#0000ff) Радиус цветного размытия установлен на 12 пикселей и смещен на 4 пикселя.

Строка 13 › вставка 0 0 12px 10px #1E90FF ,
→ Голубой (#1E90FF) Радиус цветного размытия установлен на 12 пикселей и смещен на 10 пикселей.

Строка 14 › вставка 0 0 12px 17px #9932CC ,
→ Фиолетовый (#9932CC) Радиус цветного размытия установлен на 12 пикселей и смещен на 10 пикселей.

Внешние тени (пример 2)

Теперь мы заполним внешние тени.

Строка 15 › 0 0 4px 10px #333333 ,
→ Серый (#333333) Цветной Радиус размытия установлен на 4 пикселя и смещен на 10 пикселов.

Строка 16 › 0 0 6px 15px #AAAAAA ,
→ Светло-серый (#AAAAAA) Цветной Радиус размытия установлен на 6 пикселей и смещен на 15 пикселей.

Строка 17 › 0px -20px 50px 50px #CC0000 ,
→ Для этой тени установлено отрицательное смещение по оси Y -20 пикселей.
→ Красный (#CC0000) Радиус цветного размытия установлен на 50 пикселей и смещен на 50 пикселей.

Строка 18 › 0px -20px 12px 50px #333333 ,
→ Для этой тени установлено отрицательное смещение по оси Y -20 пикселей.
→ Серый (#333333) Радиус цветного размытия установлен на 12 пикселей и смещен на 50 пикселей.

Строка 19 › -20px 30px 50px 50px #00CC00 ,
→ Для этой тени установлено отрицательное смещение по оси X в -20 пикселей и положительное смещение по оси X в 30 пикселей.
→ Green (#00CC00) Радиус цветного размытия установлен на 50 пикселей и смещен на 50 пикселей.

Строка 20 › -20px 30px 12px 50px #333333 ,
→ Для этой тени установлено отрицательное смещение по оси X в -20 пикселей и положительное смещение по оси X в 30 пикселей.
→ Серый (#333333) Радиус цветного размытия установлен на 12 пикселей и смещен на 50 пикселей.

Строка 21 › 20px 30px 50px 50px #FFD700 ,
→ Для этой тени установлено положительное смещение по оси X в 20 пикселей и положительное смещение по оси X в 30 пикселей.
→ Желтый (#FFD700) Радиус цветного размытия установлен на 50 пикселей и смещен на 50 пикселей.

Строка 20 › 20px 30px 12px 50px #333333 ,
→ Для этой тени установлено положительное смещение по оси X в 20 пикселей и положительное смещение по оси X в 30 пикселей.
→ Серый (#333333) Радиус цветного размытия установлен на 12 пикселей и смещен на 50 пикселей.

Это лучший способ изменить внешний вид вашего веб-сайта, так как для него не нужны изображения, он сделан на чистом кодировании CSS. У этой Box Shadow могут быть некоторые проблемы совместимости со старыми браузерами, но она отлично работает в новейших браузерах.

Никакая часть этих материалов не может быть воспроизведена каким бы то ни было образом без явного письменного согласия Entheos. Любое несанкционированное использование, совместное использование, воспроизведение или распространение этих материалов любыми средствами, электронными, механическими или иными, строго запрещено.

CSS Drop Shadows — A List Apart

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

Статья продолжается ниже

Но что, если бы у нас была техника создания гибких теней CSS, которые можно применять к произвольным блочным элементам? Что может расширяться по мере изменения формы содержимого блока? Совместимость с большинством современных браузеров? С лучшими результатами для браузеров, соответствующих стандартам? Если вы еще не проданы, мы также можем сказать вам, что это требует минимальной наценки.

Заинтересованы? Ну, во-первых, мы не хотели бы приписывать себе что-то, что мы не изобрели, а просто усовершенствовали. Эта особая техника была задумана и продемонстрирована Данстаном Орчардом из 1976 дизайнерских достижений (снимаю шляпу перед вами, Данстан). Мы обнаружили, что это было легко, интуитивно понятно и работало как шарм. Однако при ближайшем рассмотрении мы увидели возможности для улучшения и приступили к работе.

Вот как это работает: вам нужно создать изображение с тенью в редакторе изображений по вашему выбору. Это должна быть только тень без видимой границы (простой способ сделать это — применить эффект к пустому выделению). Убедитесь, что ваше изображение достаточно велико, чтобы покрыть максимально ожидаемый размер блочных элементов, которые будут его использовать. На практике мы обнаружили, что 800 x 800 — вполне приличный размер. Сохраните его как GIF, убедившись, что вы используете цвет фона, к которому вы будете применять эффект. Кроме того, сохраните ту же тень с полной альфа-прозрачностью (без цвета фона) в формате PNG. Это будет использоваться для подачи лучшей тени в браузеры, способные ее отображать. Вот несколько примеров файлов: файл GIF/файл PNG.

Мы начнем с создания тени для изображения, а затем перейдем к другим элементам блока. В момент изобретательности мы решили назвать наш класс «img-shadow». Нашим испытуемым будет этот симпатичный кот:

и его соответствующая разметка (один div — единственная дополнительная разметка, которая нам понадобится):



   jpg" alt="test"/>

На следующем рисунке показано, как работает этот метод:

Во-первых, наш предварительно подготовленный теневой файл будет установлен в качестве фона для div.

фон: url(shadow.gif) без повторов внизу справа;

Затем мы дадим изображению отрицательное верхнее и левое поля, чтобы сделать «каплю», которая дает нам тень. Наша тень имеет ширину шесть пикселей, так что это наше магическое значение.

поле: -6px 6px 6px -6px;

Мы плаваем div , чтобы не указывать его размер (иначе он займет все доступное горизонтальное пространство).

Помните, мы говорили, что создадим лучшие тени для лучших браузеров? Эта строка сделает свое дело:

background: url(shadowAlpha.png) без повторов справа внизу !важно;

Этот бит «!important» сообщает браузеру, что объявление имеет приоритет над обычными объявлениями для того же элемента (см. спецификацию). Он также не поддерживается во всех версиях Internet Explorer, в которых также отсутствует встроенная поддержка прозрачных PNG. Это почти слишком удобно. Указав противоречивые объявления дважды, мы получим желаемое поведение (IE использует второе, большинство других браузеров — первое). Конечным результатом является то, что при изменении цвета фона браузеры, поддерживающие PNG, сохранят совершенно прозрачную тень. К сожалению, тень Проводника останется с исходным цветом фона.

Но почему это делает спросите вы? На это есть две причины:

  • Мы можем : Это безболезненный, легкий и автоматический взлом, который дает отличные результаты в браузерах, которые его поддерживают.
  • Это может исправиться само собой : Если новая версия Internet Explorer (поставляемая с Longhorn) поддерживает оба этих стандарта, нам не придется ничего исправлять, чтобы получить в ней точные до пикселя, по-настоящему прозрачные тени.

Готовый код CSS выглядит так:


. img-shadow {
  float:left;
  фон: url(shadowAlpha.png) без повторов внизу справа !важно;
  фон: url(shadow.gif) без повторов внизу справа;
  margin: 10px 0 0 10px !важно;
  поле: 10 пикселей 0 0 5 пикселей;
  }

.img-shadow img {
  display: block;
  позиция: относительная;
  фоновый цвет: #fff;
  граница: 1 пиксель сплошная #a9a9a9;
  margin: -6px 6px 6px -6px;
  отступ: 4 пикселя;
  }

Различия в размерах полей учитывают блочную модель IE, и это последнее значение отступа дает нам красивую рамку вокруг изображения. К сожалению, он потерян в IE 5.5 и 5.0. Однако эффект тени остается.

Наша тень будет плавно смешиваться с фоном в браузерах, соответствующих стандартам. В проводнике тень будет конфликтовать с фоном, если только вы не выбрали цвет фона, который использовали для тени. Вы можете увидеть результаты здесь:

В следующей части мы применим эффект тени к абзацу.

Логика подсказывает, что один и тот же метод должен давать аналогичные результаты при работе с абзацем, который можно рассматривать как еще один элемент блока. И действительно, с большинством браузеров это работает как шарм. Угадайте, кто из них не прав?

При разработке этой методики мы обнаружили, что при работе с элементом блока, отличным от изображения, вопреки здравому смыслу Проводник решил обрезать левую и верхнюю части блока — те, которые «выскакивают» из тень — вне зависимости от того, что мы пробовали. Забавно, что единственная версия Explorer, которая делает это правильно, — 5.0. Никакие хаки, настройки переполнения или мягкие предложения, казалось, не помогли (и да, праведных ругательств судили). Мы сдались и решили, что нужен другой подход.

Метод, который мы придумали, частично основан на методологии раздвижных дверей Дугласа Боумана и требует дополнительной разметки (еще один div), поэтому наш абзац будет выглядеть так:



  

    

Дождь в Испании. ..


  


Вместо того, чтобы задавать абзацу отрицательные верхнее и левое поля, мы зададим ему положительное правое и нижнее отступы. Это откроет тень (установленную в качестве фона для самого внешнего div). Тогда мы будем подделка смещение тени с использованием частично прозрачного GIF в качестве фона для внутреннего div, который будет перекрывать тень. Убедитесь, что видимая часть этого изображения имеет тот же цвет, что и фон, поверх которого вы используете эффект тени. Назовите изображение «shadow2.gif». Он должен быть построен следующим образом:

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

На этом рисунке показано, что мы собираемся сделать:

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


.p-shadow {
  ширина: 90 %;
  с плавающей запятой:влево;
  фон: url(shadowAlpha.png) без повторов внизу справа !важно;
  фон: url(shadow.gif) без повторов внизу справа;
  margin: 10px 0 0 10px !важно;
  поле: 10 пикселей 0 0 5 пикселей;
  }

.p-shadow div {
  фон: нет !важно;
  фон: url(shadow2.gif) без повторов слева вверху;
  заполнение: 0 !важно;
  заполнение: 0 6px 6px 0;
  }

.p-shadow p {
  color: #777;
  фоновый цвет: #fff;
  шрифт: курсив 1em georgia, с засечками;
  граница: 1 пиксель сплошная #a9a9a9;
  отступ: 4 пикселя;
  поле: -6px 6px 6px -6px !важно;
  маржа: 0;
  }

Те же соображения относительно цвета фона, что и в примере с изображением, применимы и к абзацам. Вот конечный результат. (Попробуйте изменить размер текста в браузере, чтобы увидеть, как меняется размер окна и как меняется тень.)

Дождь в Испании идет в основном на равнине.

Дополнительные примечания

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

Этот метод был протестирован с браузерами на основе Gecko, Safari, Opera и IE 5.0+. Кроме отмеченных различий, никаких проблем не наблюдалось. Он должен хорошо работать с большинством существующих программ (нет, , а не Netscape 4.x).

Благодарности

Данстану за изобретение техники падающих теней и Дугласу Боуману за разработку техники раздвижных дверей

Как создать эффект наведения аккордеона с помощью теней от Сары Л. Фоссхейм

  • Руководство
  • Разработка

В этом уроке мы будем использовать свойство box-shadow для создания компонента многослойной карты и его анимации при наведении.

Объяснение свойства box-shadow

Чтобы добавить тени к блоку, нам нужно указать несколько вещей в свойстве box-shadow :

  • x-смещение : Позиция по оси x. Положительное значение перемещает тень вправо, отрицательное значение перемещает тень влево. (обязательно)
  • Смещение по оси Y : Позиция по оси Y. Положительное значение перемещает тень вниз, отрицательное значение перемещает тень вверх. (обязательно)
  • размытие : Насколько сильно должна быть размыта тень. Чем выше значение, тем мягче тень. По умолчанию установлено значение 0px, что означает отсутствие размытия. (опционально)
  • распространение : Насколько больше тень должна быть по сравнению с компонентом. Положительное значение делает тень больше прямоугольника, отрицательное значение делает тень меньше. (опционально)
  • цвет : Какой цвет должна иметь тень. Значение по умолчанию — цвет текста. (опционально, требуется для Safari)
  • вставка : Положение тени. По умолчанию тень выходит за рамки. Установка вставки перемещает ее внутрь. (опционально)
 box-shadow: [смещение по x] [смещение по y] [размытие] [расширение] [цвет] [вставка];
 

Например:

Вы можете узнать больше о box-shadow на W3Schools или css-tricks. Моя поляроидная камера, использующая только CSS, также построена с использованием box-shadow.

Компонент карты

Нам не нужно писать дополнительный HTML, чтобы добавить стопку карточек в фоновом режиме. Мы начнем наш учебник со следующего кода:

.
 <дел>
    

Похожая запись

Как я воссоздал камеру Polaroid только с градиентами CSS

Преобразование карт в тени

Мы хотим разместить 4 карточки позади нашего компонента, каждая с одинаковой шириной границы (3 пикселя) и одинаковым фоном (белым), но с другим положением и цветом границы.

Это означает, что нам нужно нарисовать 8 теней: по одной для каждого цвета/границы и по одной для каждой белой заливки.

Добавление первой фоновой карты

Мы начнем с добавления первого зеленого цвета позади компонента. Давайте посмотрим на его требования:

  • Сдвинуть на 10 пикселей вправо
  • Переместиться на 10 пикселей вверх
  • Без размытия
  • Тот же размер, что и в контейнере (без спреда)
  • Зеленый цвет (#5CBD3F)

Это переводится в CSS следующим образом:

 box-shadow: 10px -10px 0 0 #5CBD3F; 

Объединение теней для создания заливок и границ

Далее мы должны нарисовать белую тень поверх зеленой, чтобы имитировать белую заливку коробки.

Граница должна быть толщиной 3 пикселя, поэтому белая тень должна быть на 3 пикселя меньше цветной с каждой стороны. Мы можем сделать это, установив отрицательный спред:

 box-shadow: 10px-10px 0-3px белый; 

При добавлении нескольких теней первая из них будет отображаться первой. Итак, наш код теперь будет выглядеть так:

 box-shadow: 10px-10px 0-3px белый,
  10px -10px 0 0 #1FC11B; 

Повторите тот же процесс еще три раза для других цветов и продолжайте перемещать тени на 10 пикселей вверх и вправо.

 box-shadow: 10px -10px 0 -3px белый, 10px -10px 0 0 #1FC11B, /* Зеленый */
    20 пикселей -20 пикселей 0 -3 пикселей белый, 20 пикселей -20 пикселей 0 0 #FFD913, /* Желтый */
    30px-30px 0-3px белый, 30px-30px 0 0 #FF9C55, /* Оранжевый */
    40px-40px 0-3px белый, 40px-40px 0 0 #FF5555; /* Красный */
 

Добавление анимации наведения

Теперь, когда дизайн готов, осталось добавить анимацию наведения.

Все карты должны будут переместиться из исходного положения в положение красной карточки сзади. Первый шаг — изменить положение нашего компонента.

 .карта {
  положение: родственник;
  сверху: 0;
  слева: 0;
  переход: слева 1с, сверху 1с;
}
.карта: наведите {
  верх: -40px;
  слева: 40 пикселей;
}
 

Тени по-прежнему перемещаются вместе с компонентом, поскольку смещение остается прежним. Все тени должны двигаться к той же позиции, что и блок, то есть их горизонтальное и вертикальное смещение должно быть установлено на 0,

.
 .карта {
  положение: родственник;
  сверху: 0;
  слева: 0;
  переход: box-shadow 1s, левый 1s, верхний 1s;
}
.карта: наведите {
  box-shadow: 0 0 0 -3px белый, 0 0 0 0px #1FC11B,
    0 0 0 -3px белый, 0 0 0 0px #FFD913,
    0 0 0 -3px белый, 0 0 0 0px #FF9C55,
    0 0 0 -3px белый, 0 0 0 0px #FF5555;
  верх: -40px;
  слева: 40 пикселей;
}
 

Это дает нам желаемый конечный результат:

Дополнительные эффекты границ с использованием теней


Привет! 👋🏻 Я Сара, многопрофильный разработчик и дизайнер из Осло, Норвегия. Я пишу и говорю о разработке, дизайне, доступности и этике. Возможно, вы уже встречались с моими фотореалистичными рисунками CSS или моей работой над доступностью данных. Я также поддерживаю Руководство по этичному дизайну, каталог учебных ресурсов и инструментов для создания более инклюзивных продуктов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *