28112 sujets

CSS et mise en forme, CSS3

Bonjour,

Je n'ai pas trouvé la section pour se présenter et comme je fais parti de l'administration d'un forum je sais qu'il est toujours bien vu de le faire lorsque l'on est nouveau et qu'on recherche un peu d'aide Smiley smile .

Je m'appelle Anthony, 21 ans, je suis Breton et je n'ai aucune connaissances ou qualifications dans le codage de site internet. Pour preuve je suis apprenti dans le domaine de l'agroalimentaire, enfin bref... Smiley baille .

Je bidouille et c'est vraiment le cas de le dire, ce qui touche au html et css (connaissances en js-php => 0). Quand je vois une structure, un menu, une page qui me plait je copie le code et je fais varier les valeurs de toutes les propriétés jusqu'à comprendre son fonctionnement et obtenir le résultat attendu. Mais comme je n'ai pas de bonnes bases c'est de temps en temps foireux pour ne pas dire souvent Smiley lol .
J'en suis aujourd'hui à mon troisième essais de projet de site. Le premier datant déjà d'au moins 5 ans. Mais ça c'est parce que je ne suis pas très efficace j'ai déjà passé deux semaines sur la création d'un livre d'or alors que je disposais des codes tout prêt Smiley sourire . Face à ces échecs, par manque de temps et d'efficacité je me suis résigner à abandonner la création d'un site entièrement codé par mes soins et cette fois çi je me suis lancé dans la création d'un blog. Bon là encore c'est pas gagné et c'est là que vous intervenez Smiley lol .

Je souhaite avoir un petit menu pour personnaliser mon blog. J'utilise le site "blogger". J'ai donc ajouté un gadget à l'emplacement voulu qui me permet d'intégrer entre autre du php et javascript.
J'ai donc trouvé un code de menu tout fait qui me convenait, du moins vis à vis de la structure. Seulement voilà lorsque que mon curseur arrive sur un sous menu je ne peux cliquer que sur le premier sous-onglet dès que je descend plus bas pour atteindre les suivants mon sous menu disparait.
Mais comme on dit un dessin vaut mieux qu'un long discours, alors voici le lien : http://lebloggercarnivore.blogspot.fr/#

Je suis sûr qu'il ne s'agit de presque rien mais je viens de passé déjà 2h à chercher comment faire sans aucun succès Smiley fache . C'est pourquoi si vous pouviez m'aider à trouver et comprendre mon erreur peut être qu'un jour j'arriverais enfin à sortir quelque chose Smiley rolleyes .

Je vous joins les codes utilisés :



<script type="text/javascript">
<!--
sfHover = function() {
        var sfEls = document.getElementById("menu").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>



<ul id="menu">

        <li>
                <a href="#">Accueil</a>
        </li>
        
        <li>
                <a href="#">Bien débuter</a>
                <ul>
                        <li><a href="#">Lien 1</a></li>
                        <li><a href="#">Lien 2</a></li>
                </ul>
        </li>
        
        <li>
                <a href="#">Conditions de culture</a>
                <ul>
                        <li>
                                <a href="#">Lien 3</a> 
						</li>
                        <li>
                                <a href="#">Lien 4</a>
                        </li>
                </ul>
        </li>
        
        <li>
				<a href="#">Trucs et astuces</a>  
		</li>
		<li>
				<a href="#">Galerie photo</a>  
				<ul>  
						<li>
								<a href="#">Cephalotus</a>
						</li>  
						<li>
								<a href="#">Dionaea</a>
						</li>  
						<li>
								<a href="#">Drosera</a>
						</li>  
						<li>
								<a href="#">Drosophyllum</a>
						</li>  
						<li>
								<a href="#">Genlisea</a>
						</li>  
						<li>
								<a href="#">Pinguicula</a>
						</li>  
						<li>
								<a href="#">Sarracenia</a>
						</li>  
						<li>
								<a href="#">Utricularia</a>
						</li>
				</ul>  
		</li>
        
</ul>
</head>



<style>
 
#menu li:hover ul ul, #menu li.sfhover ul ul /* Sous-sous-listes lorsque la souris passe sur un élément de liste */
{
        left: -999em; /* On expédie les sous-sous-listes hors du champ de vision */
}

#menu li:hover ul, #menu li li:hover ul, #menu li.sfhover ul, #menu li li.sfhover ul  /* Sous-listes lorsque la souris passe sur un élément de liste ET sous-sous-lites lorsque la souris passe sur un élément de sous-liste */
{
        left: auto; /* Repositionnement normal */
        min-height: 0; /* Corrige un bug sous IE */
}


#menu, #menu ul /* Liste */     
{
        padding : 0; /* pas de marge intérieure */
        margin : 0; /* ni extérieure */
        list-style : none; /* on supprime le style par défaut de la liste */
        line-height : 21px; /* on définit une hauteur pour chaque élément */
        text-align : center; /* on centre le texte qui se trouve dans la liste */
}

#menu /* Ensemble du menu */
{
        font-weight : bold; /* on met le texte en gras */
        font-family : Arial; /* on utilise Arial, c'est plus beau ^^ */
        font-size : 12px; /* hauteur du texte : 12 pixels */
}

#menu a /* Contenu des listes */
{
        display : block; /* on change le type d'élément, les liens deviennent des balises de type block */
        padding : 0; /* aucune marge intérieure */
        background : #000; /* couleur de fond */        
        color : #fff; /* couleur du texte */
        text-decoration : none; /* on supprime le style par défaut des liens (la plupart du temps = souligné) */
        width : 144px; /* largeur */
		
}

#menu li /* Elements des listes */      
{ 
        float : bottom; 
        /* pour IE qui ne reconnaît pas "transparent" */
        border-right : 0px solid #fff; /* on met une bordure blanche à droite de chaque élément */
}

/* IE ne reconnaissant pas le sélecteur ">" */
html>body #menu li
{
        border-right: 0px solid transparent ; /* on met une bordure transparente à droite de chaque élément */
}

#menu li ul /* Sous-listes */
{ 
        position: absolute; /* Position absolue */
        width: 144px; /* Largeur des sous-listes */
        left: -999em; /* Hop, on envoie loin du champ de vision */
}


#menu li ul li /* Éléments de sous-listes */
{
        /* pour IE qui ne reconnaît pas "transparent" (comme précédemment) */
        border-top : 0px solid #fff; /* on met une bordure blanche en haut de chaque élément d'une sous liste */
}

/* IE ne reconnaissant pas le sélecteur ">" */
html>body #menu li ul li                
{
        border-top : 0px solid transparent; /* on met une bordure transparente en haut de chaque élément */
}

#menu li ul ul 
{
        margin    : -22px 0 0 144px ; /* On décale les sous-sous-listes pour qu'elles ne soient pas au dessus des sous-listes */ 
        /* pour IE qui ne reconnaît pas "transparent" (comme précédemment) */
        border-left     : 0px solid #fff ; /* Petite bordure à gauche pour ne pas coller ... */      
}

/* IE ne reconnaissant pas le sélecteur ">" ... je me répète  [cligne] */
html>body #menu li ul ul                
{
        border-left     : 0px solid transparent ; /* on met une bordure transparente sur la gauche de chaque élément */
}
</style>
[/i][/i]
Modifié par Erlin (01 Sep 2014 - 20:49)
Bonjour,

J'ai testé sur le site : http://lebloggercarnivore.blogspot.fr/#
et le fonctionnement est correct, c'est à dire que le sous-menu reste visible même si je déplace le curseur plus bas que le premier item, et je peux donc cliquer sur le 2ème item du sous-menu, ou le 3ème s'il existe...

J'ai testé avec IE11, Google Chrome, Firefox, Safari et Opéra : le fonctionnement est OK.

Quelques hypothéses concernant ce problème :
1) Vous avez modifié le code depuis hier.
2) Vous utilisez un navigateur autre que ceux que j'utilise.
3) Il faut vider le cache du navigateur.

Notez que j'ai déjà rencontré ce problème sur certains sites.

Bon codage et bon courage.
Modifié par jlon (02 Sep 2014 - 10:19)
Bonjour,

Oui j'ai modifié le code. J'allais justement venir vous parler de ma modification.


#menu li:hover ul, #menu li li:hover ul, #menu li.sfhover ul, #menu li li.sfhover ul  /* Sous-listes lorsque la souris passe sur un élément de liste ET sous-sous-lites lorsque la souris passe sur un élément de sous-liste */
{
        left: auto; /* Repositionnement normal */
        min-height: 0; /* Corrige un bug sous IE */
	[b]z-index: 20000;[/b] 
}


Avant de marquer le post comme résolu, pouvez me donner votre avis sur la pertinence de cette modification ?
Modifié par Erlin (02 Sep 2014 - 17:10)
Bonsoir,

Je me permet le double post pour avancer de nouveaux éléments et actualiser la discussion.

J'avais réussis à résoudre le problème avec mon menu, j'ai commencé la mise en forme avec border-radius sauf qu'après de nombreuses recherches je n'arrivais pas aux résultats voulus. Si je mettais un border-radius avec la propriété last-child pour le dernier onglet tout le sous-menu hérite des propriétés last-child.

Je suis alors tombé sur un autre code de menu qui par la même occasion ne contient pas de JS ce qui me semblait pas plus mal car c'est un langage que je connais pas et ne maitrise pas. Malheureusement mon problème est de nouveau là et cette fois ci le z-index ne semble pas le résoudre.

Le code html reste le même.

<ul id="menu">

        <li>
                <a href="#">Accueil</a>
        </li>
        
        <li>
                <a href="#">Bien débuter</a>
                <ul>
                        <li><a href="#">Lien 1</a></li>
                        <li><a href="#">Lien 2</a></li>
                </ul>
        </li>
        
        <li>
                <a href="#">Conditions de culture</a>
                <ul>
                        <li>
                                <a href="#">Lien 3</a> 
						</li>
                        <li>
                                <a href="#">Lien 4</a>
                        </li>
                </ul>
        </li>
        
        <li>
				<a href="#">Trucs et astuces</a>  
		</li>
		<li>
				<a href="#">Galerie photo</a>  
				<ul>  
						<li>
								<a href="#">Cephalotus</a>
						</li>  
						<li>
								<a href="#">Dionaea</a>
						</li>  
						<li>
								<a href="#">Drosera</a>
						</li>  
						<li>
								<a href="#">Drosophyllum</a>
						</li>  
						<li>
								<a href="#">Genlisea</a>
						</li>  
						<li>
								<a href="#">Pinguicula</a>
						</li>  
						<li>
								<a href="#">Sarracenia</a>
						</li>  
						<li>
								<a href="#">Utricularia</a>
						</li>
				</ul>  
		</li>
        
</ul>


Le css à cependant changé


/* partie positionnement et déco */  
#menu a {   
    display:block;   
    color: #fff;   
    text-decoration:none;  
}  
#menu > li,  
#menu > li li {  
    position: relative;  
    display:inline-block;  
    width: 110px;  
    padding: 6px 15px;  
    background-color: #777;  
    background-image: linear-gradient(#aaa, #888 50%, #777 50%,#999);  
}  
#menu > li li { background: transparent none; }  
#menu > li li a { color: #444; }  
#menu > li li:hover { background:#eee; }  
#menu > li:first-child {  
    border-right: 1px solid #777;  
    border-radius: 8px 0 0 8px;  
}  
#menu > li + li {  
    border-left: 1px solid #aaa;  
    border-right: 1px solid #777;  
}  
#menu > li:last-child {  
    border-right:0;  
    border-left: 1px solid #aaa;  
    border-radius: 0 8px 8px 0 ;  
}  
#menu > li:hover {  
    background-color: #999;  
    background-image: linear-gradient(#ccc, #aaa 50%, #999 50%,#bbb);  
}  
/* (presque) fin de la partie positionnement/déco */  
/* dans cette déclaration, on fixe le max-height */  
#menu ul {  
    position: absolute;  
    top: 2em; left:0;  
    max-height:0em;   
    margin:0; padding:0;  
    background-color:#ddd;  
    background-image: linear-gradient(#fff,#ddd);  
    overflow:hidden;  
    transition: 1s max-height 0.3s;  
    border-radius: 0 0 8px 8px;  
}  
/* ici on change la valeur de max-height au :hover */  
#menu > li:hover ul {  
    /* need an adaptation, lower is better, but see it large   */  
    max-height:130em;  
} 
</style>


Voici le lien du blog : http://lebloggercarnivore.blogspot.fr/

Je travail sur Opera, j'ai vérifié sur FF et le résultat est le même.

En attendant je vais continuer à prendre des photos et réfléchir à mes textures pour mon blog Smiley smile