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 / 79560191
Accepted
Harry Northover
Harry Northover
Asked: 2025-04-07 22:50:02 +0800 CST2025-04-07 22:50:02 +0800 CST 2025-04-07 22:50:02 +0800 CST

Exibindo caixas de cores ao lado dos nomes das classes TailwindCSS indicando a cor, em qualquer lugar, como nos atributos class ou className

  • 772

É possível exibir caixas de cores antes de qualquer nome de classe TailwindCSS relacionado a cores, independentemente de onde eu escreva o nome da classe TailwindCSS?

Notei que isso funciona perfeitamente em arquivos CSS ou dentro do HTML classou classNameatributos (por exemplo, border-error-400na segunda foto).

Eu imagino que isso deva funcionar em todo o código, mas fiquei decepcionado ao descobrir que, como mostrado na captura de tela anexa, a caixa indicadora de cor não aparece quando uma classe de cor TailwindCSS é escrita como o valor de um objeto JS.

Não funciona em lugar nenhum Trabalhando em className="..."atributo
não está funcionando aqui trabalhando aqui
visual-studio-code
  • 2 2 respostas
  • 43 Views

2 respostas

  • Voted
  1. Best Answer
    rozsazoltan
    2025-04-08T15:53:59+08:002025-04-08T15:53:59+08:00

    TLDR : Embora as primeiras soluções respondam especificamente ao exemplo da pergunta, sugiro que você considere uma abordagem muito mais consistente: criar uma função para a qual você sempre passe apenas classes TailwindCSS. Em seguida, informe ao IntelliSense que a função chamada xy aceitará apenas classes TailwindCSS, portanto, ele deve tratá-la adequadamente. Veja mais: Solução nº 3 .

    Bem, verifiquei minha sugestão e sim; o TailwindCSS IntelliSense aplica totalmente todos os seus recursos com base nos padrões regex corretos.

    Nota : Um pré-requisito para a validação adequada da minha resposta é a instalação do TailwindCSS IntelliSense.

    • Como instalar o TailwindCSS IntelliSense - StackOverflow
    • Sobre a personalização do TailwindCSS IntelliSense - StackOverflow


    Solução nº 1 para objetos JavaScript simples

    Isso lhe dá a resposta correta, embora eu não ache que seja a melhor maneira. Com regex, podemos declarar a sintaxe de objetos JS para que ele tente procurar nomes de classes TailwindCSS em todas as strings colocadas como valores e sugerir nomes de classes TailwindCSS como dicas.

    TailwindCSS IntelliSense com esta configuração:

    {
      "tailwindCSS.experimental.classRegex": [
        ":\\s*?[\"'`]([^\"'`]*).*?,",
      ],
    }
    

    Nota : Para abrir as configurações, pressione CtrlPe digite Preferences: Open User Settings (JSON).

    Importante : A desvantagem é que será válido para todos os objetos. Acho que isso pode ser um desperdício de energia e uma complicação desnecessária do processo.

    exemplo



    Solução nº 2 para variáveis ​​JavaScript simples

    Semelhantemente aos objetos, regex também pode ser escrito para variáveis.

    TailwindCSS IntelliSense com esta configuração:

    {
      "tailwindCSS.experimental.classRegex": [
        "(?:const|let|var)\\s+[\\w$_][_\\w\\d]*\\s*=\\s*['\\\"](.*?)['\\\"]",
      ],
    }
    

    Nota : Para abrir as configurações, pressione CtrlPe digite Preferences: Open User Settings (JSON).

    Importante : A desvantagem recorrente, mais uma vez, é que isso será válido para todas as strings. Acho que isso pode ser um desperdício de energia e uma complicação desnecessária do processo.

    exemplo



    Solução #3 com uma função especial (recomendado)

    A vantagem da função é que sempre que você quiser usar uma classe TailwindCSS, basta chamá-la e ela funcionará imediatamente, enquanto a solução anterior só estará disponível em objetos JS.

    Em vez de depender de expressões regulares, recomendo criar uma função "falsa" que aceite uma string como parâmetro e simplesmente retorne esse parâmetro como resultado. Dessa forma, você pode informar explicitamente ao TailwindCSS IntelliSense que os parâmetros passados ​​para essa função definitivamente contêm nomes de classes do TailwindCSS, para que ela funcione corretamente e consistentemente em qualquer lugar posteriormente.

    function tw (input: TemplateStringsArray | string, ...interpolations: any[]): string {
      if (typeof input === "string") {
        return input;
      }
    
      let result = input[0];
      for (let i = 0; i < interpolations.length; i++) {
        result += interpolations[i] + input[i + 1];
      }
      return result;
    }
    

    E os parâmetros da twfunção serão manipulados corretamente pelo TailwindCSS IntelliSense com esta configuração:

    {
      "tailwindCSS.classFunctions": [
        "tw",
      ],
    }
    

    Nota : Para abrir as configurações, pressione CtrlPe digite Preferences: Open User Settings (JSON).

    Observação : A twfunção não precisa ser muito complicada. Eu simplesmente permiti que ela aceitasse os três tipos básicos de entradas de string. Todos os três estilos de invocação retornam uma única string concatenada. Por exemplo, em example_4, o resultado seria "bg-red-500 text-green-400".

    exemplo

    • 1
  2. hosein p
    2025-04-08T05:58:55+08:002025-04-08T05:58:55+08:00

    As caixas de cores são exibidas apenas em className. É claro que você pode fazer isso instalando a extensão "Color Highlight" e convertendo as cores para HEX. Por exemplo, em vez de escrever "bg-red-600", escreva "#e7000b".

    • -1

relate perguntas

  • Como evitar o empilhamento de arquivos no Explorer?

  • Como posso usar o VS Code para atualizar extensões via linha de comando?

  • No VS Code, por que tenho dois botões de ação para abrir uma visualização do Markdown que apresentam resultados diferentes?

  • publicar pacote vsix para artefato interno

  • Por que meus pares de colchetes não obedecem às minhas alterações nas configurações do editorBracketHighlight.foreground#?

Sidebar

Stats

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

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +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