2008-12-21 12 views
4

J'ai un menu de navigation fou que je dois coder. C'est un peu dur. S'il vous plaît voir la capture d'écran de la conception ici:CSS "see-through" fond - problème de menu de navigation fou

nav menu http://i41.tinypic.com/307xfo9.png

navigation menu screenshot

Comme vous pouvez le voir, l'arrière-plan de l'élément de menu « Home » est assez difficile! Je n'arrive pas à comprendre comment rendre son arrière-plan transparent, ce qui signifie qu'il traverse le fond sombre et montre le fond vert à motifs. Savez-vous comment faire cela en utilisant css?

Merci d'avance.

Répondre

2

Vous pouvez utiliser:

background: transparent; 
background: inherit; 

Mais, vous devez structurer votre code HTML afin que le Accueil, Journal, liens, etc. sont intégrés dans la boîte l'arrière-plan.


Pour les coins arrondis, check this out. Vous pouvez également utiliser des images avec une transparence en tant qu'arrière-plan.


@Gary [commentaire]: inherit saisit les premiers paramètres qu'il trouve en remontant la hiérarchie. Donc, si vous avez une couche intermédiaire, elle va choisir ses paramètres à la place.

Quelque chose que vous pourriez essayer alors est d'utiliser:

background-image: url('greencheckers'); /* outer */ 

background-color: black;    /* middle */ 

background-image: inherit;    /* link */ 

En théorie, il devrait chercher le premier réglage background-image, puis. Mais, je n'ai jamais utilisé cela, donc pas de garanties.

+0

Ou fond: transparent; ? – strager

+0

Merci pour votre aide. Je vais essayer "background: inherit" pour voir si cela fonctionne (avec une certaine restructuration comme vous l'avez suggéré). J'ai essayé beaucoup de façons avant, mais le mal de tête est de savoir comment mélanger l'arrière-plan des éléments de menu avec l'arrière-plan à motifs de façon transparente. Merci pour les conseils d'angle arrondis aussi! –

+0

@ strager: Bien sûr, le fond: transparent est la première chose qui me vient à l'esprit. Mais j'aimerais que ce soit aussi simple. Le fait est que le menu de navigation est enveloppé à l'intérieur d'un calque avec une couleur d'arrière-plan. Donc, en utilisant transparent ici ne révélera pas le fond à motifs verts en dessous. Dites-nous si la chose héritée a fonctionné. –

0

Une autre approche intéressante pour des effets de transparence (ou translucide) est de donner deux sections soit

1) de la même image d'arrière-plan, ou
2) des images de fond semblables, l'un d'eux modifiée par la couleur ou le flou ou

... et assurez-vous que leur background-position est la même. Ceci est démontré dans Eric Meyer's "Complex Spiral" demo. (Voici another version il a fait.)

Précision: ceci est dans la section "Edge" de Meyer pour une raison - il est pas compatible avec IE6. (Merci, Boris)

+0

Bien que vraiment cool, l'effet ne fonctionnera pas dans IE lt 7. Si cela vous convient, alors pas de problème :) –

+0

Vous avez raison, monsieur. Je vous remercie. –

+0

Gary n'a pas besoin d'appliquer des effets à l'image d'arrière-plan. Peut-être qu'il peut le faire fonctionner dans IE6 ainsi en utilisant le même fond avec * différent * (approprié) background-position? Le corps utiliserait 0,0; Accueil utiliserait 100, 120, journal 100, 200 et ainsi de suite. –

0

Vous pouvez émuler une position d'arrière-plan fixe qui n'est malheureusement pas prise en charge par IE6 (voir la réponse de nerdposeur) avec un positionnement "manuel" prudent en utilisant la position d'arrière-plan.Positionnez la grande image avec 0,0 offset. Utilisez la même image pour l'onglet sélectionné, mais en la décalant vers la gauche et vers le haut exactement par la position du coin supérieur gauche de l'onglet. Cela assurera la correspondance exacte des deux arrière-plans que vous voulez.

Vous semblez avoir un menu fixe, ce qui signifie que vous devez écrire avec soin les CSS de fond pour vos quatre éléments de menu, un par un. Bien sûr, si votre menu est dynamique, cette approche ne fonctionne pas. Voici une démo que je cuisinais rapidement en commençant par this page:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>CSS Tabbed Navigation</title> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <style type="text/css"> 
    body { 
     margin: 20px; 
     padding: 0px; 
     background: #CACCB4; 
     font: 16px arial, sans-serif; 
     background-image: url('http://www.graphicsarcade.com/backgrounds/strips/background_3.gif'); 
     } 

    pre {text-indent: 30px} 

    #tabmenu { 
     color: #000; 
     border-bottom: 2px solid black; 
     margin: 12px 0px 0px 0px; 
     padding: 0px; 
     z-index: 1; 
     padding-left: 10px } 

    #tabmenu li { 
     display: inline; 
     overflow: hidden; 
     list-style-type: none; } 

    #tabmenu a, a.active { 
     color: #DEDECF; 
     background: #898B5E; 
     font: bold 1em "Trebuchet MS", Arial, sans-serif; 
     border: 2px solid black; 
     padding: 2px 5px 0px 5px; 
     margin: 0px; 
     text-decoration: none; } 

    #tabmenu a.active { 
     background-image: url('http://www.graphicsarcade.com/backgrounds/strips/background_3.gif'); 
     background-position: -125px -18px; 
     border-bottom: 3px solid #ABAD85; } 

    #content {font: 0.9em/1.3em "bitstream vera sans", verdana, sans-serif; 
     text-align: justify; 
     background: #ABAD85; 
     padding: 20px; 
     border: 2px solid black; 
     border-top: none; 
     z-index: 2; } 

    #content a { 
     text-decoration: none; 
     color: #E8E9BE; } 

    #content a:hover { background: #898B5E; } 
    </style> 
</head> 

<body> 

<ul id="tabmenu"> 
    <li><a href="tab1.html">Enormous</a></li> 
    <li><a class="active" href="tab2.html">Flared</a></li> 
    <li><a href="tab3.html">Nostrils</a></li> 
</ul> 

<div id="content"> 
    <p>If one examines subpatriarchialist material theory, one is faced with a choice: either accept the presemioticist paradigm of reality or conclude that the task of the artist is deconstruction, given that reality is equal to art. It could be said that the subject is contextualised into a Batailleist 'powerful communication' that includes language as a totality. Marx uses the term 'precapitalist semiotic theory' to denote the bridge between narrativity and society.</p> 
    <p>Any number of desituationisms concerning Sartreist absurdity may be discovered. In a sense, the textual paradigm of consensus states that reality has significance. Baudrillard uses the term 'surrealism' to denote the absurdity, and subsequent rubicon, of substructuralist class. It could be said that la Tournier[4] holds that the works of Pynchon are modernistic. The premise of the textual paradigm of consensus states that the significance of the observer is social comment. However, in Gravity's Rainbow, Pynchon examines textual materialism; in The Crying of Lot 49 he denies subcultural discourse.</p> 
    <br /> 
</div> 

</body> 
</html> 
+0

Aime comment votre "rapide" exemple prend même soin des paramètres de police etc: P A travaillé dans Opera, mais IE vis (surprise!). –

1

Une façon vous pourriez le faire est l'approche contraire que vous auriez normalement prendre. Appliquez un arrière-plan noir aux autres éléments, en laissant un espace où se trouve l'onglet en surbrillance. Une sorte de portes coulissantes inversées.

Créez deux images noires très longues: une pour la droite qui a un angle arrondi sur sa gauche, et une pour la gauche avec le coin à droite et positionnez-les de chaque côté de l'élément actuel. Malheureusement, je ne pense pas que CSS puisse le faire, mais il semble que vous utilisiez déjà JS. Je ne suis pas sûr que ce soit faisable, c'est juste au-dessus de ma tête, mais ce pourrait être une approche intéressante.

0

Je suggère faire un 30 x 1 (hauteur x largeur) l'image, le remplir noir et définir l'opacité sur elle à environ 35% ... Enregistrer sous .png (non compatible avec les navigateurs IE7) <

Ajouter des cette image à votre classe CSS d'arrière-plan de menu comme suit:

#MainMenu { 
    display: block; 
    height: 30px; 
    background; transparent url("menuBG.png") repeat-x; 
} 

Je sais que cela fonctionne parce qu'il est ce que je l'ai fait pour mon site. Le site est pas terminé, mais vous pouvez vérifier une capture d'écran:

http://www.logansarchive.za.net/preview.jpg

HTH