преобразование тени для фотошопа в блочную тень CSS3 - PullRequest
11 голосов
/ 24 февраля 2012

Если у меня есть тень от фотошопа со следующими настройками

Blend Mode - rgb(0,0,0) / 
Opacity - 25% / 
Angle - 135 degrees /
Distance 4px / 
Spread - 0% / 
Size - 4px

Как я могу установить тень от окна CSS3, чтобы она отражала мой дизайн фотошопа?

Ответы [ 7 ]

21 голосов
/ 09 мая 2012

Я написал статью о преобразовании свойств Photoshop Drop Shadow в CSS3 box-shadow .Если вы используете Sass / Compass, вы можете использовать плагин photoshop-drop-shadow compass .Если вы хотите сделать математику самостоятельно, это не очень сложно, ниже приведен простой пример, написанный на JavaScript.Две хитрые части преобразуют угол в смещения X и Y и преобразуют процент разброса в радиус разброса.

// Assume we have the following values in Photoshop
// Blend Mode: Normal (no other blend mode is supported in CSS)
// Color: 0,0,0
// Opacity: 25%
// Angle: 135deg
// Distance: 4px
// Spread: 0%
// Size: 4px

// Here's some JavaScript that would do the math
function photoshopDropShadow2CSSBoxShadow(color, opacity, angle, distance, spread, size) {
  // convert the angle to radians
  angle = (180 - angle) * Math.PI / 180;

  // the color is just an rgba() color with the opacity.
  // for simplicity this function expects color to be an rgb string
  // in CSS, opacity is a decimal between 0 and 1 instead of a percentage
  color = "rgba(" + color + "," + opacity/100 + ")";

  // other calculations
  var offsetX = Math.round(Math.cos(angle) * distance) + "px",
      offsetY = Math.round(Math.sin(angle) * distance) + "px",
      spreadRadius = (size * spread / 100) + "px",
      blurRadius = (size - parseInt(spreadRadius, 10)) + "px";
  return offsetX + " " + offsetY + " " + blurRadius + " " + spreadRadius + " " + color;
}

// let's try it
// for simplicity drop all of the units
photoshopDropShadow2CSSBoxShadow("0,0,0", 25, 135, 4, 0, 4);
// -> 3px 3px 4px 0px rgba(0,0,0,0.25)
4 голосов
/ 27 марта 2012

Этот класс CSS предназначен для различных веб-браузеров, собранных в одном правиле без прозрачности (известная поддержка: Firefox 3.5+, Chrome 5+, Safari 5+, Opera 10.6+, IE 9+):

.shadow {
    -moz-box-shadow: 4px 4px 4px #000;
    -webkit-box-shadow: 4px 4px 4px #000;
    box-shadow: 4px 4px 4px #000;
    /* For IE 8 */
    -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')";
    /* For IE 5.5 - 7 */
    filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');
}

... и этот класс CSS с поддержкой прозрачности:

.shadow {
  -webkit-box-shadow:4px 4px 0px rgba(0, 0, 0, 0.25);
  -moz-box-shadow:4px 4px 0px rgba(0, 0, 0, 0.25);
  box-shadow:4px 4px 0px rgba(0, 0, 0, 0.25);
  -webkit-transform:rotate(135deg);
  -moz-transform:rotate(135deg);
  -o-transform:rotate(135deg);
  transform:rotate(135deg);

}
3 голосов
/ 05 августа 2018

Этот вопрос может быть устаревшим, но для тех новичков, Adobe Photoshop имеет встроенную поддержку для извлечения CSS из слоя начиная с версии CS6.1.

Для этого просто: щелкните правой кнопкой мыши на слое, который вы хотите экспортировать на панели слоев, и выберите "copy css" , затем вы можете вставить его прямо в файл .css.

В качестве альтернативы вы можете использовать http://psd -to-css-shadows.com , чтобы получить нужный вам CSS.

0 голосов
/ 05 июля 2018

Самый простой способ - выделить графику на один слой, отключить все остальные слои, а затем сохранить в формате png.Это даст вам прозрачную область тени.

БАМ

0 голосов
/ 02 мая 2014

Вот хороший инструмент, который не требует кодирования и создает коробки Photoshop CSS: http://www.layerstyles.org/

0 голосов
/ 01 апреля 2014

Я использую инструмент под названием psd to css3, вам просто нужно добавить значения из фотошопа, и вы закончили использовать эту ссылку http://melanieceraso.com/psd-to-css3/#sthash.T9hS7I1j.dpbs

.shadow  {
-moz-box-shadow: 3px 3px 4px 0 rgba(0, 0, 0, 0.25);
-webkit-box-shadow: 3px 3px 4px 0 rgba(0, 0, 0, 0.25);
box-shadow: 3px 3px 4px 0 rgba(0, 0, 0, 0.25)
}
0 голосов
/ 13 октября 2012

Я написал скрипт, который копирует слой FX в буфер обмена в виде строки CSS вместе со стандартным копированием слоя FX.Это немного сыро, но это работает.http://github.com/dfcreative/Photoshopr

...