Mettre côte à côte du texte et une image

ça a mis le bazar, comme quand je bouge une image sur word !

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je suis en apprentissage du développement web (html, css, javascript). Comme j’apprend, je cherche avant tout à comprendre comment faire et comment ça marche, donc je tiens à ne pas utiliser de framework. Je suppose que BootStrap aurait déjà résolu mon problème, mais je ne sais pas ce qu’il y a derrière.

J’essaie d’aligner 2 éléments. A gauche, du texte, à droite une image. Mon html est le suivant :

<div id="presentation-site">

    <div id="presentation-texte>
        <h1> titre </h1>
        <h2> sous-titre </h2>
        <p> présentation du site. Je montre comment je fait des pates, des pizza, comment je range mes cartes pokémon, et je parle de mon chat </p>
    </div>
    <img src="images/logo.svg" alt="Logo du site" id="logo">
</div>

<div id="contenu">
    <h2> Mes passions </h2>
    
    <div id="Animaux">
        <div class="image-arriere-plan" id="chats"> <!-- Une classe qui me permet de mettre une image sous le texte, qui fonctionnait très bien avant que je me décide à mettre texte et logo côte à côte-->
            <h3> Animaux </h3>
            <h4> Chats </h4>
            <p> Les chats sont mignons </p>
            <p> d'autres animaux... </p>
        </div>
        
    </div>

</div>

<!-- Je met pas les head, body, main... dans ce post, pour pas trop charger -->

mon css est le suivant :


#presentation-texte{
    width: 80vw;
    float:left
}

#logo{
    width:20vw;
    float:right;
}

/* en faisant ça, j'espérai attribuer 80% de l'écran au texte, 20% à l'image, et les mettre à gauche et à droite. Pour m'assurer, des limites du div "presentation du site", j'ai ajouté un dernier élément*/

#presentation-site{
    background color: #ccc;
}

Donc, le but est d’avoir la présentation du site et le logo côte à côte, et que le plus grand des 2, impose la limite verticale de cette présentation. C’est pour ça que le texte et le logo sont dans un div commun. Ensuite, le contenu est censé venir. Malheureusement, ça ne se passe pas du tout comme prévu ! Le logo se met à droite, mais sous le texte de présentation (en violet). Pire encore : Le contenu (qui parle de chat) passe SOUS le texte présentation… quant au gris (#ccc) qui devait m’indiquer les limites de mon div, eh bien il s’est réduit en une ligne en haut. Voyez l’image vous-même :

Screenshot_5 (1).png
Screenshot_5 (1).png

Je ne comprend pas ce comportement car pour moi mes différentes imbrications de conteneurs sont correctes. D’autant plus que les choses étaient bien les unes au dessus des autres, jusqu’à ce que je rajoute float left et right. Pouvez-vous m’expliquer pourquoi ça ressemble subitement à ça ? Merci.

+0 -0

Hello,

La propriété float force l’élément à sortir du flow naturel.

Pour forcer un retour à la normale il faut un clear après cet élément, par exemple au niveau du bloc suivant.

Suivant le côté que tu veux rétablir tu peux préciser left ou right comme valeur, ou utiliser both pour faire simple.


Autrement, pour positionner des éléments, le simple (et plus moderne) est d’utiliser flexbox ou les grid. Il y a moins de pièges qu’avec float qui n’est pas trop fait pour gérer des alignements :)

Salut !

Donc si je comprend bien, l’image de chat passe sous l’intro du site, car à cause des float, elle la première image dans le flux normale, donc elle passe en première en haut à gauche, et en dessous car elle est sur la couche inférieur ? Le texte de chat vient se greffer tout de suite en dessous car il peut pas ignorer le texte d’intro et se superposer avec car ils sont sur la même couche ??

30 minutes après avoir posté, je suis tombé sur un caroussel insta qui parlait justement des flexbox et des grid. Je suppose que ces 2 notions m’aideront plus tard pour le responsive design.

Est-ce que c’est une bonne pratique de tout mettre dans des grid, éventuellement emboiter des grid ??

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte