Bootstrap 4 segítség. Hogyan alakítsam át a kódot?
Egy alapvetően egyszerű dologról lenne szó, de azt hiszem nem látom a fától az erdőt.
Ez a felállás lenne a cél.
Itt a jelenlegi kód: [link]
Hogyan oldjam meg, hogy a 2-es doboz mobil nézetben mindig felülre kerüljön? Nyilván a jelenlegi struktúrában nem maradhat.
A nehézséget az okozza, hogy a jobbszélső oszlop tartalma közé kellene "beékelni" a bal oldali oszlopot.
Köszi a segítséget!
Mivel másnak sem volt jobb ötlete, a határidő meg szorít:
Megoldottam "parasztba". A 2-es blokk nem duplikálható, mert a benne lévő tartalom ID-kkal van ellátva és megzavarodik a JS (érthető módon), de a 3-assal ez megoldható. Csak nem szép.
Ha valakinek van jobb megoldása akkor azt szívesen várom.
flex-order.
Bocs, ha kajáltam jobban kifejtem, kóddal.
Igen, tudom, a bootstrap is azt használja. :)
.row {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
}
vagy épp az order:
.order-md-2 {
-ms-flex-order: 2;
order: 2;
}
Tehát ezt használtam én is. A gond ott van, hogy a fenti (képen) látható megoldást szeretném elérni, de attól "szebb" módon, mint a "megoldásom" (miszerint az oszlop alsó felét elrejtem mobil nézetben felül, alul pedig a "másolatát" megjelenítem). Tehát nem szeretném ha egy elem is 2x szerepelne.
És az "1"-es div-et kellene a másik oszlop közepére beiktatni, ami nyilván nem lehetséges. Vagy eleve az oszlopokat kellene elengedni? Szóval gondolom értitek mi a problémám. Teljesen triviálisnak tűnik de nem áll össze valahogy...
Bootstrap nélkül:
Két felé kell osztanod a képernyőt: bal oldalt az 1-es dobozkád lesz, jobb oldalt pedig szükséged van egy konténerre aminek adnék egy display: flex-et
Mobilon: minden doboznak a szélességét 100%-ra növelném (realtív a nagy konténer), így a jobb oldal be fog csúszni a bal oldali fél alá, így oszlopot kapsz.
Bootstrap: ez a legegyszerűbb: container > row > col-ok
12 egységes rész van, col-6 col-6 két oszlop
col-12 az egész képernyő
a col és a szám közti betűkód, pedig a képernyő nagyságát jelöli
#5 Öhm.. Azt hiszem nem teljesen érted a problémát. (nézd meg kérlek a fenti kódokat amiket linkeltem)
Pontosan ezt csináltam. :)
A gond (vagy "feladat"), hogy a jobb oldali oszlopban van két "doboz" és azok közé kellene becsúsznia a bal oldali oszlopnak. (lásd kép)
Nyilván ebben az elrendezésben vagy fölé vagy alá tudom berakni a teljes jobb oldali oszlopot... de így a 2-es és 3-as is egy helyre kerül. Na az nekem nem jó.
(Ezért csináltam azt a megoldást -lásd második kód-, hogy a 3-as doboz az 1-es alatt és fölött is létezik, és a képernyő méretétől függően elrejtem/megjelenítem. Csak ez ugye nem "szép" megoldás... erre keresek egy olyan variációt, ahol minden doboz csak 1x szerepel a HTML kódban és szimplán CSS-el van megvalósítva a képen látható elrendezés.)
#7 Ezt kifejtenéd kérlek kicsit pontosabban? Mármint nyilván értem mi a float és @media, csak ugye flex konténeren belül nem használhatsz float-ot.
Most jelenleg így néz ki:
(így picit látványosabb mint a pastebin-es kód)
Tehát itt szeretném elérni, hogy a HTML-ben mindhárom doboz csak 1x szerepeljen, de az itt látható (és kipróbálható) működés megmaradjon. A jelenlegi módon is működik, de szimplán szakmailag érdekel, hogy hogyan lehetne ezt szebben megoldani, mert őszintén szólva baromira nem tetszik így. (pl ha template engine-t használsz és a 3-as doboz tartalmát másik fájlból húzod be, akkor nagyon nem jó, ha mondjuk egy formot tartalmaz és ugyanazok az ID-k több elemnél is szerepelnek az oldalon, mivel kétszer van betöltve csak az egyik mindig el van rejtve)
Tízen éve nem foglalkoztam weblappal, de valami ilyenre gondoltam.
Bootstrap nélkül:
<html>
<head>
<style>
div {width:100%;}
.div1 {background: red;}
.div2 {background: yellow;}
.div3 {background: green;}
@media screen and (min-width: 480px) {
div {width:50%;float: right;}
.div2 {float:left;}
}
</style>
</head>
<body>
<div class="div1">Div 1</div>
<div class="div2">Div 2</div>
<div class="div3">Div 3</div>
</body>
</html>
#9
Hmm. Köszi..
Mindenképpen a flex-el akartam kombinálni (mivel bootstrapre épül) de néha a kevesebb több. :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!