Do not speak Portuguese? Translate this site with Google or Bing Translator
Entendendo functions e diretivas do Tailwind CSS

Posted on: September 12, 2024 02:57 PM

Posted by: Renato

Categories: front-end tailwind

Views: 242

Entendendo funções e diretivas do Tailwind CSS

Neste artigo exploraremos dois recursos do Tailwind CSS que podem aumentar muito o seu reuso de código em uma aplicação e torná-la mais fácil de manter: as diretivas e as funções.
Texto de: Letícia Garcez

Introdução

O Tailwind CSS é um framework cheio de classes CSS utilitárias que podem ser usadas para criar qualquer design diretamente das tags da linguagem de marcação, o que torna a estilização de uma página mais simples.

Neste artigo, iremos um pouco além das classes utilitárias padrão do framework e exploraremos as funções e diretivas, que são recursos que podem personalizar ainda mais a sua experiência de desenvolvimento com esse framework.

Diretivas

Vamos começar pelas diretivas. As diretivas são as at-rules do Tailwind CSS, ou seja, são regras que dizem como o Tailwind CSS deve se comportar. Você provavelmente já esbarrou com esse tipo de regra, já que ela também existe no CSS. Um exemplo, é a at-rule @media, usada para criar media queries dentro do CSS. Você pode obter mais informações sobre at-rules clicando aqui.

@tailwind

Essa diretiva é utilizada para carregar os diferentes conjuntos de estilos do Tailwind que estão listados abaixo.

  • base: estilos base do Tailwind e estilos base que sejam registrados por plugins
  • components: classes de componentes do Tailwind e classes de componente adicionadas por plugins
  • utilitiles: classes utilitárias do Tailwind e classes utilitárias registradas por plugins.
  • variants: controle de hover, focus, responsividade, dark mode, entre outros. Se omitido, o Tailwind irá adicionar essas classes automaticamente no final da sua folha de estilo.

Se você estiver seguindo o guia de instalação do Tailwind em uma nova aplicação verá que é pedido que você insira o código abaixo dentro do seu arquivo CSS global. Isso é preciso para que todos esses estilos do Tailwind sejam carregados para dentro da sua aplicação. Aqui vale lembrar que @tailwind variants; pode ser omitido nessas definições.

@tailwind base;
@tailwind components;
@tailwind utilities;

@layer

A diretiva @layer serve para indicar em qual conjunto (ou camada) de regras uma regra personalizada se encontra. Os conjuntos válidos são basecomponents, e utilities. Utilizar essa diretiva é uma ótima opção se você quer criar suas próprias classes personalizadas com comportamentos que não existem dentro do framework.

@tailwind base;
@tailwind components;
@tailwind utilities;

@layer utilities {
  .filter-none {
    filter: none;
  }
  .filter-grayscale {
    filter: grayscale(100%);
  }
}

O CSS definido em uma diretiva @layer será automaticamente inserido na diretiva @tailwind correspondente àquela camada, então você não precisa se preocupar com a ordem em que define esse CSS. Esses códigos CSS também serão adicionados automaticamente na build do seu projeto caso sejam usadas em algum lugar da sua aplicação.

@apply

A diretiva @apply permite a criação de classes utilitárias personalizadas a partir de classes que já existem dentro do framework, o que acaba sendo muito útil quando pensamos em reuso de código.

Nas minhas aplicações, sempre me deparo com a necessidade de centralizar o conteúdo de um elemento com display flex na orientação de coluna. Para isso, preciso utilizar as seguintes classes: flex flex-col justify-center items-center, e embora escrever essas quatro classes já seja um avanço com relação ao que precisaria ser escrito com CSS puro, podemos definir uma nova classe para encapsular todo esse comportamento, como no código abaixo:

.flex-col-center {
  @apply flex flex-col justify-center items-center;
}

É importante mencionar que essa diretiva ainda possui algumas limitações relacionadas ao uso em componentes de frameworks que permitem a criação de tags style por componente, como Vue e Svelte. Para mais informações, você pode consultar a documentação do framework clicando aqui.

@config

A diretiva @config é usada para indicar qual arquivo de configuração o Tailwind deve usar para compilar aquele arquivo em específico. Isso pode ser útil em projetos que precisam de diferentes arquivos de configuração para necessidades específicas.

Funções

Agora que já abordamos as diretivas, falaremos das funções. No Tailwind, funções permitem que você modifique valores específicos do Tailwind, como cores, escalas de espaçamento e tamanhos de fonte. Essas funções são avaliadas em tempo de execução e serão modificadas por valores estáticos no CSS final gerado pela ferramenta.

theme()

A função theme() permite que você acesse valores do seu tema do Tailwind. Isso pode ser feito usando a notação ponto ou a notação de chaves como mostrado abaixo:

.content-area {
  height: calc(100vh - theme(spacing.12));
}

// se houver um . no nome do valor que será acessado
.content-area {
  height: calc(100vh - theme(spacing[2.5]));
}

// cores e seus subvalores devem ser acessados sempre com a notação .
.btn-blue {
  background-color: theme(colors.blue.500);
}

screen()

A função screen() permite que você crie media queries referenciando os nomes dos tamanhos de tela definidos no tema ao invés de seus valores absolutos:

@media screen(sm) {
  /* ... */
}

Conclusão

As funções e diretivas do Tailwind CSS são ferramentas poderosas que permitem personalizar e estender a biblioteca de classes utilitárias de maneira a atender melhor as necessidades específicas do seu projeto. Ao utilizar essas funcionalidades, você pode criar estilos personalizados para suas aplicações web e tornar o seu processo de desenvolvimento mais eficiente e rápido.

No entanto, é importante lembrar que as funções e diretivas devem ser utilizadas com moderação. Tente manter suas classes e estilos o mais simples possível, para que o código seja fácil de entender e manter.

- https://blog.formacao.dev/entendendo-funcoes-e-diretivas-do-tailwind-css/

5

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email