Compare commits

...

2 commits

Author SHA1 Message Date
bc7760cef5 Fixed viewport display 2025-09-16 10:02:20 +08:00
4de57fcb4a Added display component 2025-09-16 10:01:51 +08:00
4 changed files with 65 additions and 34 deletions

View file

@ -0,0 +1,41 @@
import '../styles/Viewport.sass'
import { type JSXElement, Switch, Match } from 'solid-js'
interface Props {
children: JSXElement
desktop?: boolean
tablet?: boolean
mobile?: boolean
}
export default (props: Props) => {
return (
<>
<Switch>
<Match when={props.desktop && !props.tablet && !props.mobile}>
<div class="on-desktop-only">{props.children}</div>
</Match>
<Match when={!props.desktop && props.tablet && !props.mobile}>
<div class="on-tablet-only">{props.children}</div>
</Match>
<Match when={!props.desktop && !props.tablet && props.mobile}>
<div class="on-mobile-only">{props.children}</div>
</Match>
<Match when={props.desktop && props.tablet && !props.mobile}>
<div class="on-desktop-tablet-only">{props.children}</div>
</Match>
<Match when={props.desktop && !props.tablet && props.mobile}>
<div class="on-desktop-mobile-only">{props.children}</div>
</Match>
<Match when={!props.desktop && props.tablet && props.mobile}>
<div class="on-tablet-mobile-only">{props.children}</div>
</Match>
</Switch>
</>
)
}

View file

@ -12,6 +12,7 @@ export { default as Logo } from './components/Logo'
export { default as Navbar } from './components/Navbar'
export { default as Page } from './components/Page'
export { default as Row } from './components/Row'
export { default as Display } from './components/Display'
export { default as OptimizeBackground } from './Optimizers/OptimizeBackground'
export { default as OptimizeImage } from './Optimizers/OptimizeImage'

1
fwt/styles/Viewport.sass Normal file
View file

@ -0,0 +1 @@
@use '/src/styles/classes.sass'

View file

@ -11,61 +11,49 @@
opacity: 1
.on-desktop-only
@media only screen and (max-width: view.$desktop)
@media only screen and (min-width: 0px) and (max-width: view.$desktop)
display: none
@media only screen and (min-width: view.$desktop)
display: block
@media only screen and (max-width: view.$tablet)
display: none
@media only screen and (max-width: view.$mobile)
display: none
.on-tablet-only
@media only screen and (max-width: view.$desktop)
@media only screen and (min-width: 0px) and (max-width: view.$tablet)
display: none
@media only screen and (max-width: view.$tablet)
@media only screen and (min-width: view.$tablet) and (max-width: view.$desktop)
display: block
@media only screen and (max-width: view.$mobile)
@media only screen and (min-width: view.$desktop)
display: none
.on-mobile-only
@media only screen and (max-width: view.$desktop)
display: none
@media only screen and (max-width: view.$tablet)
display: none
@media only screen and (max-width: view.$mobile)
@media only screen and (min-width: view.$mobile)
display: block
@media only screen and (min-width: view.$tablet)
display: none
.on-desktop-tablet-only
@media only screen and (max-width: view.$desktop)
display: block
@media only screen and (max-width: view.$tablet)
display: block
@media only screen and (max-width: view.$mobile)
@media only screen and (min-width: 0px) and (max-width: view.$tablet)
display: none
@media only screen and (min-width: view.$tablet)
display: block
.on-desktop-mobile-only
@media only screen and (max-width: view.$desktop)
@media only screen and (min-width: 0px) and (max-width: view.$mobile)
display: block
@media only screen and (max-width: view.$tablet)
@media only screen and (min-width: view.$mobile) and (max-width: view.$desktop)
display: none
@media only screen and (max-width: view.$mobile)
@media only screen and (min-width: view.$desktop)
display: block
.on-tablet-mobile-only
@media only screen and (max-width: view.$desktop)
@media only screen and (min-width: 0px) and (max-width: view.$desktop)
display: block
@media only screen and (min-width: view.$desktop)
display: none
@media only screen and (max-width: view.$tablet)
display: block
@media only screen and (max-width: view.$mobile)
display: block