2009-08-10 6 views
0

Ist es möglich, eine Drop-Down-Typ Menü-Navigation ohne Javascript zu machen mit und um ein Bild zu zeigen, jedes Einzelteil neben?Kann ein CSS-Menü dies tun?

Auch würde Ich mag diese Arbeit mit einem Tisch machen, so dass, wenn Sie über eine Tabellenzelle bewegen, wäre es eine Liste von Links mit einem Symbol neben jedem einer Dropdown-Menü. Ich bin mir nicht sicher, ob dies auch ohne Javascript möglich ist.

Es ist etwas Ähnliches, was ich versuche, auf photobucket-Menü zu tun alt text http://img2.pict.com/f9/72/7f/1437912/0/640/screenshot2b9.png

+0

Warum möchten Sie kein Javascript verwenden? – rahul

+0

Viele Leute fragen, warum kein Javascript, ich habe nichts dagegen javascript verwenden Ich will es nur sehr leicht sein, da meine Seiten werden täglich schwerer mit Javascript Ergänzungen – JasonDavis

Antwort

4

Ist es möglich? Ja

empfiehlt es sich? Keine

Sie haben noch IE6 zu unterstützen und unter dem unterstützt nur den :hover Pseudo-Selektor auf <a>-Tags mit einem href Attribute. Bei jedem anderen Tag wird der Pseudo-Selektor :hover ignoriert. Für jeden anderen Browser haben Sie diese Einschränkung nicht.

Durch die Verwendung des <a> Tag, Sie geben sich selbst die folgenden Einschränkungen:

  • keine Unter <a> Tags, was bedeutet, dass das Menü wird grundsätzlich zu einem Ort führen.
  • keine Block-Level-Elemente innerhalb des <a>-Tag (die sich leicht um Elemente unter Verwendung display: block auf Inline gearbeitet werden kann. Dies bedeutet, dass keine <div> keine <table> noch eine andere block level elements.

In einer Welt ohne Internet Explorer 6 und unten, würde dies eher trivial zu tun. Aber wenn man bedenkt, dass ab Juli 2009 there is still 27.21% of the web using IE6, könnte man sie nicht aus schreiben wollen.

+0

Daten können irreführend sein. Wenn alle aufhören, IE6 zu unterstützen, werden die Leute vielleicht ein Upgrade durchführen: www.browsesad.com – Jason

+0

Versuchen Sie, dies Unternehmen zu sagen, die weltweit Intranets verwenden, die nur IE6 unterstützen. Es wird einfach nicht passieren. Solange Unterstützung IE6 eine monetäre Rendite hat (was es hat, verwendet 1/4 der Internet-Bevölkerung IE6), wird es nicht verschwinden. –

+0

Kampagnen wie Browse Sad verstehen die Mentalität der Unternehmenskultur nicht. Ich sage dir die goldene Regel: Veränderung ist teuer. Und im Gegensatz zu dem, was diese Kampagnen Sie glauben machen möchten, hat der Verbraucher am Ende einen vernachlässigbaren Einfluss auf das IT-Ökosystem. –

0

Sie ein Menü entwerfen können nur HTML und CSS. Aber zu behandeln alle Ereignisse [Tastatur und Maus] Sie haben JavaScript zu verwenden.

+2

Nicht, wenn Option einfach ein Link ist – Bostone

+0

Ich glaube nicht, Sie kann Keryboard-Ereignisse [Pfeil nach oben und unten] für ein Drop-Down-ähnliches Menü nur mit CSS verarbeiten. Entschuldigung, wenn ich falsch liege. – rahul

+0

Es ist besser, einen Grund für die Abstimmung unten zu geben. – rahul

0

natürlich können Sie das. Listen nichts mehr als <li> Tags. Innerhalb eines <li> Tag, das Sie Kann was auch immer y setzen ou wollen:

<ul> 
    <li> 
     <img src="someimage.jpg" alt="alttext" /> 
     <p><a href="yourlink.html">Your link</a></p> 
    </li> 
</ul> 

und dann w/CSS

EDIT ah Ihre Menü-Effekt machen, ich sehe Sie nur Tabellen verwenden möchten. hätte besser nachlesen sollen. Wenn Sie nicht JavaScript (warum, ich weiß nicht) verwenden möchten, nein, nicht w/CSS und HTML, zumindest nicht Cross-Browser. Sie können es mit der Pseudoklasse :hover tun, die für jedes Element in modernen Browsern funktioniert, aber < IE6 wird nicht wissen, was damit zu tun ist. Sie sollten jedoch aufhören, IE6 sowieso zu unterstützen, also vielleicht bist du ok :)

+0

schließlich kann ich von Tabellen wegwechseln, derzeit verwendet mein Header-Bereich einige Tabellenzellen, und nur ein paar von ihnen müssen eine Dropdown-Liste haben, deshalb habe ich Tabellen gesagt, es wäre leicht für mich hinzuzufügen, Was ich tun sollte, ist jemanden zu finden, der mir hilft, meinen Header in CSS zu konvertieren – JasonDavis

1

Nun, ja. Wenn Sie sich die Quelle für die Seite ansehen, sehen Sie eine <ul>, die es funktioniert. Sie verwenden sicherlich JS - ich habe JS in Firefox deaktiviert und dann die Seite neu geladen, zu diesem Zeitpunkt funktionierte das Menü nicht mehr - aber ich bin nicht sicher, wie wichtig das für das Menü selbst ist.

Sie können ein Bild neben jedem Menüelement anzeigen, indem Sie entweder ein <img />-Tag im (x) html verwenden oder ein Hintergrundbild im CSS verwenden.

CSS-basierten Ansatz:

<style type="text/css" media="all"> 
ul li {display: inline; position: relative;} 

ul li ul {display: none; } 

ul li:hover ul {display: block; position: absolute; top: 0; left: 0; } 

ul li ul li {padding-left: 10px; background: #fff url(path-to-image.png) top left no-repeat; } 
</style> 

<ul> 
<li>First item</li> 
<li>Second item 
    <ul> 
     <li>Sub-level one</li> 
     <li>Sub-level two</li> 
    </ul></li> 
<li>Third item</li> 
</ul> 

(x) HTML-basierte Ansatz:

<style>... /* will still need to be styled according to your theme */ ...</style> 

<ul> 
<li><img src="menu-icon-1.png" alt="menu-icon" />First item</li> 
<li><img src="menu-icon-2.png" alt="menu-icon" />Second item 
    <ul> 
     <li><img src="menu-icon-2-1.png" alt="menu-icon" />Sub-level one</li> 
     <li><img src="menu-icon-2-2.png" alt="menu-icon" />Sub-level two</li> 
    </ul></li> 
<li><img src="menu-icon-3.png" alt="menu-icon" />Third item</li> 
</ul> 

Wenn Sie die Menüpunkte wollen eindeutige Symbole haben/Bilder mit ihnen verbunden sind, dann würden Sie müssen spezifische id s in der (x) html verwenden, so ist es nicht besonders weniger oder mehr bequem, einen Ansatz zugunsten des anderen zu verwenden.

0

In Bezug auf die Unterstützung für IE6: Werfen Sie einen Blick auf ie7-js es hilft bei vielen Problemen mit der Abwärtskompatibilität, einschließlich der Verwendung von: Hover auf andere Elemente als a. Ich habe bestätigt, dass es mit der CSS-Lösung von reibowl funktioniert.

EDIT: Das gute an diesem Skript ist, dass es nur von IE5.5 und IE6 (und IE7, wenn Sie die neueste Version verwenden) verwendet wird. Die neueste Version macht IE7 beim Rendern einer Seite mehr wie IE8, was es einfacher macht, einfaches und gutes HTML/CSS zu schreiben.