Partage
  • Partager sur Facebook
  • Partager sur Twitter

blem css entre ie et firefox

float ok avec firefox et pas avec ie

    25 juin 2006 à 21:47:58

    Bonjour a tous
    mon problème ces qu'avec ie sa decale mon menu à droite de plus ou moin 15px comparer à Firefox, si je retir le float:left; du css ces ok dans ie mais plus du tout avec firefox pour info je mets mon code

    div#nav{float:left;background-color:#8EF3C0;margin-left:15px;border:1px solid #AAA;margin-bottom:10px;/*sans le float ces ok pour ie*/
    font:0.8em Verdana;width:80%}
    div#nav ul {margin:0;padding:0;background:white;border:1px solid #CCC;border-width:0 1px; font-size:14px}
    div#nav li{position:relative;float:left;width:12em;list-style:none;margin:0;line-height:1em}
    div#nav li:hover{background-color:#EBB;}
    div#nav li.submenu {background:url(dropmenu.gif) 95% 50% no-repeat}
    div#nav li.submenu:hover{background-color:#EDD}
    div#nav li a{display:block;padding:0.25em 0 0.25em 0.5em;text-decoration:none;width:6.5em}
    div#nav>ul a{width:auto}
    div#nav ul ul {position:absolute;width:12em;display:none}
    div#nav ul ul li{border-bottom:1px solid #CCC;}
    div#nav li.submenu li.submenu:hover {background-color: #blue}
    div#nav li.submenu li.submenu {background-image:url(submenu.gif)}
    div#nav ul.level1 li.submenu:hover ul.level2,
    div#nav ul.level2 li.submenu:hover ul.level3{display:block}
    div#nav ul.level2{top:1.5em;left: -1px;}
    div#nav ul.level3{top:-1px;left:12em;border-top:1px solid #CCC}


    <div id="nav">

    <ul class="level1">
    <li><a href="#">Home</a></li>
    <li class="submenu"><a href="/Services/">Services</a>
     <ul class="level2">
      <li><a href="#">Strategy</a></li>
      <li><a href="#">Optimization</a></li>
      <li><a href="#">Guidance</a></li>
      <li><a href="#">Training</a></li>

     </ul>

     <li><a href="#">Home</a></li>
    <li class="submenu"><a href="/Services/">Services</a>
     <ul class="level2">
      <li><a href="#">Strategy</a></li>
      <li><a href="#">Optimization</a></li>
      <li><a href="#">Guidance</a></li>
      <li><a href="#">Training</a></li>

     </ul>
     </li>

    <li class="submenu"><a href="#">Publications</a>
     <ul class="level2">
       <li><a href="#">Articles</a></li>
       <li class="submenu"><a href="#">Tutorials</a>
        <ul class="level3">

          <li><a href="#">HTML</a></li>
          <li><a href="#">CSS</a>
          <li><a href="#">SVG</a>
          <li><a href="#">XML</a>
        </ul>
        </li>
        <li><a href="#">White Papers</a></li>

        <li><a href="#">Commantary</a></li>
        </ul>
       </li>
     <li><a href="#">Events</a></li>
     </ul>

    </div>


    également pour info je mets le javascript pour ie

    var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,
    currentSheet, doc = window.document, hoverEvents = [], activators = {
            onhover:{on:'onmouseover', off:'onmouseout'},
            onactive:{on:'onmousedown', off:'onmouseup'}
    }

    function parseStylesheets() {
            if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
            window.attachEvent('onunload', unhookHoverEvents);
            var sheets = doc.styleSheets, l = sheets.length;
            for(var i=0; i<l; i++)
                    parseStylesheet(sheets[i]);
    }
            function parseStylesheet(sheet) {
                    if(sheet.imports) {
                            try {
                                    var imports = sheet.imports, l = imports.length;
                                    for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
                            } catch(securityException){}
                    }

                    try {
                            var rules = (currentSheet = sheet).rules, l = rules.length;
                            for(var j=0; j<l; j++) parseCSSRule(rules[j]);
                    } catch(securityException){}
            }

            function parseCSSRule(rule) {
                    var select = rule.selectorText, style = rule.style.cssText;
                    if(!csshoverReg.test(select) || !style) return;

                    var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
                    var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
                    var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
                    var affected = select.replace(/:(hover|active).*$/, '');
                    var elements = getElementsBySelect(affected);
                    if(elements.length == 0) return;

                    currentSheet.addRule(newSelect, style);
                    for(var i=0; i<elements.length; i++)
                            new HoverElement(elements[i], className, activators[pseudo]);
            }

    function HoverElement(node, className, events) {
            if(!node.hovers) node.hovers = {};
            if(node.hovers[className]) return;
            node.hovers[className] = true;
            hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
            hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
    }
            function hookHoverEvent(node, type, handler) {
                    node.attachEvent(type, handler);
                    hoverEvents[hoverEvents.length] = {
                            node:node, type:type, handler:handler
                    };
            }

            function unhookHoverEvents() {
                    for(var e,i=0; i<hoverEvents.length; i++) {
                            e = hoverEvents[i];
                            e.node.detachEvent(e.type, e.handler);
                    }
            }

    function getElementsBySelect(rule) {
            var parts, nodes = [doc];
            parts = rule.split(' ');
            for(var i=0; i<parts.length; i++) {
                    nodes = getSelectedNodes(parts[i], nodes);
            }       return nodes;
    }
            function getSelectedNodes(select, elements) {
                    var result, node, nodes = [];
                    var identify = (/\#([a-z0-9_-]+)/i).exec(select);
                    if(identify) {
                            var element = doc.getElementById(identify[1]);
                            return element? [element]:nodes;
                    }
                   
                    var classname = (/\.([a-z0-9_-]+)/i).exec(select);
                    var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
                    var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
                    for(var i=0; i<elements.length; i++) {
                            result = tagName? elements[i].all.tags(tagName):elements[i].all;
                            for(var j=0; j<result.length; j++) {
                                    node = result[j];
                                    if(classReg && !classReg.test(node.className)) continue;
                                    nodes[nodes.length] = node;
                            }
                    }       
                   
                    return nodes;
            }
    </script>


    on pourais pas sortir une loi pour interdir IE :-°
    en tout cas merci d'avance pour les infos :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      26 juin 2006 à 4:31:10

      Je ne critique pas, et je voudrais bien t'aider, mais franchement ton code CSS est vraiment illisible.

      Autant le reste, ca peut encore aller , et encore. Clarifie le, re-post le, et tu auras plus de chances d'etre aidé.
      • Partager sur Facebook
      • Partager sur Twitter

      blem css entre ie et firefox

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown