Ik wil m'n applicatie geschikt maken voor smartphones, en ga daarvoor de GUI opnieuw opzetten met CSS.
Nu lees ik dat je dat moet doen met CSS media queries. Je begint met een minimale scherm resolutie, en breidt de layout uit met een x-aantal 'breakpoints' van waar de scherm er anders uit kan zien.
Maar hoe doe je dat precies? Wat zijn de gangbare breakpoints voor de verschillende devices zoals smartphone, tablet, laptop, t/m 4k of 8k-scherm? Ik lees dat je dat moet doen met afmetingen in pixels, maar in CSS kan je ook centimeters opgeven, zou dat niet handiger zijn?
Op zich is het wel duidelijk.
Er zijn geen breakpoints te geven voor alle devices omdat ze allemaal anders zijn.
En CSS afmetingen in centimeters werken niet omdat ze toch weer worden omgerekend naar pixels.
Ik ga voor een responsive GUI met blokken van zo'n 400 pixels. Omdat je bij kleinere schermen niet alle blokken kan laten zien vanwege de schermgrootte ga ik gebruik maken van media queries met niet-overlappende bereiken (voor testen) van schermresoluties. Volgens mij is verticaal scrollen de standaard op alle devices (denk aan scrollwiel van een muis), en horizontaal scrollen is alleen normaal op voornamelijk mobiele devices. Door te werken met verschillende schermbreedtes (0 tot 400, 400 tot 800, 800 tot 1200 en 1200 of hoger) moet je kunnen bepalen welke blokken verborgen worden achter een horizontale swipe.
Ik begrijp dat het mogelijk is om dat voor elkaar te krijgen zonder gebruik van JavaScript. Nu ben ik nog op zoek naar CSS waarmee dat kan. Bijvoorbeeld, je hebt een header, een inhoudsopgave links (met meerdere niveau's) en de inhoud van een pagina. Je kunt dat met CSS grid doen, maar zou dat voor mobiele devices niet beter met CSS flex kunnen?
Op jijBuis zag ik een demo die gebruik maakt van de CSS eigenschap 'scroll-snap-type'. Doen jullie dat ook op zo'n manier?
Nog een video met wat ik bedoel: https://www.youtube.com/watch?v=ytl6TrroGis
Heb je al eens gekeken naar iets als Bootstrap 5.2. Dat maakt je leven een stuk makkelijker. Het werkt met een grid van maximaal 12 kolommen. Je gebruikt met Bootstrap een container, of container-fluid voor 100% breedte, een row en daarin kolommen. Waarbij je per breakpoint kunt opgeven hoe groot die kolom moet zijn. Je werkt dan met small devices, medium devices, large devices en xl devices via classes zoals col-md-6 voor een kolom voor medium grootte devices. Ook kun je divjes sorteren, als het op mobiel: 1, 2 is, kun je dit op desktop bijvoorbeeld 2,1 maken via 'order' classes. Erg handig!
?Onbekende gebruiker
23-06-2023 16:24
gewijzigd op 23-06-2023 16:27
Ik ben persoonlijk geen fan van bootstrap. In het verleden heb ik er wel naar gekeken, maar vond het redelijk absurd om allerlei CSS class-namen van derden te moeten onthouden terwijl CSS zelf al omvangrijk genoeg is.
Toegegeven, bootstrap heeft zijn nut om allerlei browser verschillen en quircks te mitigeren.
Maar dingen als de volgorde van divjes veranderen is een sigaar uit de doos van CSS, gepresenteerd als iets nieuws.
In de flex of grid-weergavemodus heb je de order eigenschap waarmee je dat supersimpel zonder bootstrap kan doen.
In mijn use-case slaat de balans door naar zelf doen met CSS, omdat mijn webapp alleen een paar desktop browsers hoeft te ondersteunen, en er nu nog geen vraag is om de webapp naar smartphones te tillen. (Voor publieke websites zou ik ook eerder voor bootstrap gaan)
Helaas kom ik niet meteen toe aan de CSS van mijn project, er moeten eerst nog wat andere dingen.
Maar dan kan dit idee nog even rijpen. Ik dank jullie alvast voor de terugkoppeling.
Uiteraard de breakpoints en de namen van de mediaqueries aanpassen naar eigen smaak, en eventueel eenvoudig uit te breiden met varianten voor retina-schermen.
?Onbekende gebruiker
27-06-2023 11:20
Wederom dank.
Mijn intentie is overigens om via JS, evt. vanuit WASM, de browser van stijlinformatie te voorzien.
Ik zie niet meteen hoe SCSS/SASS daar bij past, gezien dat ze CSS-preprocessors zijn.
(Dat is zo'n beetje mijn excuus om niet óók nog SCSS/SASS syntax te onthouden ;-)