gehrisandro/tailwind-merge-php

TailwindMerge for PHP 通过自动解决它们之间的冲突来合并多个 Tailwind CSS 类

v1.1.2 2024-05-21 17:32 UTC

This package is auto-updated.

Last update: 2024-09-21 18:16:55 UTC


README

TailwindMerge for PHP

GitHub Workflow Status (main) Total Downloads Latest Version License

TailwindMerge for PHP 允许您合并多个 Tailwind CSS 类,并通过删除与后来定义的类冲突的类来自动解决类之间的冲突。

由 dcastil 编写的 tailwind-merge 的 PHP 版本。

支持 Tailwind v3.0 至 v3.4。

如果您觉得这个包很有用,请考虑赞助维护者

如果您正在使用 Laravel,则可以使用 TailwindMerge for Laravel

目录

入门

需要 PHP 8.1+

首先,通过 Composer 包管理器安装 TailwindMerge

composer require gehrisandro/tailwind-merge-php

然后,使用 TailwindMerge 类合并您的 Tailwind CSS 类

use TailwindMerge\TailwindMerge;

$tw = TailwindMerge::instance();

$tw->merge('text-red-500', 'text-blue-500'); // 'text-blue-500'

您可以通过工厂创建一个新实例来调整 TailwindMerge 的配置

use TailwindMerge\TailwindMerge;

$instance = TailwindMerge::factory()
    ->withConfiguration([
        'prefix' => 'tw-',
    ])->make();

$instance->merge('tw-text-red-500', 'tw-text-blue-500'); // 'tw-text-blue-500'

有关如何配置 TailwindMerge 的更多信息,请参阅 配置 部分。

用法

TailwindMerge 不仅能够解决基本 Tailwind CSS 类之间的冲突,还能处理更复杂的情况

use TailwindMerge\TailwindMerge;

$tw = TailwindMerge::instance();

// conflicting classes
$tw->merge('block inline'); // inline
$tw->merge('pl-4 px-6'); // px-6

// non-conflicting classes
$tw->merge('text-xl text-black'); // text-xl text-black

// with breakpoints
$tw->merge('h-10 lg:h-12 lg:h-20'); // h-10 lg:h-20

// dark mode
$tw->merge('text-black dark:text-white dark:text-gray-700'); // text-black dark:text-gray-700

// with hover, focus and other states
$tw->merge('hover:block hover:inline'); // hover:inline

// with the important modifier
$tw->merge('!font-medium !font-bold'); // !font-bold

// arbitrary values
$tw->merge('z-10 z-[999]'); // z-[999] 

// arbitrary variants
$tw->merge('[&>*]:underline [&>*]:line-through'); // [&>*]:line-through

// non tailwind classes
$tw->merge('non-tailwind-class block inline'); // non-tailwind-class inline

您可以将类作为字符串、数组或两者的组合传递

$tw->merge('h-10 h-20'); // h-20
$tw->merge(['h-10', 'h-20']); // h-20
$tw->merge(['h-10', 'h-20'], 'h-30'); // h-30
$tw->merge(['h-10', 'h-20'], 'h-30', ['h-40']); // h-40

缓存

为了更好的性能,TailwindMerge 可以缓存合并操作的结果。要激活,请将您的缓存实例传递给 withCache 方法。

它接受任何 PSR-16 兼容的缓存实现。

TailwindMerge::factory()
  ->withCache($cache)
  ->make();

在更改配置时,请确保清除缓存。

配置

如果您没有使用任何额外的 Tailwind CSS 配置,则可以直接使用 TailwindMerge。到此为止即可。

如果您正在使用自定义 Tailwind 配置,可能需要配置 TailwindMerge 以正确合并类。

默认情况下,TailwindMerge 的配置方式是,如果以下所有条件都适用于您的 Tailwind 配置,则您仍然可以使用它

  • 仅使用不与其他 Tailwind 类名冲突的颜色名称
  • 仅从基于数字的 Tailwind 类中通过数字值进行偏差
  • 仅使用不与默认字体重量类冲突的字体族类
  • 对于其他所有内容都坚持默认 Tailwind 配置

如果这些点中的某些不适用于您,则需要自定义配置。

以下是一个添加自定义字体大小 "very-large" 的示例

TailwindMerge::factory()->withConfiguration([
        'classGroups' => [
            'font-size' => [
                ['text' => ['very-large']]
            ],
        ],
    ])->make();

有关配置选项的更详细说明,请访问 原始包文档

贡献

感谢您考虑为 TailwindMerge for PHP 做出贡献!贡献指南可以在 CONTRIBUTING.md 文件中找到。

TailwindMerge for PHP 是一个开源软件,采用 MIT 许可协议