Oprettet søn. d. 14. oktober 2012 kl. 16:32:01

mik2000
mik2000 (7.482 point. Point ude: 200)

Luft mellem kollonner

Hej

Jeg sidder og leger med display:table, som jeg har valgt at bruge, fordi jeg skal have 3 kollonner der skal være lige høje, og gerne vil undgå hacks med padding/margin osv. ikke mindst fordi jeg skal have afrundede hjørner, og jeg vil også gerne undgå javascript/jquery

Det virker som sådan fint, men jeg kan ikke finde ud af hvordan jeg får noget margin mellem cellerne.

Koden ser sådan ud:

.container{
width: 100%;
display:inline-table;
}
.boxes{
width: 312px;
display: table-cell;
}

Jeg har prøvet at bruge:
border-collapse:collapse;
border-spacing: 12px 0px;
i containeren men så kommer der også margin til venstre og højre for alle celler, og jeg ønsker kun imellem dem.
Normal margin virker ikke.

Nogle der kan hjælpe - spørg endelig hvis du skal have mere info?

Skrevet søn. d. 14. oktober 2012 kl. 16:38:55| #1

scootergrisen
scootergrisen (8.356 point)
Læg din kode på nettet og kom med et link så vi kan se det i funktion.

Skrevet søn. d. 14. oktober 2012 kl. 16:49:25| #2

mik2000
mik2000 (7.482 point)
Fandt en mulig løsning med at lave en negativ margin-right og negativ margin-left på det samme som border-spacing, og ændre border-collapse til inherit, for at det virkede i alle browsere.

Har nogle kommentarer eller bedre løsninger, så hører jeg dem gerne

Koden er sådan her (der er ikke andet):

CSS:
.container{
  width: 100%;
  display:table;
  border-collapse:inherit;
  border-spacing: 12px 0px;
  margin-left: -12px;
  margin-right: -12px;
}
.boxes{
  width: 312px;
  display: table-cell;
  background-color: #fafafa;
}

HTML:
<div class="container">
  <div class="boxes">Boks 1</div>
  <div class="boxes">Boks 2</div>
  <div class="boxes">Boks 3</div>
</div>

Kom som sagt gerne med bedre forslag, eller alternative løsninger :)

Skrevet søn. d. 14. oktober 2012 kl. 16:56:02| #3

olebole
olebole (216.728 point)
<ole>

Det er helt forventeligt, men pudsigt nok, er der mange, som ikke forudser, hvordan elementer, der gøres til inline elementer, opfører sig  =)

To inline elementer, som står på to linjer, vil altid blive renderet med et mellemrum. Det overrasker dig sikkert ikke, at:

Ole
Bole

- renderes som 'Ole Bole' og ikke som 'OleBole'. Det samme gælder som bekendt:

<span>Ole</span>
<span>Bole</span>

Når du med display gør et block element til en eller anden slags inline element, vil det samme ske - hvilket ikke er så mærkeligt.

Løsningen er at fjerne mellemrummet i koden:

<li>Ole</li><li>
Bole</li>

- eller:

<li>Ole</li><!--
--><li>Bole</li>

/mvh
</bole>

Skrevet søn. d. 14. oktober 2012 kl. 16:58:57| #4

olebole
olebole (216.728 point)
#2 er en løsning, men ikke særlig hensigtsmæssig eller selvforklarende én  =)

Skrevet søn. d. 14. oktober 2012 kl. 17:01:43| #5

mik2000
mik2000 (7.482 point)
Hej Ole

Tak for svaret. Er ikke sikker på jeg forstår den. Her vil jeg jo netop have mellemrum mellem cellerne, og ikke eliminerer et mellemrum.

Min løsninger her hvor den ikke er inline-table, men kun table, krævede stadig "en hack" med negativ margin left og right, fordi jeg ikke ved om man kun kan bede den lave mellemrum mellem cellerne, og ikke i venstre/højre side. Prøvede noget med first-child mv, men det virker vist kun på rigtige html tabeller.

Så løsningen med hack blev:
CSS:
.container{
  width: 100%;
  display:table;
  border-collapse:inherit;
  border-spacing: 12px 0px;
  margin-left: -12px;
  margin-right: -12px;
}
.boxes{
  width: 312px;
  display: table-cell;
  background-color: #fafafa;
}

HTML:
<div class="container">
  <div class="boxes">Boks 1</div>
  <div class="boxes">Boks 2</div>
  <div class="boxes">Boks 3</div>
</div>

Skrevet søn. d. 14. oktober 2012 kl. 17:03:29| #6

mik2000
mik2000 (7.482 point)
Hehe skriver vist samtidige

Men har du en bedre løsning der løser:
1: Samme højde på kollonner
2: Ingen javascript og ingen -10000 margin padding hack
3: Mellemrum mellem "celler/kollonner"
4: Mulighed for afrunding

.... så hører jeg meget gerne, for kan ikke komme på andet ;)

Skrevet søn. d. 14. oktober 2012 kl. 17:07:55| #7

olebole
olebole (216.728 point)
Det kan jeg ikke have nogen mening om, da jeg ikke ved, hvad du vil vise. Hvad er i øvrigt et '10000 margin padding hack'? Sådan et kender jeg ikke  =)

Skrevet søn. d. 14. oktober 2012 kl. 17:09:00| #8

olebole
olebole (216.728 point)
Det kunne lyde, somom du bør bruge en tabel, men jeg kan som sagt ikke vide noget med sikkerhed  =)

Skrevet søn. d. 14. oktober 2012 kl. 17:14:14| #9

mik2000
mik2000 (7.482 point)
Men det er jo også en css tabel jeg bruger så vidt jeg forstår, og jeg kan jo ikke lave rundede hjørner på cellerne i en normal tabel så vidt jeg ved.

Den der hack er noget med de laver en stor negativ margin på f.eks. 10000px og så lave de den modsatte padding, eller sådan noget. Ikke optimalt ;)

Mit mål er at få 3 kollonner til at stå ved siden af hinanden, med mellemrum imellem hver kollonne.
Kollonnerne skal være lige højre, og følge højden i den kollonne med mest indhold.
Der skal være mulighed for at lave afrundede hjørner, og iøvrigt skal man helst begrænses så lidt som muligt i css.
Senere skal det laves dynamisk, så det skal også med i baghovedet :)

Skrevet søn. d. 14. oktober 2012 kl. 17:31:35| #10

olebole
olebole (216.728 point)
Nej, der ikke noget, der hedder en 'css tabel'. Du bruger DIV, ikke et TABLE element. De to ting har intet med hinanden at gøre.

Jeg forstår stadig ikke din forklaring af de 1000px - men det er nok også ligemeget  =)

Jeg forstår godt, du ønsker tre kollonner, og hvordan de skal se ud, men du forklarer stadig ikke noget om, hvad det er, du vil vise i elementerne.

Du kan bare give elementerne margin i siderne. Så opnår du horisinotalt mellemrum mellem elementerne - men inline elementer kan som bekendt ikke modtage vertikal padding eller margin.

Skrevet søn. d. 14. oktober 2012 kl. 22:28:40| #11

mik2000
mik2000 (7.482 point)
De kalder det jo display: table og display: table-cell, så det er vel for at det om ikke andet skal fungerer som en tabel, selvom det er divs og css.

Omkring den der 10000px ting så se understående link:
http://css-tricks.com/ (...)
... og scroll ned til dette: One True Layout Method

Jeg skal have html indhold dynamisk i elementerne (billeder, tabeller, tekst etc), og så skal elementerne/kollonnerne tilpasse sig længden på den længste, og holde sig lige høje altid
Samtidige skal der være baggrund og rundede hjørner på dem.

Men det virker med mit eksempel, så det er mere hvis du har en enklere måde eller lign.

Skrevet søn. d. 14. oktober 2012 kl. 23:01:23| #12

olebole
olebole (216.728 point)
En mand i kvindetøj kan måske ligne en kvinde på visse områder, men han vil aldrig fungere som kvinde. Der er stor forskel på tabeller og andre elementer med en tabel-agtig display værdi. Det er to komplet forskellige ting  =)

Det viste 'CSS-hack' er blot ét af utallige eksempler på dårlige hacks for at få HTML/CSS til at opføre sig på en måde, som aldrig har været meningen med disse teknologier: Layout i kollonner.

Først med CSS 3 har W3C prioriteret layout i kollonner, men det er meget forskelligt understøttet i nettets aktuelle browsere.

Skrevet tir. d. 16. oktober 2012 kl. 02:02:44| #13

mik2000
mik2000 (7.482 point)
Ja kan jeg se: http://caniuse.com/ (...)

Så er den løsning jeg selv fandt nok bedst for der skulle vist ikke være noget til hindre for at den virker i alle de forskellige browsere med undtagelse af de helt gamle

Tak for kommentarerne

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

List style ved linjeskift

Oprettet den 19. maj 2013 kl. 23.57
sarcar giver 60 point for svar | Giv et svar »

line.height

Oprettet den 19. maj 2013 kl. 18.16
ZeBa giver 30 point for svar | Giv et svar »

Fat footer skal fylde hele sidens bredde

Oprettet den 17. maj 2013 kl. 14.42
13thsky giver 60 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Her er seks Google Labs-funktioner, som du skal slå til med det samme

Gmail Labs giver dig adgang til en masse smarte funktioner, som Googles ingeniører leger med i øjeblikket.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Tre smarte trick som gør Windows 8 bedre

Boot direkte til skrivebordet, få en strategisk godt placeret luk-knap og slip for at logge ind. Her er tre tips til Windows 8, som gør det nemmere at blive venner med styresystemet.


Nyheder fra Computerworld

Teaser billede

De 21 værste it-vaner - og hvordan du bryder dem

Du har helt sikkert en af disse dårlige it-vaner. Se her hvad du kan gøre.


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger