占位符混合SCSS/CSS

前端之家收集整理的这篇文章主要介绍了占位符混合SCSS/CSS前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想为sass中的占位符创建一个mixin。

这是我创建的mixin。

  1. @mixin placeholder ($css) {
  2. ::-webkit-input-placeholder {$css}
  3. :-moz-placeholder {$css}
  4. ::-moz-placeholder {$css}
  5. :-ms-input-placeholder {$css}
  6. }

这是我想包括mixin:

  1. @include placeholder(font-style:italic; color: white; font-weight:100;);

显然,这不工作,因为所有的冒号和分号被传递到mixin,但…我真的想只输入静态css,并通过它完全像上面的函数

这可能吗?

解决方法

您正在寻找@content指令:
  1. @mixin placeholder {
  2. ::-webkit-input-placeholder {@content}
  3. :-moz-placeholder {@content}
  4. ::-moz-placeholder {@content}
  5. :-ms-input-placeholder {@content}
  6. }
  7.  
  8. @include placeholder {
  9. font-style:italic;
  10. color: white;
  11. font-weight:100;
  12. }

SASS参考有更多的信息,可以在这里找到:
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixin-content

从Sass 3.4,这个mixin可以这样写,以工作嵌套和非嵌套:

  1. @mixin optional-at-root($sel) {
  2. @at-root #{if(not &,$sel,selector-append(&,$sel))} {
  3. @content;
  4. }
  5. }
  6.  
  7. @mixin placeholder {
  8. @include optional-at-root('::-webkit-input-placeholder') {
  9. @content;
  10. }
  11.  
  12. @include optional-at-root(':-moz-placeholder') {
  13. @content;
  14. }
  15.  
  16. @include optional-at-root('::-moz-placeholder') {
  17. @content;
  18. }
  19.  
  20. @include optional-at-root(':-ms-input-placeholder') {
  21. @content;
  22. }
  23. }

用法

  1. .foo {
  2. @include placeholder {
  3. color: green;
  4. }
  5. }
  6.  
  7. @include placeholder {
  8. color: red;
  9. }

输出

  1. .foo::-webkit-input-placeholder {
  2. color: green;
  3. }
  4. .foo:-moz-placeholder {
  5. color: green;
  6. }
  7. .foo::-moz-placeholder {
  8. color: green;
  9. }
  10. .foo:-ms-input-placeholder {
  11. color: green;
  12. }
  13.  
  14. ::-webkit-input-placeholder {
  15. color: red;
  16. }
  17. :-moz-placeholder {
  18. color: red;
  19. }
  20. ::-moz-placeholder {
  21. color: red;
  22. }
  23. :-ms-input-placeholder {
  24. color: red;
  25. }

猜你在找的CSS相关文章