28116 sujets

CSS et mise en forme, CSS3

Bonjour

je bloque depuis hier.
J'ai essayé diverses solutions mais aucune ne réagit

dans la sidebar à droite dans le block webmaster je souhaitais avoir les 3 premieres lignes de la liste à droite de l'image.
ici

J'ai mis un float=left sur l'image, image seule ou incluse dans un div
J'ai fait une seule liste puis deux listes ( la première avec seulement les trois lignes)
j'ai aussi inclus directement l'image dans la liste.

Mais je n'arrive pas à avoir l'effet souhaité. Alots que normalement lorsque dans un paragraphe on insere une image avec un float=left, le texte entoure bien l'image???

Merci d'avance
Modifié par cpalo (20 Oct 2013 - 10:57)
Bonjour,

Tu ne peut pas mettre ton image à l'intérieur de ta balise ul comme cela.
Ensuite, tu as une règle qu'il faut que tu enlève :
.widget li { clear: both }
Je viens d'enlever le clear both
et sortir l'img de la liste pour mettre dans une div avant la liste
Mais résultat pas probant
Bonjour,

je ne dispose pas de votre code css mais voici comment j’analyse le problème :
vous avez un élément "en ligne" : la balise <img/>
auquel vous souhaitez accoler un élément de type "bloc" : votre liste.

En faisant un test rapide : dans une "div", je place un élément en ligne auquel je spécifie un comportement de type bloc (display: block;) et un "flottement à gauche" (float: left;) ; à la suite de cet élément, toujours dans ma division, j’insère ma liste : telle quelle.

Je constate que les premiers éléments (<li>) s’accolent sur le bord droit de mon élément (<img/>), puis les autres s’insèrent à la suite de cet élément et s’alignent par défaut au bord gauche de ma div.

Il faut donc commencer, d’après les informations que je possède, par réunir l’image et la liste dans une même section, non pas seulement dans le code écrit littéralement, mais surtout "dans le flux", en veillant à ce qu’aucun style ne s’y oppose...

Par exemple, si je spécifie une annulation des "flottements" précédents juste après mon élément de type bloc (ici, votre image), la même liste passe entièrement, et débute, à la suite de l'élément qui précède et "flotte" à gauche.

Visuellement, on obtiendrait le même résultat que dans votre cas.
Vérifier : la classe "clearfix" attribuée à votre liste : annule-t-elle le flottement ?

En réalité, seul le texte de la liste est concerné par l’élément précédent la liste : les éléments <li> et donc la liste en tant que bloc, passent sous l’élément qui précède flottant à gauche : autrement dit, mon image sort du flux, la liste reste dans le flux, seul le texte de la liste est décalé à la droite de l’image.

En outre, les puces, par défaut, risquent de chevaucher l’image : le code suivant :
list-style-position:inside;

permet d’inclure les puces dans les limites du "bloc" que constitue le texte de la liste.

J’ignore si cela peut être utile ?

<html>
<head>
<title>Test flottant</title>
<style>

div {
border: thin dotted blue; width: 300px;
}

img {background-color: cyan;
display: block;
float: left;
width: 50px; height: 65px;
outline: 0; border: thin solid black;}

ul {padding: 0; margin: 0;
list-style-position: inside;}

li { width: 100%;
background-color: yellow;
border: thin dashed green;}

li:first-child {
list-style-position: outside;
} // cet élément avec une puce non comprise dans le corps du texte

</style>
</head>
<body>

<div>
    <img alt="(^_^)"/>
    <ul>
      <li>Votre texte entré ici</li>
      <li>est influencé par l’image</li>
      <li>le texte de cet élément aligné aussi</li>
      <li>et le texte suivant</li>
      <li>continue librement</li>
      <li>sans tenir compte de l’image</li>

</ul></div>

</body>
</html>



Der Wanderer. upload/51851-image.jpg
Bonsoir,

On peut aussi suivre une autre piste , en laissant faire le navigateur (sans tenter de modifier les contextes de formatage ou layout pour les vielles versions de IE.)

Ici , on peut simplement décidé que l'image est flottante (et pas son conteneur).
Il ne faut pas modifier le contexte de formatage du conteneur, sinon , il englobe l'image et repousse le prochain element au dessous de lui, en gros , il serait plus simple d'attribuer la class left à l'image et pas le div.
test sur la feuille de style ( à defaut de modifier le HTML):

/* Direction du flottement */
.left  img{
	float: left;
        margin:0 1.5em 0 0 ;
}


Cette approche et la correction de quelques erreurs dans le code HTML, devrait solutionné ton problème.

Il peut-être intéressant de creuser un peu sur les mots clés : englober flottant, contexte de formatage et accessoirement le haslayout (pour IE7 et inf), il y a plus que le simple clear Smiley smile
Merci pour ces réponses.
Je vais les lire soigneusement et rectifier en conséquence.

Déjà en refermant le div, ça se présente beaucoup mieux.
Et j'avais oublié que la balise img est de type inline et non block.

Cordialement
Bonjour

Pas tout à fait le résultat désiré puisque les puces n'apparaissent pas pour les lignes commençant au bord droit de l'image.
Sinon pour que la 4° ligne commence en-dessous de l'image, je réutilserai une autre ul.

.about{       
	}
    
    .about img {
        display: block;
        float: left;
        width: 150px;
        height: 160px;
        outline: 0; 
    }

    .about ul {
        padding: 0;
        margin: 0;
        list-style-position: inside;
    }
    
    .about li{
        width: 100%;
        font-size: 14px;
        list-style: disc;
     } 

Cordialement

Modifié par cpalo (21 Oct 2013 - 05:48)
cpalo a écrit :
Bonjour

Pas tout à fait le résultat désiré puisque les puces n'apparaissent pas pour les lignes commençant au bord droit de l'image.

Un CSS trop 'bavard' ?


.about{       
	}
    
    .about img {
        float: left;
margin-right:1.5em;
    }

    .about ul {
        padding: 0;
        margin: 0;
    }
    
    .about li{
        font-size: 14px;
     } 

http://codepen.io/anon/pen/vqhGo
++
@gc-nomade
ça fonctionne. Il me reste à voir comment faire pour que la 4° puce commence sous l'image
j'ai laissé list-style= disc parce par défaut dans mon reset j'ai mis que les liste sn'avaient pas de puces.

Petit question sur la partie html qui est dans ton lien
le résultat correspond à ce que je veux et obtiens.
Par contre dans le code html img est inclus dans une div "about"
cpalo a écrit :
@gc-nomade
ça fonctionne. Il me reste à voir comment faire pour que la 4° puce commence sous l'image
j'ai laissé list-style= disc parce par défaut dans mon reset j'ai mis que les liste sn'avaient pas de puces.

Petit question sur la partie html qui est dans ton lien
le résultat correspond à ce que je veux et obtiens.
Par contre dans le code html img est inclus dans une div &quot;about&quot;

une erreur d’interprétation de ta structure HTML de ma part, L'image etant un element de type inline, il ne peut en principe cotoyer dans le code des elements de type block (ul en l'occurance) ., voilou Smiley smile

Pour la 4eme puce, tu peut faire par exemple:
li:nth-child(4) {clear:left;}

Elle glissera automatiquement sous le dernier flottant précédent dans le code HTML.

Cdt,