我正在尝试为sass中的占位符创建一个mixin.
这是我创建的mixin.
@mixin placeholder ($css) {
::-webkit-input-placeholder {$css}
:-moz-placeholder {$css}
::-moz-placeholder {$css}
:-ms-input-placeholder {$css}
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要包含mixin的方式:
@include placeholder(font-style:italic; color: white; font-weight:100;);
Run Code Online (Sandbox Code Playgroud)
显然这不会起作用,因为所有的冒号和分号都被传递给mixin,但是......我真的很想输入静态css并将其传递完全类似于上面的函数.
这可能吗?
cim*_*non 239
你正在寻找@content指令:
@mixin placeholder {
::-webkit-input-placeholder {@content}
:-moz-placeholder {@content}
::-moz-placeholder {@content}
:-ms-input-placeholder {@content}
}
@include placeholder {
font-style:italic;
color: white;
font-weight:100;
}
Run Code Online (Sandbox Code Playgroud)
SASS参考有更多信息,可以在这里找到:http: //sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixin-content
从Sass 3.4开始,这个mixin可以这样编写,既可以嵌套也可以使用unnested:
@mixin optional-at-root($sel) {
@at-root #{if(not &, $sel, selector-append(&, $sel))} {
@content;
}
}
@mixin placeholder {
@include optional-at-root('::-webkit-input-placeholder') {
@content;
}
@include optional-at-root(':-moz-placeholder') {
@content;
}
@include optional-at-root('::-moz-placeholder') {
@content;
}
@include optional-at-root(':-ms-input-placeholder') {
@content;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
.foo {
@include placeholder {
color: green;
}
}
@include placeholder {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
输出:
.foo::-webkit-input-placeholder {
color: green;
}
.foo:-moz-placeholder {
color: green;
}
.foo::-moz-placeholder {
color: green;
}
.foo:-ms-input-placeholder {
color: green;
}
::-webkit-input-placeholder {
color: red;
}
:-moz-placeholder {
color: red;
}
::-moz-placeholder {
color: red;
}
:-ms-input-placeholder {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ein 165
我发现cimmanon和Kurt Mueller给出的方法几乎可以工作,但我需要一个父引用(即,我需要为每个供应商前缀添加'&'前缀); 像这样:
@mixin placeholder {
&::-webkit-input-placeholder {@content}
&:-moz-placeholder {@content}
&::-moz-placeholder {@content}
&:-ms-input-placeholder {@content}
}
Run Code Online (Sandbox Code Playgroud)
我像这样使用mixin:
input {
@include placeholder {
font-family: $base-font-family;
color: red;
}
}
Run Code Online (Sandbox Code Playgroud)
使用父引用,然后生成正确的css,例如:
input::-webkit-input-placeholder {
font-family: Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif", "Liberation Serif", Georgia, serif;
color: red;
}
Run Code Online (Sandbox Code Playgroud)
如果没有父引用(&),则在供应商前缀之前插入一个空格,CSS处理器忽略该声明; 看起来像这样:
input::-webkit-input-placeholder {
font-family: Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif", "Liberation Serif", Georgia, serif;
color: red;
}
Run Code Online (Sandbox Code Playgroud)
igr*_*ter 10
这是为了简写语法
=placeholder
&::-webkit-input-placeholder
@content
&:-moz-placeholder
@content
&::-moz-placeholder
@content
&:-ms-input-placeholder
@content
Run Code Online (Sandbox Code Playgroud)
用它就像
input
+placeholder
color: red
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99159 次 |
| 最近记录: |