Ga naar inhoud

[JavaScript/CSS] 1 box voor meerdere menu's


anoniem

Aanbevolen berichten

Mensen, [b:25c467b5d3]Het idee:[/b:25c467b5d3] Ik heb een pagina met daarop 5 menu-items, wanneer ik op zo'n menu-item klik opent er een scherm (in dezelfde pagina over de navigatie) waarin dan de tekst/plaatjes over het desbetreffende onderwerp moet komen te staan. [b:25c467b5d3]De uitvoering:[/b:25c467b5d3][code:1:25c467b5d3]// In de link: onclick="document.getElementById('content').style.display='block'" // Het scherm: <div id="content"> <a href="javascript:void(null)" onclick="document.getElementById('content').style.display = 'none'">Content scherm sluiten</a> </div> // De css code: div#content { position: absolute; border: 1px solid #000; top: 78px; left: 50%; margin-left: -400px; width: 800px; height: 350px; background-color: #fff; filter: alpha(opacity=85); display: none; }[/code:1:25c467b5d3] [b:25c467b5d3]Het probleem:[/b:25c467b5d3] Ik krijg het niet voor elkaar om per link een waarde mee te geven (zodat het scherm 'weet' welke tekst/plaatjes erin moeten komen) zonder daarvoor 5x een div scherm aan te maken met dezelfde css code. [b:25c467b5d3]De bedoeling:[/b:25c467b5d3] Ik wil een waarde meegeven naar de <div> toe ([i:25c467b5d3]bijv. menu="1"[/i:25c467b5d3]) om op die manier de tekst uit de database te halen o.i.d. [b:25c467b5d3]Het voorbeeld:[/b:25c467b5d3] [code:1:25c467b5d3]<div id="content"> <?php if(menu == '1') { print "hallo"; } ?> <a href="javascript:void(null)" onclick="document.getElementById('content').style.display = 'none'">Content scherm sluiten</a></div>[/code:1:25c467b5d3] iemand die me hier ff mee kan helpen ?
Link naar reactie
1. Gebruik naast de foute filer: alpha(opacity); ook de meer standard compliant -moz-opacity, -khtml-opacity en opacity. Te gebruiken als opacity:.85 bijvoorbeeld. Dit wordt namelijk de CSS3 property en niet iets raars van IE windows (-khtml- is voor Safari, -moz- is voor Mozilla, zonder prefix is W3C) 2. Zet nooit in je CSS display:none als het met JavaScript weer zichtbaar gemaakt moet worden. 3. Gebruik links zoals: <a href="#iets" onclick="blaat('iets');"/> 4. Zet binnen div#content 5 divs. Schakel de display uit met JS. bijvoorbeeld met de volgende onload functie: [code:1:33843d1983]function hideDivs(){ document.getElementById('content').style.display = "none"; document.getElementById('content').getElementById('item').style.display = "none"; /* etc. */ }[/code:1:33843d1983] 5. Gebruik zo'n functie voor de links: [code:1:33843d1983]function ShowDiv(div-id){ document.getElementById('content').style.display = "block"; document.getElementById('content').getElementById(div-id).style.display = "block"; }[/code:1:33843d1983] 6. Javascript netjes extern. De links laten verwijzen naar de div id's, zodat het ook bruikbaar is zonder JavaScript.
Link naar reactie
[quote:6a35220ce5="xanuex"]zeer nuttige info, heel erg bedankt.[/quote:6a35220ce5]Ik had een goede bui :P[quote:6a35220ce5="xanuex"]Alleen punt 4 kom ik niet helemaal uit, hoe zet ik binnen die div#content 5 div's ?[/quote:6a35220ce5][code:1:6a35220ce5]<div id="content"> <!-- div#content zorgt voor positionerning, overige divs zorgen voor inhoud --> <div id="home">Home</div> <div id="onderwerp-2">Onderwerp 2</div> <div id="onderwerp-3">Onderwerp 3</div> <div id="onderwerp-4">Onderwerp 4</div> <div id="contact">Contact</div> </div>[/code:1:6a35220ce5]
Link naar reactie
[quote:eb5c1a2885]Ik had een goede bui :P [/quote:eb5c1a2885] altijd gunstig :lol: Er zit een klein foutje in deze functie [code:1:eb5c1a2885]function ShowDiv(div-id){ <-- document.getElementById('content').style.display = "block"; document.getElementById('content').getElementById(div-id).style.display = "block"; }[/code:1:eb5c1a2885] hij heeft aan dat hij een ')' wil hebben op de function regel. wanneer ik div-id weg haal werkt het wel maar die heb je wel nodig als variabele zijnde toch?
Link naar reactie
[code:1:9bc39d989d]function showDiv(identifier){ document.getElementById('content').style.display = "block"; document.getElementById('content').getElementById(identifier).style.display = "block"; } function hideDivs() { document.getElementById('content').style.display = "none"; document.getElementById('content').getElementById('biografie').style.display = "none"; document.getElementById('content').getElementById('schoolwerk').style.display = "none"; document.getElementById('content').getElementById('links').style.display = "none"; document.getElementById('content').getElementById('privewerk').style.display = "none"; document.getElementById('content').getElementById('contact').style.display = "none"; } window.onload = function(){ hideDivs(); }[/code:1:9bc39d989d]Opslaan als functions.js en zo er naartoe linken:[code:1:9bc39d989d]<script type="text/javascript" src="functions.js"></script>[/code:1:9bc39d989d]Die div sluiten moet natuurlijk binnen elke afzonderlijke div. div#content zorgt alleen voor het positioneren. showDiv roep je ongeveer zo aan:[code:1:9bc39d989d]<a href="#contact" onclick="showDiv('contact');"/>[/code:1:9bc39d989d]k? Die tabel is natuurlijk gruwelijk slecht gedaan en alles gaat zo traag als de pest. Gebruik liever zoiets: http://www.pixy.cz/blogg/clanky/cssnopreloadrollovers/ en een lijstje samen met wat CSS (position:absolute; op de li elementen). Veel simpeler lijkt me.
Link naar reactie
Die tabel is natuurlijk gruwelijk slecht gedaan en alles gaat zo traag als de pest lol :lol: Je website was ik vanmiddag ook al tegengekomen, daar ga ik zeker wat mee doen, dat zal wel lukken. Heb je nog een ongelovelijk goed idee om het gruwelijke tabel probleem op te lossen ??? ;) Ik was al bezig met een preload om de zooi wat 'sneller' op het scherm te laten komen. wat het script betreft ontzettend bedankt, dit had ik niet zelf zo snel uit kunnen vinden. Krijg op dit moment alleen nog aangegeven dat er een fout in de pagina zit, alleen word er niet vermeld waar (error on page), ik vermoed dat het bij het aanroepen van de linkjes is (onclick), want dat is hetgeen wat niet werkt.
Link naar reactie
[quote:cdd857497d="xanuex"]Heb je nog een ongelovelijk goed idee om het gruwelijke tabel probleem op te lossen ??? ;)[/quote:cdd857497d][code:1:cdd857497d]<ul> <li/> <li/> <li/> <!-- enz. --> </ul>[/code:1:cdd857497d]Binnen de 'li' elenten de links, positioneren, wat achtergrond plaatjes, eventueel een paar <span/>'tjes en klaar. Jij roept aan: "ShowDiv", de functie is "showDiv" (die functienaam wordt altijd zo gebruikt in JS, dus eerst lowercase en dan bij de twee uppercase, dus je kunt het best je pagina aanpassen. Even voor je directory structuur. CSS != Scripts e.d.
Link naar reactie
[quote:f0169f8057]Binnen de 'li' elenten de links, positioneren, wat achtergrond plaatjes, eventueel een paar <span/>'tjes en klaar. [/quote:f0169f8057] gaan we ook is mee aan de slag, kijken of dat lukt [quote:f0169f8057]Even voor je directory structuur. CSS != Scripts e.d.[/quote:f0169f8057] jij let ook overal op he :lol: heb hem bij stylesheets gezet zou je nog een laatste blik kunnen werpen, daarna moet ik er zelf maar aan geloven, genoeg hulp gehad dacht ik zelf :P ik heb die showDiv veranderd, maar heb nog steeds een onbekende error die ik niet kan achterhalen. Wanneer het scherm tevoorschijn komt komen ook alle divs binnen de content op het scherm terwijl het juist de bedoeling is dat ze per menu-item getoont worden.
Link naar reactie
Ten eerste kan je JavaScript het beste debuggen met Mozilla, die heeft een uitgebreide JavaScript Console met duidelijke foutmeldingen en bijbehorende regelnummers. Wat betreft je CSS:[code:1:00c07d031f]div#biografie, div#schoolwerk, div#links, div#privewerk, div#contact { position: absolute; border: 1px solid #000; top: 78px; left: 50%; margin-left: -400px; width: 800px; height: 350px; background-color: #fff; filter: alpha(opacity=85); opacity:.85; -moz-opacity:.85; -khtml-opacity:.85; }[/code:1:00c07d031f] - Bas
Link naar reactie
[quote:6e7fedb848="termin8or"]1. Gebruik naast de foute filer: alpha(opacity); ook de meer standard compliant -moz-opacity, -khtml-opacity en opacity. Te gebruiken als opacity:.85 bijvoorbeeld. Dit wordt namelijk de CSS3 property en niet iets raars van IE windows (-khtml- is voor Safari, -moz- is voor Mozilla, zonder prefix is W3C) [/quote:6e7fedb848] Hoezo "meer standards complaint"? -moz-bla of -khtml-bla is net zo min standards compliant als filter:alpha(). En daardoor net zo fout, imho. Dat het w3c gekozen heeft voor de opacity variant voor hun css3 specs staat daar natuurlijk los van. En laten we nu overigens niet doen alsof alles wat MS verzint per definitie iets is voor het rariteitenkabinet, er zijn ook genoeg voorstellen van hen in de drafts van het w3c terechtgekomen.
Link naar reactie
Fout. Aangezien het nog geen recommendation is moet er een prefix gebruikt worden aangezien de specificatie nog gewijzigd kan worden. Dit staat ergens vastgelegd. MS maakt er zelf ook gebruik van in Office. MS heeft in dit geval eigen verzonnen properties 'uitgevonden' zonder prefix maar gewoon direct de property 'filter' waardoor deze eigenlijk onbruikbaar wordt voor het gebruik in specificaties mochten die 'filter' nodig hebben voor iets (anders). (Voorbeeld: IE gebruikt sinds IE5.5 geloof ik overflow-x, vervolgens kan het W3C hier bijna niks meer aan veranderen, omdat het al zo'n lange tijd bestaat zonder prefix: [url]http://www.w3.org/TR/2002/WD-css3-ui-20020802/#overflow-x[/url])
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...