problem med "boxar" i en responsive hemsida

Permalänk
Medlem

problem med "boxar" i en responsive hemsida

Hej

Jag försöker få till en hemsida HTML5 med responsive design. Jag har ett antal article boxar som ska ligga i mitten på sidan med tanken att dessa ska minska när sidan minskar. Men jag får inte till detta. Vad gör jag för fel?

Dessutom vill jag ha två articles jämte varandra tills det är dags att ha dom ensamma efter varandra. Men sidan verkar flytta ner articles nästan direkt att ligga efter varandra.

<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width-device-width, initial-scale=1.0"> <title>Vara Utomhusbad</title> <link href="bad2.css" rel="stylesheet" type="text/css"> </head> <body> <div class="hela"> <header> Header </header> <aside class="meny"> Aside </aside> <section> <h1>Section</h1> <article>art1</article> <article>art2</article> <article>art3</article> <article>art4</article> </section> <aside class="news"> Aside </aside> <footer> Footer </footer> </div> </body> </html>

HTML

@charset "utf-8"; /* CSS Document */ * { margin: 0px; padding: 0px; } h1, h2, h3 { margin: 0px; padding: 0px; } body { margin-top: 20px; font-family: ariel; } header, section, footer, aside, nav, article, hgroup { display: block; } html { -webkit-text-size-adjust:100%; } div.hela { max-width: 1050px; /* Total bredd 1050 px */ margin: auto; background-color: #7B68EE; } header { width: 100%; background-color: crimson; /* enbart för test */ height: 50px; /* enbart för test */ } aside.meny { width: 15%; /* 15% = 157,5 px */ float: left; background-color: darkblue; /* enbart för test */ height: 450px; /* enbart för test */ } aside.news { width: 15%; /* 15% = 157,5 px */ float: right; background-color: yellow; /* enbart för test */ height: 450px; /* enbart för test */ } section { width: 70%; /* 70% = 735 px*/ float: left; background-color: green; /* enbart för test */ height: 450px; /* enbart för test */ } article { border: 5px solid Maroon; border-radius: 25px; float: left; width: 37.69%; /*277 px = 0,3769% */ height: 100px; margin: 2.72%; /*20 px = 0,0272% */ padding: 2.72%; /*20 px = 0,0272% */ } .article { border: 5px solid Maroon; border-radius: 25px; float: left; width: 37.69%; /*277 px = 0,3769% */ height: 100px; margin: 2.72%; /*20 px = 0,0272% */ padding: 2.72%; /*20 px = 0,0272% */ } footer { width: 100%; /* 100% = 1050 px */ clear: both; background-color: purple; /* enbart för test */ height: 50px; /* enbart för test */ } @media screen and (max-width: 800px) { section { background-color: red; } } @media screen and (max-width: 600px) { aside.news { display: none; } section { width: 85%; } } @media screen and (max-width: 400px) { aside.meny { clear:both; width: 100%; height: 50px; } section { width: 100%; } }

CSS

Demo: https://jsfiddle.net/c1a3eq2r/

Permalänk
Legendarisk

@nonSmoke: Välkommen till forumet! Tog mig friheten att redigera in dina kodstycken i [spoiler]...[/spoiler]- och [code]...[/code]-stycken så att det ska bli lite lättare att följa diskussionen, samt länka in en jsfiddle med ett körbart demo. Du kan redigera ditt inlägg för att se hur sådana kommandon skrivs.

Nu till frågan. Anledningen till att dina artiklar bryter till nya rader så tidigt är att de har en sammanlagd bredd på 37.69% + 2.72% + 2.72% + 2.72% + 2.72% = 48.57%, plus 10px för borders (5px på endera sidan). Så fort de resterande 2.86% av radbredden är mindre än 20px så kommer två boxar inte längre få plats på samma rad. Det inträffar redan strax under 700px, och din gröna section blir max 735px. Om du t.ex. inaktiverar kantlinjerna eller ändrar box-sizing så kan du få de att stanna kvar på samma rad istället.

Det är för all del bra att vara bekväm med floats, men vill du bygga moderna responsiva layouter så bör du primärt kika på att lära dig flexbox (och möjligen redan grids) istället; de gör det betydligt enklare att bygga mer invecklade layouter. Bifogar ett snabbt exempel på ditt problem i flexbox och grid här:
https://jsfiddle.net/0zeL8s7f/ (Chrome / Firefox)

Visa signatur

Abstractions all the way down.