Vinnaren i pepparkakshustävlingen!
2017-04-25, 13:54
  #1
Medlem
Hej! Jag arbetar på en enklare hemsida och har en fråga.
Jag kommer att ha en header och footer och ett aside element. Bredvid aside elementet tänker jag ha artiklar. Nyhetsartiklar, så då passar ju article elementet tänker jag. Men jag vill ha 3 artiklar bredvid varandra, och under dem ytterligare tre artiklar.
Jag snurrar runt i huvudet med section, article och div men vet inte vilken jag bör använda var?

Jag tänker mig att ha de tre artiklarna i en div och sen ha de tre article bredvid varandra på samma rad. Men vad är det bästa att använda i det här fallet? Jag tänker mig ur en semantisk vinkel samt att man ju måste positionera elementen.

Är hyfsad nybörjare och självlärd
Citera
2017-04-25, 14:11
  #2
Medlem
LadyGanjas avatar
Fattade knappt ett skit utav vad du menar.
Kan du länka ett exempel eller rita lite grovt i typ paint?
Citera
2017-04-25, 15:15
  #3
Medlem
Ja jag förstod det, jag vet inte riktigt hur jag ska förklara mig, men här är en bild

http://www.bilddump.se/bilder/201704...233.15.189.png
Citera
2017-04-25, 15:27
  #4
Medlem
ei96byods avatar
Alternativ 1 är att lägga alla artiklar efter varandra och sedan styra med CSS att var tredje artikel ("nth-child") ska bryta. Man kan då ställa in att alla "article" ska vara t.ex. "float: left;" och sedan ställer man in en "clear" på var tredje article.
Detta fungerar dock inte i äldre versioner av internet explorer, så då måste man lägga till lite javascript för att det skall fungera där.

Alternativ 2 är att ställa in fast bredd på artiklarna och anpassa så att precis tre får plats i bredd, så kommer de brytas automatiskt. Återigen CSS för detta.

Alternativ 3 är att gruppera dem tre och tre med t.ex. "section" eller "div" och styra det på det sättet. Detta är nog mest kompatibelt med äldre webbläsare, men kräver ju mer arbete i HTML för att få strukturen rätt.

Semantiskt så fungerar nog alla tre alternativen lika bra.
Citera
2017-04-25, 16:13
  #5
Medlem
Tack för ditt svar, i alternativ 2, kan jag ställa in den fasta bredden i procent? Jag tänker mig att varje artikel är 25%, vilket blir 75%, och min aside är 25%.
Citera
2017-04-26, 01:14
  #6
Medlem
Povels avatar
Citat:
Ursprungligen postat av ei96byod
Alternativ 1 är att lägga alla artiklar efter varandra och sedan styra med CSS att var tredje artikel ("nth-child") ska bryta. Man kan då ställa in att alla "article" ska vara t.ex. "float: left;" och sedan ställer man in en "clear" på var tredje article.
Detta fungerar dock inte i äldre versioner av internet explorer, så då måste man lägga till lite javascript för att det skall fungera där.
[...]


nth-child fungerar från och med ie9. De flesta tycker nog inte att man behöver bry sig om att skriva javascript för att stödja de 0.07% i Sverige använder ie8, men det kan man förstås göra (och det behöver man för övrigt göra om man har tänkt sig att använda html5-element i ie8 över huvud taget). Eller bara sätta en klass på var tredje article efter den första och clearfloata dem..

Jag tror att flexbox skulle kunna vara något för OP. Finns hyfsat stöd från ie10, helt OK efter det.

Dock behövs det nog mer än den förslagna layouten (OPs bild med tre artiklar i bredd) om man vill att sidan skall vara angenäm på mindre skärmar.

Dock - så här skulle man kunna ha det med flexbox (lite komprimerat skrivet för överblickens skull):

HTML:
Kod:
<body>
  <
headerheader </header>
  <
main>
    <
asideaside-text<br>mer aside-text </aside>
    <
section>
      <
article>a1</article>
      <
article>a2</article>
      <
article>a3</article>
      <
article>a4</article>
      <
article>a5</article>
      <
article>a6</article>
    </
section>
  </
main>
</
body

CSS:
Kod:
htmlhtml * { box-sizingborder-box; }
headerasidearticle {
  
padding1em;
  
outline1px solid #383; /* debug style */
}
main displayflex; }
aside flex1; }
section {
  
displayflex;
  
flex3;
  
flex-wrapwrap;
}
article flex33%; } 

Ovan skulle behöva ett par mindre tillägg för att behaga även ie10.

/p
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback