Problemen met mobiel?



Bij de meeste onder jullie zal de webpagina op de volgende manier beginnen:

<html>          
        <head>  

Zorg ervoor dat het op de volgende manier begint:

<!DOCTYPE html>
<html>    
<head>        
<meta name="viewport" content="width=device-width, initial-scale=1.0">        
<meta charset="utf-8">

De viewport-regel zal ervoor zorgen dat de mobiele stijl (uit het bestand cssbib.css) correct wordt weergegeven.

De "charset"-regel zorgt ervoor dat ook vreemde tekens (accenten en andere woordtekens), maar ook symbolen uit andere talen correct worden weergegeven.

CSS voor mobiel en/of desktop

Een onderdeel van CSS dat we tijdens de lessen niet hebben besproken, maar wel interessante mogelijkheden biedt, zijn MEDIA QUERIES. Opgelet: zonder het te beseffen gebruik je het al. Dankzij MEDIA QUERIES staan kolommen in een mobiele browser onder elkaar.

Maar wat als je nu graag bepaalde onderdelen enkel op een smartphone wil tonen, en andere elementen enkel op desktop? Het zou bijvoorbeeld kunnen zijn dat een titel een stuk te lang is in een mobiele browser. 

Hoe los je dit op?

Dankzij MEDIA QUERIES kan je aan "voorwaardelijke opmaak" doen. D.w.z. ALS de mobiel is, DAN pas je bepaalde stijlkenmerken aan.

Een voorbeeld: de breedte van afbeeldingen

Stel dat je een afbeelding op een computerscherm 50% breed wil maken, dan schrijf je in CSS de volgende regels:

img{       
     width:50%; 
}

Dankzij media queries is het nu mogelijk om die afbeeldingen in mobiele weergave 100% breed te maken. Je kan in CSS andere opmaak invoeren als het scherm bijvoorbeeld een lager aantal pixels in de breedte telt, zoals dit bij mobiele browsers doorgaans het geval is.

Voeg onderaan in je CSS-bestand nu de volgende regels toe (opgelet: de volgorde is belangrijk. De laatst opgenomen regel in je CSS-bestand overschrijft de voorgaande).

@media (max-width:600px){          
     /*hier komen je stijlregels voor mobiel */
}

Je kan nu heel eenvoudig de voorgaande regels i.v.m. afbeeldingen "overschrijven".
@media (max-width:600px){         
       img{                 
            width:100%;         
       } 
}

Wat gebeurt hier praktisch? Standaard toont de browser alle afbeeldingen op 50% breedte. Als het browserscherm minder dan 600 pixels telt in de breedte, worden de afbeeldingen 100% breed weergegeven. 

De trukken van de foor

Een voorbeeld: elementen verbergen op desktop en/of mobiel

Stel dat je titels net iets te groot zijn op mobiel. 

<h1>Deze titel is net iets te lang voor mobiele toestellen</h1>

Dan zou je die titel in mobiele weergave kunnen verbergen en op dat moment een kortere titel tonen. De handigste manier om dat te bereiken is om twee titels in te voeren (ééntje voor desktop, ééntje voor mobiel) en afhankelijk van de weergave de standaard of de mobiele versie te tonen of verbergen. Door op een verstandige manier gebruik te maken van CSS-klassen, kunnen we de opmaak ook voor andere elementen dan titels gebruiken. 
<h1 class="verberg-op-mobiel">Deze titel is net iets te lang voor mobiele toestellen</h1>
<img src="images/logodesktop.png" class="verberg-op-mobiel"/>
<h1 class="toon-op-mobiel">Mobiele titel</h1>
<img src="images/logomobiel.png" class="toon-op-mobiel"/>

Uiteraard moeten we nu nog wat werk doen in CSS. 
  1. In alle normale gevallen (groter scherm, desktop, laptop...) moeten we de elementen met de klasse "toon-op-mobiel" verbergen. 
  2. Op mobiele toestellen (toestellen met minder dan 600 pixels in de breedte) verbergen we de elementen met de klasse "verberg-op-mobiel. 
  3. Op mobiele toestellen (toestellen met minder dan 600 pixels in de breedte) tonen we de elementen met de klasse "toon-op-mobiel". 
.toon-op-mobiel{       
      display:none; 
}  

@media (max-width:600px){      
       .verberg-op-mobiel{            
              display:none;      
       }      
       .toon-op-mobiel{            
              display:block;      
       } 
}

Opgelet: het is maar een "snel" voorbeeld. In de praktijk zal je nog hier en daar wat uitzonderingen moeten toevoegen, want een <span>-element bijvoorbeeld moet je niet als een "block" tonen. In dat geval zou je nog kunnen toevoegen:
@media (max-width:600px){
       /*zie de regels hier boven*/
      span.toon-op-mobiel{
              display:inline-block;
      }
}

 

Een eigen "responsive" stijlbestand beginnen

Naast een bestaand CSS-framework ook een eigen stijlsjabloon nodig? Dat is zeer waarschijnlijk. De onderstaande code kan als voorbeeld dienen. 

Je site moet immers "mobiel" toegankelijk zijn. De waardes in de tabel hieronder zijn "richtwaardes", maar er zijn meer uitzonderingen dan regels.

Soort scherm

Resolutie (aantal pixels in de breedte)
Desktop HD1200px of meer
Desktopplusminus 1000 pixels
Tabletplusminus 750 pixels (of meer)
Phabletplusminus 550 pixels
Mobile400 pixels
......
/* Mobile first queries */ 
/*hier komt uw CSS-code die werkt voor MOBIEL.*/
/* Larger than mobile: alle schermen groter dan mobiel */ 
@media (min-width: 400px) {
     /*hier komt uw CSS-code*/
} 
/* Larger than phablet */ 
@media (min-width: 550px) {
     /*hier komt uw CSS-code*/
} 
/* Larger than tablet */ 
@media (min-width: 750px) {
     /*hier komt uw CSS-code*/
} 
/* Larger than desktop */ 
@media (min-width: 1000px) {
    /*hier komt uw CSS-code*/
} 
/* Larger than Desktop HD */ 
@media (min-width: 1200px) {
    /*hier komt uw CSS-code*/
}
@media print{
    /*stijl die enkel geldt bij het printen*/
}


home