login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Screen resize

Offline BARRYBOYY - 16/08/2016 11:31 (laatste wijziging 16/08/2016 11:45)
Avatar van BARRYBOYYNieuw lid Beste,

Ik ben bezig met een basis website.
Ik ben begonnen met een container: width: 100%;
In de container heb ik een header: height: 270px;
Daarin weer een menu: height: 65px;


De width van de header en de menu is gelijk aan de width van de container. (dit is toch goed bedacht? correct me aub)

Nu het volgende, ik wil graag dat mijn menu balk fixed is. oftewel dat hij mee komt zodra ik scroll naar beneden.

Weliswaar als ik position: fixed; geef aan de menu dan lukt het echter mijn balk is gek genoeg in een keer kleiner.. dat snap ik niet.

Ik kan het corrigeren met alsnog een width van 79% geven aan de menu balk en dat lukt ook.

MAAARRR zodra ik de screen verklein steekt de menubalk rechts uit (iets buiten de container) Kan iemand mij dat uitleggen hoezo dat is?


dit is mijn code

  1. #container {
  2. width: 80%;
  3. height: auto;
  4. margin-top: -1%;
  5. padding: 0 10%;}
  6.  
  7. #header {
  8. height: 270px;
  9. background-color: gainsboro;}
  10.  
  11. #menu {
  12. height: 65px;
  13.  
  14. float: left;
  15. background: darkgrey;
  16. position: fixed;}
  17.  
  18. #menu ul li {
  19. list-style-type: none;
  20. display: inline-block;
  21. float: right;
  22. margin: 20px 20px 0 0;}
  23.  
  24. a {
  25. text-decoration: none;
  26. font-family: sans-serif;
  27. color: lightblue;
  28. font-size: 21px;}


  1. <div id="container">
  2. <div id="header">
  3. <div id="menu">
  4. <ul>
  5. <li><a href="#">Contact</a>
  6. </li>
  7. <li><a href="#">About</a>
  8. </li>
  9. <li><a href="#">Services</a>
  10. </li>
  11. <li><a href="#">Home</a>
  12. </li>
  13.  
  14.  
  15. </ul>
  16. </div>
  17. </div>
  18. </div>


mod edit: code tags

8 antwoorden

Gesponsorde links
Offline Thomas - 16/08/2016 12:00
Avatar van Thomas Moderator Op het moment dat je position: fixed gebruikt haal je dat element uit de "flow" van de pagina denk ik. Elementen met position: fixed erven dan als zodanig ook geen eigenschappen over van bovengelegen elementen in de pagina, immers, dit element was al uit de context van de pagina gehaald.

Oftewel, indien je elementen met position: fixed gaat gebruiken is het wellicht beter om alle dimensies expliciet op te geven. In het algemeen is er iets voor te zeggen om met vaste breedtes te werken op basis van de dimensies van je browservenster.

En dat brengt mij bij het volgende punt: indien je je venster gaat resizen en je wilt dat de layout zich hier op aanpast dan zul je hier iets voor in moeten bouwen in de vorm van responsive design: op grond van afmetingen of enkel de breedte van je browservenster heeft je site een bepaalde layout.

Enige tijd geleden heb ik trouwens een snippet gemaakt met een sticky navigatiebalk. Wellicht kun je dat als uitgangspunt gebruiken voor een responsive variant. Je zou deze natuurlijk ook zo aan kunnen passen dat deze niet afhankelijk is van JavaScript indien de toegankelijkheid tot jouw website dit vereist.
Bedankt door: BARRYBOYY
Offline BARRYBOYY - 16/08/2016 12:19
Avatar van BARRYBOYY Nieuw lid Bedankt voor je uitleg! tof!

Is het gebruiken van een container op deze manier wel goed?
In feite heb ik me ook gefocust op een responsive design en de header en body (3 columns) bewegen goed mee zodra ik mijn screen resize.

Dus, als ik je goed begrijp.

Indien ik position fixed geef aan een element in dit geval #menu negeert hij alle codes van de bovenliggende element? oftewel, Menu zit in een header en de header zit in mijn container met 80% width dan negeert mijn menu de 80% width omdat ik postion fixed gebruik?

Wat dat betreft als ik alsnog wil dat mijn Menu stickt dan moet ik jou tutorial gebruiken (oftewel javascript?)

Offline Thomas - 16/08/2016 12:34
Avatar van Thomas Moderator
Citaat:
Is het gebruiken van een container op deze manier wel goed?

Jawel hoor, misschien met de toevoeging dat je een absolute breedte (in pixels, op grond van de afmetingen van je browservenster) gebruikt in plaats van een relatieve; indien je absolute breedtes gaat gebruiken is het vervolgens wel handig als je deze weer af laat hangen van je schermdimensies. Daarmee worden de absolute breedtes weer relatief ten opzichte van je scherm, zogezeid .

Citaat:
Indien ik position fixed geef aan een element in dit geval #menu negeert hij alle codes van de bovenliggende element? oftewel, Menu zit in een header en de header zit in mijn container met 80% width dan negeert mijn menu de 80% width omdat ik postion fixed gebruik?

Ik weet niet hoe het precies werkt maar beschouw elementen met position: fixed als op zichzelf staande elementen die je dus ook expliciet moet opmaken via CSS. Het effect is in ieder geval hetzelfde (elementen met position: fixed trekken zich nergens anders iets van aan).

Citaat:
Wat dat betreft als ik alsnog wil dat mijn Menu stickt dan moet ik jou tutorial gebruiken (oftewel javascript?)

Je hebt niet per se JavaScript nodig voor een sticky menu maar je zult het verschil merken als je gaat scrollen. In een variant met JavaScript is de overgang soepeler dan zonder omdat je dynamisch een class toevoegt en verwijdert op grond van scrollpositie.

Je wilt namelijk niet dat je navigatiebalk op voorhand tegen de bovenbalk zit geplakt tenzij je design zo in elkaar zit.
Bedankt door: BARRYBOYY
Offline BARRYBOYY - 16/08/2016 12:50 (laatste wijziging 16/08/2016 12:54)
Avatar van BARRYBOYY Nieuw lid Duidelijk! ik ga het met javascript proberen! Je zou dus ook aanraden om een sticky nav voortaan te fixen met javascript?
Offline Thomas - 16/08/2016 13:09
Avatar van Thomas Moderator De snippet waar ik naar verwees "werkt" ook indien JavaScript uit staat, al blijft de navigatiebalk dan gewoon inline staan (scrollt dan niet mee indien je naar beneden scrollt).

Zolang je JavaScript oplossing je site niet breekt indien JavaScript uit staat kun je prima extra toeters en bellen bijmaken in JavaScript.
Offline BARRYBOYY - 16/08/2016 14:13
Avatar van BARRYBOYY Nieuw lid Ik heb Javascript toegevoegd. En het ziet er leuk uit!
Echter, nu ontstaat er alsnog een probleem.

Zodra ik alsnog mijn screen resize en kleiner maak dan wordt mijn Menu balk kleiner en niet meer de width die ik heb aan gegeven.

Het blijft stoeien!
Dit is mijn code zoals ik hem nu heb.




  1. #container {
  2. max-width: 950px;
  3. height: auto;
  4. margin: -25px auto;
  5. }
  6. #header {
  7. height: 270px;
  8. background-color: gainsboro;
  9.  
  10. }
  11. #menu {
  12. margin-top: -16px;
  13. height: 60px;
  14. background: darkgrey;
  15. max-width: 950px;
  16. }
  17.  
  18. #menu ul li {
  19. list-style-type: none;
  20. display: inline-block;
  21. float: right;
  22. margin: 20px 20px 0 0;
  23.  
  24. }
  25. div#menu.sticky { position: fixed; top: 0; z-index: 1;}
  26.  
  27. a {
  28. text-decoration: none;
  29. font-family: sans-serif;
  30. color: lightblue;
  31. font-size: 21px;
  32. }
  33.  
  34.  
  35.  
  36. #body {
  37. height: 2000px;
  38. background-color: aliceblue;
  39. margin-top: 100px;
  40.  
  41. }
  42. .row1 {
  43. width: 33%;
  44. height: 200px;
  45. background-color: darkcyan;
  46. text-align: center;
  47.  
  48. }
  49.  
  50. .row2 {
  51. width: 33%;
  52. height: 200px;
  53. background-color: darkgoldenrod;
  54. margin: -200px 33.5%;
  55. text-align: center;
  56.  
  57.  
  58. }
  59.  
  60. .row3 {
  61. width: 33%;
  62. height: 200px;
  63. background-color: darkmagenta;
  64. float: right;
  65. text-align: center;
  66. }
  67.  
  68.  
  69. section {
  70. height: 200px;
  71. background-color: antiquewhite;
  72. margin: 200px 0 0 0;
  73. }

  1. <!DOCTYPE html>
  2. <title>Basic</title>
  3. <link rel="stylesheet" type="text/css" href="stylesheet.css">
  4. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  5. </head>
  6.  
  7. <div id="container">
  8. <div id="header">
  9. </div>
  10. <div id="menu">
  11. <ul>
  12. <li><a href="#">Contact</a>
  13. </li>
  14. <li><a href="#">About</a>
  15. </li>
  16. <li><a href="#">Services</a>
  17. </li>
  18. <li><a href="#">Home</a>
  19. </li>
  20.  
  21.  
  22. </ul>
  23. </div>
  24.  
  25. <div id="body">
  26. <div class="row1">Lorem Ipsum adalah contoh teks atau dummy dalam industri percetakan dan penataan huruf atau typesetting. Lorem Ipsum telah menjadi standar contoh teks sejak tahun 1500an, saat seorang tukang cetak yang tidak dikenal mengambil sebuah </div>
  27. <div class="row2">Sudah merupakan fakta bahwa seorang pembaca akan terpengaruh oleh isi tulisan dari sebuah halaman saat ia melihat tata letaknya. Maksud penggunaan Lorem Ipsum adalah karena ia kurang lebih memiliki penyebaran huruf yang normal. </div>
  28. <div class="row3">Tidak seperti anggapan banyak orang, Lorem Ipsum bukanlah teks-teks yang diacak. Ia berakar dari sebuah naskah sastra latin klasik dari era 45 sebelum masehi, hingga bisa dipastikan usianya telah mencapai lebih dari 2000 tahun. </div>
  29.  
  30. <section>
  31.  
  32. </section>
  33.  
  34. </div>
  35.  
  36. </div>
  37.  
  38. <script type="text/javascript">
  39. //<![CDATA[
  40. $(document).ready(function() {
  41. $(document).scroll(function(e) {
  42. if ($(document).scrollTop() > 270) {
  43. $('div#menu').addClass('sticky');
  44. } else {
  45. $('div#menu').removeClass('sticky');
  46. }
  47. });
  48. });
  49. //]]>
  50. </script>
  51.  
  52.  
  53. </html>
Offline Thomas - 16/08/2016 15:29 (laatste wijziging 16/08/2016 15:31)
Avatar van Thomas Moderator Mogelijk wil je dingen anders aanpakken op kleinere schermweergaven. In bovenstaande code zie ik geen responsiveness.

Het is misschien handig om te beginnen met je ontwerp voor het kleinste schermformaat (dit principe wordt ook wel "mobile first" genoemd).

Daarbij zou ik vaste hoogtes voor dynamische elementen (#body height 2000px ?) vermijden.

NB de jQuery versie die je daar gebruikt is inmiddels redelijk verouderd, snor een nieuwere versie op. Daarnaast zou je je af kunnen vragen -indien je jQuery verder niet gebruikt- of dit niet nogal overkill is, je include een redelijk grote library voor een enkel simpel visueel effect.
Offline BARRYBOYY - 16/08/2016 17:13
Avatar van BARRYBOYY Nieuw lid Roger that! bedankt voor de hulp! ik ga weer even van scratch beginnen. Ik wil hierin door gaan! dus dat wordt stoeien stoeien stoeien!
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2023 Sitemasters.be - Regels - Laadtijd: 0.128s