【问题标题】:How to deal with quotes in scss mixin如何处理scss mixin中的引号
【发布时间】:2020-08-24 06:35:46
【问题描述】:

我在.scss 文件中有以下mixin,我尝试使用gulp-sass 进行编译

@mixin bg-image($image-name){

    .bg-#{$image-name} {
       background-image: url("../images/#{$image-name}.jpg");          
       background-position: center;
       background-repeat: no-repeat;
       background-attachment: fixed;
    }
}

$sizes: 100, 300, 600, 1024, 1920;

@each $size in $sizes {
    @include bg-image(beach-1-#{$size} );
    [...]
}

background-image 的预期结果是:

background-image: url("../images/beach-1-100.jpg");

但是我尝试过的所有结果都给了我奇怪的结果:要么没有引号,要么有太多...

我尝试了很多组合,但没有产生预期的结果

background-image: url("../images/#{$image-name}.jpg");          
// => background-image: url('"../images/beach-1-100.jpg"');

background-image: url("\"../images/#{$image-name}.jpg\"");      
// => background-image: url('"../images/beach-1-100.jpg"');

background-image: url(../images/#{$image-name}.jpg);            
// => background-image: url(../images/beach-1-100.jpg);

background-image: url(quote(../images/#{$image-name}.jpg));     
// doesn't complie

background-image: url(quote('../images/#{$image-name}.jpg'));    
//  => background-image: url(../images/beach-1-100.jpg);

background-image: url(unquote("\"../images/#{$image-name}.jpg\""));
//  => background-image: url(../images/beach-1-100.jpg);

我是否遗漏了一些明显的东西?

【问题讨论】:

  • url 函数不需要引号,所以你的第三个例子应该可以正常工作
  • @symlink 非常感谢您的评论!我总是使用引号,认为需要...

标签: css sass gulp-sass scss-mixins


【解决方案1】:

你可以重写你的 mixin 如下:

@mixin bg-image($image-name){
  .bg-#{$image-name} {
    $url: "../images/#{$image-name}.jpg";
    background-image: url($url);
  }
}

【讨论】:

  • 感谢您的帮助,但他给我的结果与我第三次尝试的结果相同,验证后效果很好。正如@symlink 指出的那样,我试图强制使用引号,而引号不是必需的
猜你喜欢
  • 1970-01-01
  • 2011-07-04
  • 2021-01-11
  • 2012-12-24
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多