Maison  >  Article  >  interface Web  >  Solution au flottant div+css

Solution au flottant div+css

高洛峰
高洛峰original
2017-03-31 11:15:301692parcourir

如何清楚浮动(一)

  已知一个大的div容器,这个容器包含了两个子div容器,然后在这两个子div容器的后面再添加一个div(这个div表示清除浮动的div容器),清楚浮动的div容器设置css样式为clear:both,此时,大的div标签的内部(左右两边/*css5*/)浮动就清除了。

  如果有一个大的div容器2664b5c137162ed32cb2c4b60e3a831f 16b28748ea4df4d9c2150843fecfba68 ,这个大的div包含了一个子div容器4cd6539b02a5cf52b7697d7aec70ae5416b28748ea4df4d9c2150843fecfba68, le conteneur sous-div définit une largeur, une hauteur, une couleur d'arrière-plan et ne définit pas de marges intérieures, et flottantes. À ce stade, le conteneur sous-div est par défaut à gauche. le conteneur sub-div est laissé flottant (float) hérite des propriétés du navigateur et n'a pas de fonction de mise en page. Ensuite, nous avons défini le flotteur du conteneur sous-div sur float:left ; j'ai découvert qu'après avoir défini le float:left, le conteneur sous-div flottait et le conteneur sous-div était à une certaine distance du haut du grand div. récipient.

<body>
        <div class="divcss5">
            <div class="clear"></div>
        <!--<div class="clear eft"></div>
                    <div class="clear ight"></div>-->
        </div> 
    </body>

flotte avec l'attribut margin

Ensuite, je margin-top:10px, et le conteneur div enfant se déplace vers le bas en fonction de l'original La distance est de 10px, c'est-à-dire que le flottement n'affectera pas le décalage de l'attribut margin-top De même, cela n'affectera pas margin-left, margin-right, <.>margin-bottomLe décalage que devrait avoir l'attribut.

Float n'a pas d'attributs top, left, right, bottom

Ensuite, maintenant je supprime margin-top:10px;, je définis top:10px pour le conteneur sub-div, et je trouve que la coordonnée verticale n'apparaît pas, c'est-à-dire que le flottement n'a pas d'attribut supérieur. De la même manière, il n’y a pas d’attributs gauche, droite et inférieur.

Alors, dans quelles circonstances les propriétés top, left, right et bottom peuvent-elles être définies pour avoir un effet sur le flottement ?

Float a des attributs haut, gauche, droite et bas (réglage conditionnel de la position relative

position)

Donc, j'ai ajouté la position relative : par rapport au conteneur sous-div, Ensuite, définissez top:10px et constatez soudainement que le conteneur div enfant était décalé vers le bas de 10px.

Continuez dans l'état

du div enfant flottant, réglez-le sur position: relative;, puis définissez margin-left: 10px dessus, et voyez que la position de l'enfant; Le conteneur div se déplace horizontalement vers la droite. Si le décalage de 10 px est modifié, margin-top, margin-right et margin-bottom changeront tous de la même manière.

En d'autres termes, lors de la définition de float:left pour un conteneur sous-div, la définition de margin-left fonctionnera, mais la définition de top n'aura aucun effet. Top ne peut fonctionner que dans un état flottant lorsque la position relative est définie sur le conteneur div enfant. Cela signifie-t-il que left et top ne peuvent fonctionner que lorsqu'ils sont dans des positions relatives ? Alors maintenant, nous allons faire une expérience. J'ai supprimé float:left;position:relative; dans le conteneur div enfant. Il n'y aura pas de position flottante ou relative, puis j'écrirai top:10px;left:10px; suit clair{

largeur : 200px;arrière-plan: #f2e;couleur:#030617;hauteur: 20px;top:50px;gauche: 10px;}; , le résultat est que le conteneur sous-div n'a pas bougé du tout sur les axes horizontal et vertical, il s'avère donc que left et top ne fonctionnent que lorsque la position relative est définie. La marge fonctionnera, que vous définissiez la position ou non.

Continuez le float flottant ci-dessus. Si vous définissez maintenant l'héritage pour float; héritez de l'

attribut flottant du navigateur, nous voyons à ce moment que le div enfant ne flotte pas et est à gauche par défaut. De même, définir le style flottant none initial sur le div enfant n'aura pas d'effet flottant. Ce n'est que lorsque les flotteurs gauche et droit sont définis pour le conteneur sous-div que le conteneur sous-div apparaîtra flottant.

Comment effacer les flottants (2)

Ensuite, nous utilisons une autre méthode pour effacer les flottants, le code HTML est toujours le code ci-dessus, le code css du div du grand conteneur : . divcss5{

padding:10px 0;width: 100%; left: 50%;right: 50%;background: #007CB5;}, code css du conteneur div enfant : .clear{width: 200px; background: #f2e ;color:#030617;height: 20px;float:left;}, ce que vous voyez à ce moment est l'effet flottant, le conteneur sous-div flotte au-dessus du grand conteneur. Pour le même principe, je. utilisez toujours clear:both ; nous pouvons utiliser le pseudo-élément CSS :after Ce qui suit est un code CSS très simple : écrivez une pseudo-classe dans le conteneur parent. divcss5:after{content: "1";clear : Both;display: block;}, à ce moment, ce que l'on voit c'est que le float du grand conteneur est effacé, et sur le navigateur on peut voyez que le conteneur sous-div est inclus dans le grand conteneur div. En affichant l'élément sur le navigateur, vous pouvez voir qu'after est inclus dans le conteneur parent. Par conséquent, after équivaut à ajouter un div flottant clair à l'intérieur du conteneur parent, sauf qu'il manque une couche div. Cette couche est implémentée par .divcss5. :après .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn