28172 sujets

CSS et mise en forme, CSS3

Bonjour,

Je voudrai faire comme sur ce site : http://www.ot-saumur.fr/
Il s'agit d'un menu déroulant dont chaque rubrique a sa propre couleur, je trouve ça sympa, j'ai cherché partout, j'ai rien trouvé de similaire.
Avez-vous une idée ?

Merci
Modifié par azaroth (04 Mar 2009 - 17:29)
Salut,

Tu n'as qu'à modifier la CSS et spécifier des couleurs pour chaque rubrique Smiley cligne .
Tu peux faire un chose du genre :
<ul id="menus">
	<li>menu1
		<ul id='menu1'>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>

			<li><a href="#">lien3</a></li>
			<li><a href="#">lien4</a></li>
			<li><a href="#">lien5</a></li>
		</ul>
	</li>
	<li>menu2
		<ul id='menu2'>
			<li><a href="#">lien1</a></li>

			<li><a href="#">lien2</a></li>
		</ul>
	</li>
	<li>menu3
		<ul id='menu3'>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
			<li><a href="#">lien3</a></li>

			<li><a href="#">lien4</a></li>
		</ul>
	</li>
	<li>menu4
		<ul id='menu4'>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
			<li><a href="#">lien3</a></li>

		</ul>
	</li>
</ul>


et en CSS:

#menu1 #menu1 li{
background-color:#151515;
.....etc
}

Tu fais ça pour chacun des menu1,2,3,4....
J'ai essayé ton idée, dans le html, ça pose pas de problème mais ton css est bizarre, pourquoi tu mets 2 fois #menu1 ?

#menu1,#menu1 li{

background-color:#151515;

.....etc

}



Excuse moi j'ai oublié la virgule ^^
Ca fonctionne toujours pas, y'aurai t-il des choses à virer dans le css qui entrerai en conflit avec tes modifs ?
On va y arriver, gardons espoir. Smiley ravi
J'ai essayé ça dans mon css :
#menus li
{
float: left;
margin: 0 2px;
height: 2.5em;
line-height: 2.5em;
color: #123456;
background-color: #;
}
#menus,#menu1 li
{
background-color:#938271;
}
#menus,#menu2 li
{
background-color:#172839;
}

Franchement, je sais plus quoi faire, j'ai essayé plein de façons différentes et quoi que je fasse, ça marche pas. Smiley decu
Modifié par azaroth (24 Feb 2009 - 14:47)
essaie ceci


<html>
<head>
<script langage="javascript">
<!--//--><![CDATA[//><!--

	sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {                            
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

//--><!]]>
</script>

<style type ="text/css">

#nav {  float: left;
	width: 450px;
	list-style-type: none;
	line-height: 2;
	padding: 0;
     }

#nav a { display: block;
	 width: 150px;
	 text-decoration: none;
 	 text-align: center;
       }

#nav li { float: left;
	  padding: 0;
	  width: 150px;
	}

#nav li ul { position: absolute;
	     left: -999em;
	     width: 150px;
	     font-weight: normal;
	     margin: 0;
	     list-style: none;
	     padding: 0;
           }

#nav li ul a { width: 150px; }


#nav li:hover ul, #nav li.sfhover ul { 
	left: auto;
}

#nav li.smenu1, #nav li.smenu1 ul { background-color: #339900;  }
#nav li.smenu1 a:hover, #nav li.smenu1 ul a:hover { background-color: #66cc00;  }

#nav li.smenu2, #nav li.smenu2 ul { background-color: #FF9900;  }
#nav li.smenu2 a:hover, #nav li.smenu2 ul a:hover { background-color: #ffcc66;  }


#nav li.smenu3, #nav li.smenu3 ul { background-color: #00cc99;  }
#nav li.smenu3 a:hover, #nav li.smenu3 ul a:hover { background-color: #00ff99;  }
				    

</style>


</head>
<body>

 <ul id="nav">

	<li class="smenu1"><a href="#">menu 1</a>
		 <ul>
			<li><a href="#">item 1.1</a></li>
			<li><a href="#">item 1.2</a></li>
			<li><a href="#">item 1.3</a></li>
		</ul>
	</li>

	<li class="smenu2"><a href="#">menu 2</a>
		<ul>
			<li><a href="#">item 2.1</a></li>
			<li><a href="#">item 2.2</a></li>
			<li><a href="#">item 2.3</a></li>
		</ul>
	</li>

	<li  class="smenu3"><a href="#">menu 3</a>
		<ul>
			<li><a href="#">item 3.1</a></li>
			<li><a href="#">item 3.2</a></li>
			<li><a href="#">item 3.3</a></li>
		</ul>
	</li>
  </ul>

</body>
</html>
[/i][/i]
Modifié par flattazor (27 Feb 2009 - 10:03)
Ca fonctionne nickel sous Firefox comme toujours mais pas du tout sous IE7. Le script que j'avais téléchargé fonctionnait très bien quelque soit le navigateur.
On avance mais c'est pas encore ça. Merci en tout cas de prendre du temps à régler mon problème.
salut,

chez moi il fonctionne trés bien sous ie7, firefox 3, ie6 tu as bien activer l javascript sous ie 7. ou tu as une barre d'information , il suffit d'autoriser l'active x
Chez moi, ça ne fonctionne pas et ce malgré l'activation du controle active-x sous IE7, j'ai également testé sur plusieurs autres pc et le résultat est le même.
Demain, je te ferai parvenir le code complet du code que j'avais trouvé, avec un peu de chance, il suffira de modifier 3 fois rien dessus.
Enfin bon, la nuit porte conseil comme on dit.
salut,

oui donne le code ça peut intéresser d'autres personnes, comme moi par exemple Smiley langue

puis tu as bien copier le code source que je t'ai donnée ci-dessus avec le script ?

parce-que là je ne comprends pas pourquoi ça fonctionne chez moi et pas chez toi !
Modifié par flattazor (27 Feb 2009 - 09:29)
salut quelque correction, je n'ai pas fais le css pour tout tes menus, je te laisse un peu travaillé ; pour les couleurs je te laisse libre choix. tu verras les modifs

pour le css

/**
 * Menu déroulant v.8
 * par Romain Berton
 * pour  www.alsacreations.com
 
 * le 27/10/2007
 */

/* Propriétés globales */

html
{
	font-family: Optima, "Trebuchet MS", Lucida, Arial, Geneva, Verdana, "Lucida Grande", Tahoma, Helvetica, sans-serif;
	font-size: 100%;
	background-color: white;
	color: #225;
}

body
{
	font-size: .85em;
	margin: 20px;
}

#menus
{
	position: relative;
	width: 990px;
	padding-left: 0;
	/* Laisser le margin-top sinon ça buggue sur Opera 9.23 */
	margin-left: 0;
	list-style-type: none;
	line-height: 2;
}

#menus a
{
	display: block;
	width: 10em; 
	height: 2.5em;
	text-decoration: none;
	text-indent: 1.1em;
}

#menus li
{
	float: left;
	margin: 0 2px;
	padding: 0;
}

#menus li ul
{
	width: 10em;
	padding-left: 0;
	margin-top: 0;
	margin-left: 0;
	list-style-type: none;
}

#menus ul li
{
	margin: 1px 0;
	filter: Alpha(opacity=90);
	-moz-opacity : 0.9;
	-khtml-opacity: 0.9;
	opacity: 0.9;
}


/*-- à reproduire pour chaque menu --*/
#menus li.menu1 a, #menus li.menu1 ul a
{
background-color: red;
color: white;
}

#menus li.menu1 a:hover, #menus li.menu1 ul a:hover
{
background-color: #FF8078;
color: white;
}

#menus li.menu2 a, #menus li.menu2 ul a
{
background-color: blue;
color: white
}

#menus li.menu2 a:hover, #menus li.menu2 ul a:hover
{
background-color: #718EFF;
color: white
}



/* Propriétés actives lorsque JS actif */

/*--- à faire pour chaque menu ---*/
#menus li.menu1 a.focusTitle
{
	color: #000;
	background-color: #FF8078;
}

#menus li.menu2 a.focusTitle
{
	color: #000;
	background-color: #718EFF;
}


/*--- rien toucher ci dessous --*/
#menus .Montre
{
	position: absolute;
}

#menus .Cache
{
	display: none;
}

.over /* Classe ajoutée sur la div qui suit le menu pour supprimer le margin-top lorsque JS est actif */
{
	margin: 0 20px;
}

/* Test de superposition */

div /* Margin-top nécessaire pour éviter la superposition avec les items du menu lorsque JS est inactif */
{
	padding: 1em 0;
	margin: 16em 20px 0;
	clear: both;
}

h1
{
	font-size: 1em;
	color: #12cea5;
}

h2
{
	font-size: 1em;
	color: #acde58;
	margin-bottom: 10px;
}


pour le html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!--
 Menu déroulant v.8
 par Romain Berton
 pour  www.alsacreations.com
 
 le 27/10/2007
-->

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    	<meta http-equiv="content-language" content="fr" />
		<title>Menu déroulant Alsacréations v.8 (horizontal/survol/transparent)</title>
		<link rel="stylesheet" media="screen, projection" type="text/css" href="styleMenu.css" title="styleMenu" />
		<script type="text/javascript" src="scriptMenu.js"></script>

	</head>
<body>

<h1>Menu déroulant Alsacréations v.8 (horizontal/survol/transparent)</h1>

<ul id="menus">
	<li class="menu1">Accueil
		<ul>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
			<li><a href="#">lien3</a></li>
			<li><a href="#">lien4</a></li>
			<li><a href="#">lien5</a></li>
		</ul>
	</li>
    
	<li class="menu2">Hébergement
		<ul>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
		</ul>
	</li>
    
	<li class="menu3">Patrimoine
		<ul>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
			<li><a href="#">lien3</a></li>
			<li><a href="#">lien4</a></li>
		</ul>
	</li>
    
	<li id="menu4">Evènements
		<ul>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
			<li><a href="#">lien3</a></li>
		</ul>
	</li>
    
    <li class="menu5">Vie pratique
		<ul>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
			<li><a href="#">lien3</a></li>
		</ul>
	</li>
    
    <li class="menu6">Loisirs / Sport
		<ul>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
			<li><a href="#">lien3</a></li>
		</ul>
	</li>
    
    <li class="menu7">Contacts
		<ul>
			<li><a href="#">lien1</a></li>
			<li><a href="#">lien2</a></li>
			<li><a href="#">lien3</a></li>
		</ul>
	</li>
</ul>

<div>
	<h2> </h2>
</div>

</body></html>
Là, ça fonctionne bien, c'est du bon boulot, merci à toi. Qu'est-ce que tu veux, on peut pas tout savoir faire dans la vie. Smiley biggrin

Juste une dernière question : et si je veux mettre une image en fonde chaque bouton, comment ça se passe ? Je parle pas des sous-menus, ils sont très bien comme ça.
C'est juste histoire de peaufiner.
Modifié par azaroth (27 Feb 2009 - 16:01)
pour une image à chaque menu.

background-image: url(chemindetonimage);
background-position: top ou bottom ou middle left ou center ou right;
ou background-position: avec les unités suivante px, em et % avec deux valeurs en chiffre indiquant le positionnement vertical et horizontal.

background-repeat: no-repeat; /*-evite la répetition de l'image -*/
" " : repeat-x; /*- repete l'image sur l'axe x soit horizontal -*/
" " : repeat-y; /*- repete l'image sur l'axe y soit vertical -*/

biensur il y aura le css à modifier si tu veux repercuter l'image que sur l'element parent.

le plus simple--

mets une image en background sur une div ou un tableau (cette image est composer de 7 images une par catégorie)
++

biensur il faut eviter la couleur sur l'élément parent et non pas sur l'element enfant donc css à modifier aussi
Modifié par flattazor (27 Feb 2009 - 20:18)
J'ai bien peur de ne pas tout saisir, c'est un peu abstrait, j'ai bien fais quelques tentatives mais mon image de fond se répète et ce malgré que j'ai mis un background-repeat: no-repeat;

Pour ce qui est du CSS, j'ai essayé ça :
a écrit :
#menus li.menu1 a, #menus li.menu1 ul a
{
background-image:url(boutons/accueil.png);
background-position: top;
background-repeat: no-repeat;
background-color: #e7300d; /*rouge*/
color: white;
}

#menus li.menu1 a:hover, #menus li.menu1 ul a:hover
{
background-color: #fb4514; /*rouge plus claire*/
color: white;
}


Pour ce qui est html, j'ai rien osé touché, ça ressemble donc à ça :
a écrit :
<ul id="menus">
<li class="menu1">Accueil
<ul>
<li><a href="#">lien1</a></li>
<li><a href="#">lien2</a></li>
<li><a href="#">lien3</a></li>
<li><a href="#">lien4</a></li>
<li><a href="#">lien5</a></li>
</ul>
</li>


Il ne s'agit que d'un exemple pour le premier bouton, je saurai adapter pour les autres.
J'ai refais des tas de tests mais j'arrive pas à faire ce que je veux, c'est dommage mais bon,, tant pis, je vais faire sans, c'est pas grave.
salut,

l'image doit se répeté sur tout le menu, il faut séparer

#menu li.menu1 a { background-image: url('boutons/accueil.png');
                   background-repeat: no-repeat 
                   background-position: top left;
                   color: white;
                 }

#menus li.menu1 ul a
{
background-color: red;
color: white;
}



sur le lien cidessous t'explique une methode, tu peut l'appliquer à ton css

http://www.alsacreations.com/tuto/lire/574-Creer-des-menus-simples-en-CSS.html
Modifié par flattazor (03 Mar 2009 - 20:57)
La solution finale :

a écrit :
#menus li.menu1 {
background-image: url(boutons/accueil.png);
background-repeat: no-repeat;
}

#menus li.menu1 ul a {
background-color: red;
color: white;
}

#menus li.menu1 ul a:hover{
background-color: blue;
color: white;
}


Et c'est sur ces quelques lignes de codes et mes sincères remerciements que je clôture ce topic. Smiley biggrin