gehrisandro / tailwind-merge-php
TailwindMerge for PHP 通过自动解决它们之间的冲突来合并多个 Tailwind CSS 类
Requires
- php: ^8.1.0
- psr/simple-cache: ^3.0
Requires (Dev)
- laravel/pint: ^1.13.8
- nunomaduro/collision: ^7.10
- pestphp/pest: ^v2.24.0
- pestphp/pest-plugin-arch: ^2.6
- pestphp/pest-plugin-mock: ^2.0.0
- pestphp/pest-plugin-type-coverage: ^2.8
- phpstan/phpstan: ^1.10.55
- rector/rector: ^1.0.5
- symfony/var-dumper: ^6.4.2
This package is auto-updated.
Last update: 2024-09-21 18:16:55 UTC
README
TailwindMerge for PHP 允许您合并多个 Tailwind CSS 类,并通过删除与后来定义的类冲突的类来自动解决类之间的冲突。
由 dcastil 编写的 tailwind-merge 的 PHP 版本。
支持 Tailwind v3.0 至 v3.4。
如果您觉得这个包很有用,请考虑赞助维护者
- Sandro Gehri: github.com/sponsors/gehrisandro
如果您正在使用 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 许可协议。