sass - 是否可以使用 SASS 创建包含选择器的函数(或其他东西)?
问题描述
我希望能够写:
div {
background-size: 100%;
@bgimgfunction('img1.png');
}
并让 SASS 产生类似的东西:
div {
background-size: 100%;
/* Generated by the call to @bgimgfunction */
background-image:('/img/img1-medium.png');
@media (max-width: 640px) {
background-image:('/img/img1-low.png');
}
@media (min-width: 1600px) {
background-image:('/img/img1-high.png');
}
/* End generated by the call to @bgimgfunction */
}
mixins
我认为不起作用,因为我无法传递参数
functions
我认为不起作用,因为它们仅在选择器之后才有效。
有没有办法做到这一点?
解决方案
你需要的是一个带有参数的@mixin。鉴于图像 URL 的结构,我认为您需要两个参数,一个用于图像名称,一个用于其扩展名:
@mixin bgImageFunction($imageName, $imageExt) {
$path: '/img/' + $imageName;
background-image: url("#{$path}-medium.#{$imageExt}");
@media (max-width: 640px) {
background-image: url("#{$path}-low.#{$imageExt}");
}
@media (min-width: 1600px) {
background-image: url("#{$path}-high.#{$imageExt}");
}
}
div {
background-size: 100%;
@include bgImageFunction('img1', 'png');
}
您还可以为扩展使用默认参数,并且仅将名称作为参数传递:
@mixin bgImageFunction($imageName, $imageExt: 'png') {
...
}
推荐阅读
- java - 我如何手动从另一个类触发 aop around 方法
- python - 如何将python dict中的值关联到pandas数据框
- php - 使用引导程序将文本和图像并排对齐
- apache - 如何在运行 apache 的端口 443 上运行 socket.io?
- ruby - 在ruby中获取方法名称作为字符串或符号
- javascript - 可以做些什么来改进这个标题?
- javascript - 使用 ReactJs 从父元素到子元素获取点击的 ID
- php - 如何禁止在特定目录中执行 PHP 文件?
- javascript - 页面加载时间 - 预加载图像和延迟加载
- r - 引用数据框的特定单元格作为 ggplot2 的输入