AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 77269456
Accepted
MeltingDog
MeltingDog
Asked: 2023-10-11 07:20:46 +0800 CST2023-10-11 07:20:46 +0800 CST 2023-10-11 07:20:46 +0800 CST

O SASS não está conseguindo compilar SVGs como imagens de fundo por não reconhecer `%3C`. Existe uma solução alternativa?

  • 772

Estou compilando o SASS em um projeto Create-React-App em um ambiente MacOS, com Node.js.

Estou enfrentando um problema em que meu projeto não consegue compilar devido aos caracteres UTF-8 %3Ce %3E(representando <and >), por exemplo, na regra CSS:

  background-image: url("data:image/svg+xml,%3Csvg...svg%3E");

Alguém saberia se existe uma alternativa para usar %3Ce %3Eao colocar o código fonte SVG em um arquivo .scss?

EDITAR:

Erro que estou recebendo no Storybook:

SassError: variável indefinida. node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[7].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[ 1].rules[5].oneOf[7].use[2]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[5].oneOf[7].use[ 3]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[7].use[4]!./src/styles/components/components.scss indefinido

274 │imagem de fundo: url("data:image/svg+xml,%3Csvg width='464' height='243' xmlns='http://www.w3.org/2000/svg'%3E%3Cg #{$fill-stroke} fill-rule='evenodd'%3E%3Cpath d='M463.409 18.439l-.02 223.245L364.326 130.1l99.084-111.661zM231.847.5c10.354 0 20.063 4.372 26. 808 12.006 h0l104,333 117,516L263,256 242,5H1,112L205,216 12,505A35,488 35,488 0 01231,847,5z'/%3E%3C/g%3E%3C/svg%3E"); │
^^^^^^^^^^^^

src/styles/mixins/_svgs.scss 274:123 linha-chave()

O SCSS em questão é um mixin (você pode codificar as variáveis ​​para testar):

@mixin keyline($color: 'green', $style: 'stroke') {
    $colorcode: colourcode($color);
    @if $style == fill {
        $fill-stroke: "fill='%23#{$colorcode}'";
    }
    @else {
       $fill-stroke: "fill='none' stroke='%23#{$colorcode}'";
    }
    background-image: url("data:image/svg+xml,%3Csvg width='464' height='243' xmlns='http://www.w3.org/2000/svg'%3E%3Cg #{$fill-stroke} fill-rule='evenodd'%3E%3Cpath d='M463.409 18.439l-.02 223.245L364.326 130.1l99.084-111.661zM231.847.5c10.354 0 20.063 4.372 26.808 12.006h0l104.333 117.516L263.256 242.5H1.112L205.216 12.505A35.488 35.488 0 01231.847.5z'/%3E%3C/g%3E%3C/svg%3E");
    background-repeat: no-repeat;
}
css
  • 2 2 respostas
  • 30 Views

2 respostas

  • Voted
  1. Best Answer
    Mike 'Pomax' Kamermans
    2023-10-11T07:59:10+08:002023-10-11T07:59:10+08:00

    Observe a SassError: Undefined variableparte do erro: o SVG data-uri contém ... #{$fill-stroke} ...e o keylinemixin não pode substituí-lo $fill-strokeporque, no momento em que tenta fazê-lo, essa variável (não existe mais).

    Com o exemplo acima, altere o mixin para:

    @mixin keyline($color: 'green', $style: 'stroke') {
        $colorcode: colourcode($color);
        $fill-stroke: "fill='none' stroke='%23#{$colorcode}'";
        @if $style == fill {
            $fill-stroke: "fill='%23#{$colorcode}'";
        }
        background-image: url("data:image/svg+xml,%3Csvg...#{$fill-stroke}...%3C/svg%3E");
        background-repeat: no-repeat;
    }
    
    • 1
  2. Eric MORAND
    2023-10-11T07:52:07+08:002023-10-11T07:52:07+08:00

    Não há nada de errado com o compilador SASS, seu código SASS é compilado com sucesso.

    Executando:

    echo '.foo {background-image: url("data:image/svg+xml,%3Csvg width='464' height='243' xmlns='http://www.w3.org/2000/svg'%3E%3Cg #123456 fill-rule='evenodd'%3E%3Cpath d='M463.409 18.439l-.02 223.245L364.326 130.1l99.084-111.661zM231.847.5c10.354 0 20.063 4.372 26.808 12.006h0l104.333 117.516L263.256 242.5H1.112L205.216 12.505A35.488 35.488 0 01231.847.5z'/%3E%3C/g%3E%3C/svg%3E");}' | sass --stdin
    

    Dá:

    .foo {
      background-image: url("data:image/svg+xml,%3Csvg width=464 height=243 xmlns=http://www.w3.org/2000/svg%3E%3Cg #123456 fill-rule=evenodd%3E%3Cpath d=M463.409 18.439l-.02 223.245L364.326 130.1l99.084-111.661zM231.847.5c10.354 0 20.063 4.372 26.808 12.006h0l104.333 117.516L263.256 242.5H1.112L205.216 12.505A35.488 35.488 0 01231.847.5z/%3E%3C/g%3E%3C/svg%3E");
    }
    

    Portanto, qualquer problema que você esteja enfrentando não está relacionado ao SASS - e, na minha opinião, não deve ser marcado ou intitulado como tal.

    EDITAR: Vendo sua atualização, você deve renomear e marcar sua pergunta para deixar claro que você tem um problema com o Storybook. Você está tentando agrupar CSS em JavaScript e tem um problema com isso; isso não está relacionado ao SASS.

    • -1

relate perguntas

  • Prettier/VS Code adicionando um espaço antes de !important no CSS, causando quebra no WordPress

  • Como enviar parâmetros dinâmicos do arquivo react tsx para css

  • Grade CSS: agrupar e ajustar ao conteúdo

  • É possível alinhar gradientes entre elementos?

  • Bordas arredondadas com Box Shadow - Tailwind CSS

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve