🐥
Svelte CSS media queries Demo - Svelte REPL
🐣
Lightweight, comfortable, like Svelte
how to install
npm i svelte-media-queries
What can I do?
query = {
"mobile": "(max-width: 480px)",
"tablet": "(min-width: 480px) and (max-width: 768px)",
"largeTablet": "(min-width: 768px) and (max-width: 1200px)",
"desktop": "(min-width: 1200px)",
"other": [
"(min-width: 1200px)",
"(max-height: 900px)"
],
"themes": {
"dark": "(prefers-color-scheme: dark)",
"light": "(prefers-color-scheme: light)"
}
}
matches = {
"mobile": false,
"tablet": true,
"largeTablet": false,
"desktop": false,
"other": [
false,
true
],
"themes": {
"dark": false,
"light": true
}
}
Yes, yes, and it's all recursive and reactive
Try it in Svelte REPL
How to use
🙊
Query? Yes, just like in CSSquery='(min-width: 768px) and (max-width: 1280px)'
Matches? This is your result
bind:
directive)
Component (bind:matches
------------------
bind:matches={foo}
let:
directive)
Slot (let:matches
------------------
let:matches={foo}
Examples
Slot
<script>
import MediaQuery from 'svelte-media-queries'
</script>
<MediaQuery query='(max-width: 480px)' let:matches>
{#if matches}
mobile!!
{/if}
</MediaQuery>
Bind
<script>
import MediaQuery from 'svelte-media-queries'
let matches
</script>
<MediaQuery query='(max-width: 480px)' bind:matches/>
{#if matches}
mobile!!
{/if}
{#if matches}
Oh my God, it's really mobile
{/if}
That's not all!
query
You can use an array from query={['(max-width: 1200px)', '(min-width: 800px)']}
What about matches?
Matches will take everything from query
in order
matches=[boolean, boolean]
Svelte REPL
🐥
You can test this in Example
<script>
import MediaQuery from 'svelte-media-queries'
</script>
<MediaQuery query={['(max-width: 768px)', '(min-width: 768px) and (max-width: 1280px)', '(min-width: 1280px)']} let:matches>
{@const [mobile, tablet, desktop] = matches}
<h5>
mobile: '(max-width: 768px)' = {mobile}
tablet: '(max-width: 1280px)' = {tablet}
desktop: '(min-width: 1280px)' = {desktop}
</h5>
</MediaQuery>
{@const}
- Svelte Docs
You can also use it through the array index tablet = matches[1]
With bind:
, everything is the same