Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    5

    problemi con css e browser

    ciao a tutti.
    ho necessità di creare dei menu a tendina, che si aprano al passaggio del mouse sopra ad un'immagine mappata in più punti. L'immagine è orizzontale e contiene, giussto per farvi capire, le voci home, chi siamo, dove siamo, ...
    passando sopra ad ognuna di queste voci vorrei far aprire il menu a tendina con le relative sottovoci.
    questo è il codice:

    <style type="text/css">

    #dropmenudiv{
    position:absolute;
    margin-left:400px;
    margin-top:50px;
    border:1px solid black;
    border-bottom-width: 0;
    font:normal 12px Verdana;
    line-height:18px;
    z-index:100;
    }

    #dropmenudiv a{
    width: 100%;
    display: block;
    text-indent: 3px;
    border-bottom: 1px solid black;
    padding: 1px 0;
    text-decoration: none;
    font-weight: bold;
    }

    #dropmenudiv a:hover{ /*hover background color*/
    background-color: yellow;
    }

    </style>

    <script type="text/javascript">

    //Contents for menu 1
    var menu1=new Array()
    menu1[0]='Html.it'
    menu1[1]='Freephp'
    menu1[2]='Forum'

    //Contents for menu 2, and so on
    var menu2=new Array()
    menu2[0]='Articoli html'
    menu2[1]='Script php'
    menu2[2]='Tutorial'

    var menuwidth='165px' //default menu width
    var menubgcolor='lightyellow' //menu bgcolor
    var disappeardelay=250 //menu disappear speed onMouseout (in miliseconds)
    var hidemenu_onclick="yes" //hide menu when user clicks within menu?

    /////No further editting needed

    var ie4=document.all
    var ns6=document.getElementById&&!document.all

    if (ie4||ns6)
    document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';backg round-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')

    function getposOffset(what, offsettype){
    var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
    var parentEl=what.offsetParent;
    while (parentEl!=null){
    totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
    parentEl=parentEl.offsetParent;
    }
    return totaloffset;
    }

    function showhide(obj, e, visible, hidden, menuwidth){
    if (ie4||ns6)
    dropmenuobj.style.left=dropmenuobj.style.top=-500
    if (menuwidth!=""){
    dropmenuobj.widthobj=dropmenuobj.style
    dropmenuobj.widthobj.width=menuwidth
    }
    if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
    obj.visibility=visible
    else if (e.type=="click")
    obj.visibility=hidden
    }

    function iecompattest(){
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
    }

    function clearbrowseredge(obj, whichedge){
    var edgeoffset=0
    if (whichedge=="rightedge"){
    var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWid th-15 : window.pageXOffset+window.innerWidth-15
    dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
    if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
    edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
    }
    else{
    var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
    var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeig ht-15 : window.pageYOffset+window.innerHeight-18
    dropmenuobj.contentmeasure=dropmenuobj.offsetHeigh t
    if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
    edgeoffset=dropmenuobj.contentmeasure+obj.offsetHe ight
    if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
    edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
    }
    }
    return edgeoffset
    }

    function populatemenu(what){
    if (ie4||ns6)
    dropmenuobj.innerHTML=what.join("")
    }

    function dropdownmenu(obj, e, menucontents, menuwidth){
    if (window.event) event.cancelBubble=true
    else if (e.stopPropagation) e.stopPropagation()
    clearhidemenu()
    dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv
    populatemenu(menucontents)

    if (ie4||ns6){
    showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
    dropmenuobj.x=getposOffset(obj, "left")
    dropmenuobj.y=getposOffset(obj, "top")
    dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
    dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
    }

    return clickreturnvalue()
    }

    function clickreturnvalue(){
    if (ie4||ns6) return false
    else return true
    }

    function contains_ns6(a, b) {
    while (b.parentNode)
    if ((b = b.parentNode) == a)
    return true;
    return false;
    }

    function dynamichide(e){
    if (ie4&&!dropmenuobj.contains(e.toElement))
    delayhidemenu()
    else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
    delayhidemenu()
    }

    function hidemenu(e){
    if (typeof dropmenuobj!="undefined"){
    if (ie4||ns6)
    dropmenuobj.style.visibility="hidden"
    }
    }

    function delayhidemenu(){
    if (ie4||ns6)
    delayhide=setTimeout("hidemenu()",disappeardelay)
    }

    function clearhidemenu(){
    if (typeof delayhide!="undefined")
    clearTimeout(delayhide)
    }

    if (hidemenu_onclick=="yes")
    document.onclick=hidemenu

    </script>



    e questo è il punto in cui lo richiamo:


    <div align="center" style="border:1px solid #f00;">

    <a href="http://www.html.it">
    <map name="FPMap0">
    <area href="#" shape="rect" coords="54, 44, 174, 67" onClick="return clickreturnvalue()" onMouseover="dropdownmenu(this, event, menu1, '150px')" onMouseout="delayhidemenu()">
    <area href="#" shape="rect" coords="252, 38, 382, 65" onMouseover="return dropdownmenu(this, event, menu2, '160px')" onMouseout="delayhidemenu()">
    </map>
    [img]file:///C:/Documents%20and%20Settings/guarnieri/Desktop/prova/esempio1/prova.jpg[/img]</a>

    </div>


    il tutto funziona correttamente con Internet explorer 8 ma non con firefox e safari...
    Penso prorpio che si tratti di un problema di css ma non so dove andare a toccare!
    Qualcuno sa darmi un aiuto?
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    5

    nessuno?

    nessuno mi aiuta?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Menu a tendina ce ne sono molti gia` pronti: ti basta andare nei siti che li raccolgono. Tra i "link utili" ce ne sono alcuni (a me piacciono i menu di CSSplay).

    Tieni presente che usare le immagini come partenza puo` impedire la navigazione ad un certo numero di persone che non caricano le immagini (magari per problemi di linea), o che non vedono le immagini (accessibilita`).
    Quindi non si fanno i menu con solo immagini.
    Se il tuo problema e` dovuto all'estetica, ci sono sistemi per sostituire le immagini quando vengono caricate, ma il testo viene sostituito o coperto, ma c'e` e viene usato in tutti quei casi in cui e` necessario.


    Per finire una nota sull'uso del forum: postare un codice cosi` confuso e cosi` lungo ti "taglia fuori" da numerosi utenti che potrebbero aiutarti. Io stesso non ho neppure provato ad interpretarlo. Il forum ha i bottoni appositi per inserire il codice (ti basta usare il bottone # sopra l'area per il testo), con cui viene anche preservata la formattazione.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    5
    Originariamente inviato da Mich_
    ...
    Se il tuo problema e` dovuto all'estetica, ci sono sistemi per sostituire le immagini quando vengono caricate, ma il testo viene sostituito o coperto, ma c'e` e viene usato in tutti quei casi in cui e` necessario.
    ...
    Innanzitutto grazie...
    Riguardo a quei sistemi di cui mi parlavi, sapresti darmi qualche dritta in più? oppure indicarmi dove posso trovare qualcosa al riguardo? scusa ma sono una principiante...
    Grazie ancora.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da hellpc
    Innanzitutto grazie...
    Riguardo a quei sistemi di cui mi parlavi, sapresti darmi qualche dritta in più? oppure indicarmi dove posso trovare qualcosa al riguardo? scusa ma sono una principiante...
    Grazie ancora.
    Credo che qualcosa trovi anche tra i menu (sarebbe un passo ulteriore gia` fatto).
    Comunque ecco due link in cui si parla (anche) di sostituzione immagini:
    I fondamenti del rollover grafico: immagini, sprite e text-replacement
    Menu grafici con rollover e preload via CSS

    PS: non ho trovato (tra i miei bookmark) una cosa specifica, ma sono sicuro di averla vista da qualche parte.
    Puoi provare una ricerca nel blog o tra gli articoli di HTML.it, oppure in rete (una volta che hai capito le parole chiave da usare)
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    5
    ok perfetto ti ringrazio!

  7. #7
    Forse il tuo problema deriva dalla linea

    codice:
    dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv
    che proverei a sostituire con

    codice:
    dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : document.all["dropmenudiv"]
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    5
    grazie per il consiglio... ho provato ma non è cambiato nulla...
    con IE lo vedo sempre perfetto, con Firefox invece si aprono correttamente i menu a tendina, ma spostati in un altro punto della pagina... uff...

    altre idee?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.