TL;DR: Hoe kan ik buttons plaatsen op een vaste plek tov een (background) image, terwijl deze image responsive is en diens grootte of positie dus afhangt van de grootte van het browservenster. Ik heb twee losse oplossingen maar zoek de combinatie.
Ik ben bezig een portfolio site te bouwen; die zowel op desktop als mobile er goed moet uitzien. Het gaat om het eindresultaat maar ook om er zelf wat van op te steken, want als UI/UX'er heb ik praktisch geen recente web ervaring; tijd om daar verandering in te brengen. Met mijn stoffige css-kennis, google en stackoverflow ben ik al best een eind gekomen vind ik zelf. Overigens heb ik geen bezwaar om js/jquery of andere handige tools te gebruiken (nog niet naar gekeken), wat ook maar het handigst is om dit enigzins net te bouwen voor mobile/desktop en alle relevante browsers.
De bedoeling is dat de site een venstervullende achtergrondfoto is met daarin verschillende segmenten die video-loopjes krijgen bij :hover* (en klikbaar worden naar meer info). Die positie van de videos moet precies overeen komen met de achtergrondfoto, en is vrij arbitrair; m.a.w. ik kan het niet in bv. een grid proppen. *Overigens ga ik er voor zorgen dat de video's niet afspelen op mobile, want dat is alleen maar irritant.
Dat is me al gelukt, zie hier:
voorbeeld 1
hover op het beeldscherm voor een quick&dirty voorbeeld. Als je browsergrootte verandert zie je dat de video netjes op z'n plek blijft. Dit werkt zo:
Echter, nu wil ik de boel ook enigzins elegant laten schalen; in 3 stadia:
stadium 1. ratio: <4:3 (width: 100% van een 4:3 afbeelding)
stadium 2. ratio: 4:3<16:9 (height: 100%, hier wordt langzaam meer zichtbaar van de 16:9 afbeelding)**
stadium 3. ratio: >16:9 (width: 100% van de 16:9 afbeelding)
Ook dat heb ik voor elkaar met media queries die kijken naar de screenratio van de browser:
voorbeeld 2
De vraag is nu, hoe combineer ik beide voorbeelden? Omdat in stadium 2 de positionering van de afbeelding zo anders werkt met de centrering 'hack', en de video in het eerste voorbeeld is gepositioneerd tov het browservenster. Veel handiger zou zijn als ik de video zou kunnen positioneren tov een container div. (Hoe) kan dit?
**Ik test vooralsnog eigenlijk alleen in Chrome. In Edge en Safari (iphone5) gaat ie in stadium 2 stuk. Tips? Kan dit zonder deze 'hack'?
Alvast bedankt!
Ik ben bezig een portfolio site te bouwen; die zowel op desktop als mobile er goed moet uitzien. Het gaat om het eindresultaat maar ook om er zelf wat van op te steken, want als UI/UX'er heb ik praktisch geen recente web ervaring; tijd om daar verandering in te brengen. Met mijn stoffige css-kennis, google en stackoverflow ben ik al best een eind gekomen vind ik zelf. Overigens heb ik geen bezwaar om js/jquery of andere handige tools te gebruiken (nog niet naar gekeken), wat ook maar het handigst is om dit enigzins net te bouwen voor mobile/desktop en alle relevante browsers.
De bedoeling is dat de site een venstervullende achtergrondfoto is met daarin verschillende segmenten die video-loopjes krijgen bij :hover* (en klikbaar worden naar meer info). Die positie van de videos moet precies overeen komen met de achtergrondfoto, en is vrij arbitrair; m.a.w. ik kan het niet in bv. een grid proppen. *Overigens ga ik er voor zorgen dat de video's niet afspelen op mobile, want dat is alleen maar irritant.
Dat is me al gelukt, zie hier:
voorbeeld 1
hover op het beeldscherm voor een quick&dirty voorbeeld. Als je browsergrootte verandert zie je dat de video netjes op z'n plek blijft. Dit werkt zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| #container { width:100%; height:auto; padding:0; margin:0; border:0; } #bg { /*achtergrondfoto*/ position: absolute; left: 0px; top: 0px; width:100%; height: auto; z-index: -1; } #screen { /*de video*/ opacity: 0; position: absolute; margin-left: 53.33%; /*custom, maar dat geeft niet; het werkt*/ margin-top: 20.14%; /*custom*/ width:25.89%; /*custom*/ } #screen:hover { opacity: 1; } |
Echter, nu wil ik de boel ook enigzins elegant laten schalen; in 3 stadia:
stadium 1. ratio: <4:3 (width: 100% van een 4:3 afbeelding)
stadium 2. ratio: 4:3<16:9 (height: 100%, hier wordt langzaam meer zichtbaar van de 16:9 afbeelding)**
stadium 3. ratio: >16:9 (width: 100% van de 16:9 afbeelding)
Ook dat heb ik voor elkaar met media queries die kijken naar de screenratio van de browser:
voorbeeld 2
De vraag is nu, hoe combineer ik beide voorbeelden? Omdat in stadium 2 de positionering van de afbeelding zo anders werkt met de centrering 'hack', en de video in het eerste voorbeeld is gepositioneerd tov het browservenster. Veel handiger zou zijn als ik de video zou kunnen positioneren tov een container div. (Hoe) kan dit?
**Ik test vooralsnog eigenlijk alleen in Chrome. In Edge en Safari (iphone5) gaat ie in stadium 2 stuk. Tips? Kan dit zonder deze 'hack'?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| /*in de media query voor stadium 2*/ #container { float: right; right: 50%; position: relative; } #sixteennine { /*16:9 ratio image*/ float: right; right: -50%; position: relative; height: 100%; z-index: -1; } |
Alvast bedankt!