css - 创建 box-shadow to drop-shadow mixin

标签 css stylus

我正在尝试编写一个 mixin,它应该将 CSS box-shadow 作为参数并将其转换为 filter: drop-shadow()

// mixin
drop-shadow($shadows)
  $array = split(',', $shadows)
  $dropShadows = ()

  for $shadow in $array
    push($dropShadows, 'drop-shadow(' + $shadow + ')') 

  filter: unquote(join(' ', $dropShadows))

// usage
body
  drop-shadow: 0 0 1px, 0 0 1px

问题是我必须将 drop-shadow 的值作为字符串传递才能使其工作,如果我将它作为数组传递,它不会...

// works
drop-shadow: '0 0 1px, 0 0 1px'

// doesn't work
drop-shadow: 0 0 1px, 0 0 1px

最佳答案

好的,找到解决方案:

// custom property (mixin) which allows you to define a box-shadow that will be
// rendered as `filter: drop-shadow()`
//
// usage:
// drop-shadow: 2px 0 1px rgba(0,0,0,0.5)
// => filter: drop-shadow(2px 0 1px rgba(0,0,0,0.5))

drop-shadow()
  $array = arguments
  $dropShadows = ()

  for $shadow in $array
    push($dropShadows, 'drop-shadow(' + $shadow + ')')

  filter: unquote(join(' ', $dropShadows))

这将接受 rgb(a) 或 hsl(a) 颜色并像 box-shadow 一样工作

关于css - 创建 box-shadow to drop-shadow mixin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37115729/

相关文章:

jquery - 修复主 div 和 float 菜单后面的循环图像背景?

css - 按钮上的最小宽度在 IE 中导致它右侧的空间

android - 如何删除 HTML5 输入类型时间的秒数

html - 将 div 重新定位在另一个 div 的左侧而不是下方

css - 如何使用 Stylus 创建多个 CSS 文件?

CSS transition and transform from hamburger bars --> 点击 X(使用手写笔)

jquery - slideToggle 和 toggleClass 不能一起工作?

javascript - Stylus:生成 CamelCase 变量

手写笔连接变量和字符串

css - 我可以在 stylus 中将变量放入文字 css 中吗?