Lenyíló szövegdobozok készítése
Sziasztok!
Abban szeretném a segítségeteket kérni, hogy hogyan készíthetnék lenyíló szövegdobozokat div-ből vagy table-ből valami egyszerű srcip-tel vagy minimal js-sel.
Egy nagyon primitív hírfolyamot szeretnék készíteni, ahol egymás alatt kinyitható szövegdobozok sorakoznának. Ebben a lenyíló részben lenne a tartalom. A lényeg, hogy ne csak egyetlen szövegdobozzal működjön, hanem bármennyivel.
Valami ilyesmire gondolokforrás: https://prog.hu/tudastar/18014/lenyilo-tablazat
Ez már majdnem az, amire én gondolok, csak annyi kellene hozzá, hogy a lenyíló dobozok alapból rejtve legyenek a lap betöltésekor, és csak kattintásra bukkanjanak elő, mert jelenleg alapból minden látszik és így túl terjedelmes.
A kinézettől most tekintsetek el. :)
Választok előre is köszönöm!
■ Abban szeretném a segítségeteket kérni, hogy hogyan készíthetnék lenyíló szövegdobozokat div-ből vagy table-ből valami egyszerű srcip-tel vagy minimal js-sel.
Egy nagyon primitív hírfolyamot szeretnék készíteni, ahol egymás alatt kinyitható szövegdobozok sorakoznának. Ebben a lenyíló részben lenne a tartalom. A lényeg, hogy ne csak egyetlen szövegdobozzal működjön, hanem bármennyivel.
Valami ilyesmire gondolok
<script> function rejto(x)
{
if (document.getElementById("rejt"+x).style.display=="none")
{
document.getElementById("rejt"+x).style.display="block" document.getElementById("rejt"+x).style.visibility="visible"
}
else
{
document.getElementById("rejt"+x).style.display="none" document.getElementById("rejt"+x).style.visibility="hidden"
}
}
for(j=1;j<4;j++)
{
document.getElementById("rejt"+j).style.display="none" document.getElementById("rejt"+j).style.visibility="hidden"
}
</script>
<table border="1" cellspacing="0" style="border-collapse: collapse" width="100%">
<tr>
<td onclick="rejto(1)">1</td>
</tr>
<tr id="rejt1">
<td>1a</td>
</tr>
<tr >
<td onclick="rejto(2)">2</td>
</tr> <tr id="rejt2">
<td>2a</td>
</tr>
<tr>
<td onclick="rejto(3)">3</td>
</tr>
<tr id="rejt3">
<td>3a</td>
</tr>
</table>
Ez már majdnem az, amire én gondolok, csak annyi kellene hozzá, hogy a lenyíló dobozok alapból rejtve legyenek a lap betöltésekor, és csak kattintásra bukkanjanak elő, mert jelenleg alapból minden látszik és így túl terjedelmes.
A kinézettől most tekintsetek el. :)
Választok előre is köszönöm!
Szerintem ezt nem js-ben,
"kéne"...
Sajnos van még mit tanulnom, ez tény. Azonban korábban ilyesmit nem tanultam, viszont a helyzet rákényszerít, hogy próbáljak önállóan fejlődni kicsit. Legalább az alapokat. Csak hát így elég nehéz.
Nagyon sok cikk van itt is az
Igen, tényleg vannak fent jó
Kipróbáltam, amit javasoltál tegnap. Működik, de nem teljesen ilyesmire gondoltam. Próbáltam átalakítani, de csak elrontottam, úgyhogy inkább nem erőltettem tovább. Viszont köszönöm, mert kiinduló pontnak tökéletes volt.
Próbáltam más dolgokat is, de sehogy se akart összeállni olyanra, mint ahogy elképzeltem.
Végül felidegesítettem magam rajta, és úgy döntöttem, hogy megpróbálom megírni magamtól az a sok dolog alapján, amiket innen-onnan összeszedtem, meg amit te javasoltál. Tisztán csak CSS-sel.
Sikerült! Valószínűleg ez egy nagyon kezdő megoldás, de legalább működik.
Teszteltem IE, Edge, Chrome, FF és Opera alatt is, látszólag jó.
Kódsor:
Először csak a címsoron volt hover, de rájöttem, hogy kell a rejtett divre is, ha a lenyíló szöveg függőlegesen túllógna az oldalon. Így a rejtett diven tartott egérrel is lehet végtelen hosszúságig lefele görgetni.
Viszont emiatt kicsit aggódom:
Bár rálebegtetés helyett kattintásra jobb lenne, de egyelőre úgy még nem megy.
Elvileg IE7-től felfele
Kezdésnek jó, lényeg, hogy működik. Én is csináltam már egyébként ennek a két selectornak a kombinációjával tök jó dolgokat.
Még egy utolsó kérdésem lenne
Találtam egy másik megoldást, amivel már kattintásra tudom lenyitni a tartalmi részt, ez sokkal használhatóbbnak tűnik. Kicsit átalakítgattam külsőre, de a JS-hez nem nyúltam. Tökéletesen működik még IE-n is.
Ilyen:
Ezt használd a mutat
Kipróbáltam, de nálam sajnos
Csak a scriptet írtam át erre, remélem más módosítás nem kellett hozzá, mert akkor rosszul csináltam.
A "mutat('szoveg3')" jellegű
Ami esetleg még alapvető, hogy használj doctype-ot, html, head, title, body tageket és hogy utf-8 bom nélkül mentsd a fájlt, illetve minden utf-8 kódolású legyen, aminél csak be lehet állítani. link
Szuper, így már működik.
A fent felsoroltakat használom is, annyi különbséggel, hogy a karakterkódolást "sima" utf-8-cal szoktam menteni és nem bom nélkül.
Egyelőre ennek nem tapasztaltam még hátrányát. Hol okozhat ez gondot?
Ha szerver oldali nyelvet
Notepad++ -szal szoktam
Ezt persze css-sel utólag orvosolhatnám, de rengeteg munka lenne vele, úgyhogy nem mostanában fogok nekiesni. :)
Nincs "automatikus távolságtartás"
Böngészők (többsége) ma már kezeli (úgy ahogy) BOM-mal is, de szabvány szerint el van fogadva a default byte order, ezért (és az inf3rno által írt header probléma miatt is) nem használunk weben Byte Order Marker-t.
Az, hogy ezt egyszer elrontottad, és eredményezett megjelenésben eltérést, korántsem jelenti azt, hogy ezt jó ötlet úgy hagyni. Addig javítsd, amíg nem üt vissza nagyobbat.
"automatikus távolságtartás": gyanítom, hogy a BOM miatt (ha valóban ez okozza) egyes böngészők másképp értelmezik a html-ben leírt DOM-ot. Erre nem szabad építened, mert bármikor változhat / "elromolhat", a jelenlegi helyzet / megjelenés valójában egy hiba eredménye.
Minden html element-hez hozzá rendel a böngésző egy default megjelenést, w3c szerint, valamint (amíg szabványon belül elfér) saját "böngészőgyártói design". Ezt pl chrome-ban úgy látod, mint "user agent stylesheet". Ezt tudod módosítani a te css-eddel.
Kiegészítés
Új téma
Nem baj, ha inf3rno megoldását használod, de lássuk egy egészként a te problémádat, így több commentből nem igazán lehet kiszedegetni.