tailwindcss-fluid-spacing
v0.4.0
Published
A Tailwind CSS plugin that provides fluid-responsive spacings across viewport widths.
Downloads
969
Maintainers
Readme
tailwindcss-fluid-spacing
A Tailwind CSS plugin that provides fluid-responsive spacings across viewport widths.
Installation
Install the plugin from npm:
npm install -D tailwindcss-fluid-spacing
or
yarn add -D tailwindcss-fluid-spacing
Then add the plugin to your tailwind.config.js
file:
// tailwind.config.js
module.exports = {
theme: {
// ...
},
plugins: [
require('tailwindcss-fluid-spacing'),
// ...
],
}
Usage
Basic
Fluid-spacing is inherited by the padding
, margin
, width
, height
, maxHeight
, gap
, inset
, space
and translate
core plugins. Insert vw-
before {size}
to each utilities.
Examples:
<div class="p-vw-8">...</div> <!-- padding: 2.5vw; -->
<div class="mx-vw-16">...</div> <!-- margin-left: 5vw; margin-right: 5vw; -->
<div class="-mt-vw-16">...</div> <!-- margin-top: -5vw; -->
<div class="w-vw-64">...</div> <!-- width: 20vw; -->
<div class="h-vw-32">...</div> <!-- height: 10vw; -->
<div class="gap-vw-10">...</div> <!-- gap: 3.125vw; -->
<div class="top-vw-24">...</div> <!-- top: 7.5vw; -->
<div class="inset-vw-4">...</div> <!-- top: 1.25vw; right: 1.25vw; bottom: 1.25vw; left: 1.25vw; -->
<div class="translate-y-vw-12">...</div> <!-- --tw-translate-y: 3.75vw; transform: var(--tw-transform); -->
Responsive
To control the fluid-spacing at a specific breakpoint, add a {screen}:
prefix to any existing utility. For example, adding the class md:p-vw-8
to an element would apply the p-vw-8
utility at medium screen sizes and above.
<div class="md:p-vw-8">...</div>
To provide a minimum or a maximum value, add a -{min|max}@{screen}
suffix to any existing utility; to privide both minmun and maximum values, add a -min@{screen}-max@{screen}
suffix. For example, the class mt-vw-16-min@sm
would provide the 5vw
value with the minmum value 2rem (32px)
which equals 5vw
at the small screen.
<div class="mt-vw-16-min@sm">...</div> <!-- margin-top: max(5vw, 2rem); -->
<div class="mt-vw-16-max@xl">...</div> <!-- margin-top: min(5vw, 4rem); -->
<div class="mt-vw-16-min@sm-max@xl">...</div> <!-- margin-top: clamp( 2rem, 5vw, 4rem ); -->
The -{min|max}@{screen}
and -min@{screnn}-max@{screen}
suffixes are also available for any breakpoint.
<div class="my-10 sm:my-vw-20-max@xl">...</div>
Default fluid-spacing
| Size | Value | 320px | sm: 640px | md: 768px | lg: 1024px | xl: 1280px | 2xl: 1536px |
| ---- | ----------- | ------- | --------- | --------- | ---------- | ---------- | ----------- |
| 1 | 0.3125vw
| 1px
| 2px
| 2.4px
| 3.2px
| 4px
| 4.8px
|
| 1.5 | 0.46875vw
| 1.5px
| 3px
| 3.6px
| 4.8px
| 6px
| 7.2px
|
| 2 | 0.625vw
| 2px
| 4px
| 4.8px
| 6.4px
| 8px
| 9.6px
|
| 2.5 | 0.78125vw
| 2.5px
| 5px
| 6px
| 8px
| 10px
| 12px
|
| 3 | 0.9375vw
| 3px
| 6px
| 7.2px
| 9.6px
| 12px
| 14.4px
|
| 3.5 | 1.09375vw
| 3.5px
| 7px
| 8.4px
| 11.2px
| 14px
| 16.8px
|
| 4 | 1.25vw
| 4px
| 8px
| 9.6px
| 12.8px
| 16px
| 19.2px
|
| 5 | 1.5625vw
| 5px
| 10px
| 12px
| 16px
| 20px
| 24px
|
| 6 | 1.875vw
| 6px
| 12px
| 14.4px
| 19.2px
| 24px
| 28.8px
|
| 7 | 2.1875vw
| 7px
| 14px
| 16.8px
| 22.4px
| 28px
| 33.6px
|
| 8 | 2.5vw
| 8px
| 16px
| 19.2px
| 25.6px
| 32px
| 38.4px
|
| 9 | 2.8125vw
| 9px
| 18px
| 21.6px
| 28.8px
| 36px
| 43.2px
|
| 10 | 3.125vw
| 10px
| 20px
| 24px
| 32px
| 40px
| 48px
|
| 11 | 3.4375vw
| 11px
| 22px
| 26.4px
| 35.2px
| 44px
| 52.8px
|
| 12 | 3.75vw
| 12px
| 24px
| 28.8px
| 38.4px
| 48px
| 57.6px
|
| 14 | 4.375vw
| 14px
| 28px
| 33.6px
| 44.8px
| 56px
| 67.2px
|
| 16 | 5vw
| 16px
| 32px
| 38.4px
| 51.2px
| 64px
| 76.8px
|
| 20 | 6.25vw
| 20px
| 40px
| 48px
| 64px
| 80px
| 96px
|
| 24 | 7.5vw
| 24px
| 48px
| 57.6px
| 76.8px
| 96px
| 115.2px
|
| 28 | 8.75vw
| 28px
| 56px
| 67.2px
| 89.6px
| 112px
| 134.4px
|
| 32 | 10vw
| 32px
| 64px
| 76.8px
| 102.4px
| 128px
| 153.6px
|
| 36 | 11.25vw
| 36px
| 72px
| 86.4px
| 115.2px
| 144px
| 172.8px
|
| 40 | 12.5vw
| 40px
| 80px
| 96px
| 128px
| 160px
| 192px
|
| 44 | 13.75vw
| 44px
| 88px
| 105.6px
| 140.8px
| 176px
| 211.2px
|
| 48 | 15vw
| 48px
| 96px
| 115.2px
| 153.6px
| 192px
| 230.4px
|
| 52 | 16.25vw
| 52px
| 104px
| 124.8px
| 166.4px
| 208px
| 249.6px
|
| 56 | 17.5vw
| 56px
| 112px
| 134.4px
| 179.2px
| 224px
| 268.8px
|
| 60 | 18.75vw
| 60px
| 120px
| 144px
| 192px
| 240px
| 288px
|
| 64 | 20vw
| 64px
| 128px
| 153.6px
| 204.8px
| 256px
| 307.2px
|
| 72 | 22.5vw
| 72px
| 144px
| 172.8px
| 230.4px
| 288px
| 345.6px
|
| 80 | 25vw
| 80px
| 160px
| 192px
| 256px
| 320px
| 384px
|
| 96 | 30vw
| 96px
| 192px
| 230.4px
| 307.2px
| 384px
| 460.8px
|
Configuration options
You can invoke the plugin passing along options when registering it in plugins
configuration.
Customize the default setting
Use the sizes
key to customize the default setting.
// tailwind.config.js
module.exports = {
theme: {
// ...
},
plugins: [
require('tailwindcss-fluid-spacing')({
sizes: [16, 20, 24],
}),
// ...
],
}
This will only use 16
, 20
and 24
as the {size}
to generate classes like p-vw-16
, m-vw-20
, w-vw-24
, etc.
Extend the default setting
To extend the default setting, put the sizes
key in extend
section.
// tailwind.config.js
module.exports = {
theme: {
// ...
},
plugins: [
require('tailwindcss-fluid-spacing')({
extend: {
sizes: [68, 76],
},
}),
// ...
],
}
This will generate classes like p-vw-68
and m-vw-76
in addition to all of the default fluid-spacing utilities.
License
MIT