recherche
Maisoninterface Webtutoriel CSSUtilisation magique de la marge négative dans la mise en page CSS et autres implémentations

Je pense que tout le monde a rencontré un tel besoin lors du développement du projet. X (X>1) blocs doivent être placés sur une rangée et l'espacement entre les blocs adjacents doit être le même.


Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations

Cela ressemble probablement à ce qui précède. Voici quelques méthodes de mise en œuvre.

1. Méthode de marge négative

Définissez la largeur et la marge de l'élément pour remplir la largeur du parent, puis définissez la marge gauche du parent sur margin Largeur d'espacement négative


Code CSSCopier le contenu dans le presse-papiers

<style type="text/css">    
*{   
 margin: 0;   
 padding: 0;   
}   
img{   
 vertical-align: middle;   
}   
  
ul>li{   
 float: left;   
}   
  
ul>li>img{   
 width: 100%;   
}   
    
.test1{   
padding: 0 2%;   
margin-left: -3.3%;   
}   
    
.test1>li{   
width: 30%;   
margin-left: 3.3%;   
}   
  
</style>   
 <p>1.关于负margin的实现,由于margin是基于父级计算的,会有一定的偏差,但是用于移动端上,误差可以忽略不计</p>   
        <ul class="test1 clearfix">   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
        </ul>


L'erreur ci-dessus est causée par le calcul du pourcentage de marge de ul et li basé sur différents éléments. Cependant, sur le terminal mobile, en raison de la portée limitée de la fenêtre, la différence est généralement très faible. , sur le PC, utilisez px pour qu'il puisse être ignoré. (Il y a d'autres moyens ci-dessous)

2. Pour la mise en œuvre de sites Web majeurs, remplissez les éléments et utilisez le dimensionnement de la boîte. Il nécessite ie8 et supérieur pour prendre en charge


Code CSSCopier le contenu dans le presse-papiers

<style type="text/css">   
*{   
    margin: 0;   
    padding: 0;   
}   
img{   
    vertical-align: middle;   
}   
.test1{   
    padding: 0 2%;   
    margin-left: -3.3%;   
}   
ul>li{   
    float: left;   
}   
.test1>li{   
    width: 30%;   
    margin-left: 3.3%;   
}   
ul>li>img{   
    width: 100%;   
}   
.test2>li{   
    width: 33.3%;   
    padding: 0 2%;   
    box-sizing: border-box;   
}   
.test3{   
    display: flex;   
    justify-content: space-between;   
       
}   
.test3>li{   
    width: 31.3%;   
    padding: 0 2%;   
    float: none;   
}   
.test4{   
    width: 1200px;   
    border: 1px solid red;   
    margin-left: -3.33%;   
}   
.test4>li{   
    width: 30%;   
    margin-left: 3.33%;   
}   
</style>   
<p>2.各大网站的实现,在元素内部进行填充,使用box-sizing,需要ie8及以上才支持</p>   
        <ul class="test2 clearfix">   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
        </ul>

Cette implémentation est toujours disponible pour le pour le moment, aucune lacune n'a été trouvée et le code est simple et facile à comprendre (recommandé)



3 La mise en œuvre du modèle de boîte flexible flex nécessite un traitement de compatibilité (ancienne boîte, nouvelle boîte)


Code CSS

Copier le contenu dans le presse-papiers

<style type="text/css">   
*{   
    margin: 0;   
    padding: 0;   
}   
img{   
    vertical-align: middle;   
}   
.test1{   
    padding: 0 2%;   
    margin-left: -3.3%;   
}   
ul>li{   
    float: left;   
}   
.test1>li{   
    width: 30%;   
    margin-left: 3.3%;   
}   
ul>li>img{   
    width: 100%;   
}   
.test2>li{   
    width: 33.3%;   
    padding: 0 2%;   
    box-sizing: border-box;   
}   
.test3{   
    display: flex;   
    justify-content: space-between;   
       
}   
.test3>li{   
    width: 31.3%;   
    padding: 0 2%;   
    float: none;   
}   
.test4{   
    width: 1200px;   
    border: 1px solid red;   
    margin-left: -3.33%;   
}   
.test4>li{   
    width: 30%;   
    margin-left: 3.33%;   
}   
</style>   
<p>3.弹性盒模型flex的实现,需要做兼容处理(旧盒子+新盒子),仅为演示,没做兼容处理</p>   
        <ul class="test3">   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
        </ul>

Comment cette situation peut-elle être moins courante ? Quant à notre flex, le modèle de boîte flexible devrait être spécialement conçu pour gérer cette situation, mais il existe de nouveaux et d'anciens modèles de boîte, et chaque navigateur l'implémente différemment. Par conséquent, en général, les attributs des deux ensembles de modèles de boîtes doivent être ajoutés. (Faites-le si vous le souhaitez, l'effet est génial)


Implémentation de 4.classname

Ajoutez une classe distincte aux éléments qui nécessitent un traitement spécial, puis faites l'adresse correspondante. Il peut être traité en arrière-plan ou en front-end (le traitement backend est recommandé)


Code CSS

Copier le contenu dans le presse-papiers

<style type="text/css">   
*{   
    margin: 0;   
    padding: 0;   
}   
img{   
    vertical-align: middle;   
}   
.test1{   
    padding: 0 2%;   
    margin-left: -3.3%;   
}   
ul>li{   
    float: left;   
}   
.test1>li{   
    width: 30%;   
    margin-left: 3.3%;   
}   
ul>li>img{   
    width: 100%;   
}   
.test2>li{   
    width: 33.3%;   
    padding: 0 2%;   
    box-sizing: border-box;   
}   
.test3{   
    display: flex;   
    justify-content: space-between;   
       
}   
.test3>li{   
    width: 31.3%;   
    padding: 0 2%;   
    float: none;   
}   
.test4{   
    padding: 0 2%;   
}   
.test4>li{   
    width: 30%;   
    margin-left: 5%;   
}   
.test4>li.first{   
    margin: 0;   
}   
.test5{   
    padding: 0 2%;   
}   
.test5>li{   
    width: 30%;   
    margin-left: 5%;   
}   
.test5>li:first-child{   
    margin: 0;   
}   
</style>   
<p>4.classname实现</p>   
        <ul class="test4 clearfix">   
            <li class="first"><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
        </ul>

Implémentation du sélecteur 5.css


:first-child :first-type-of :nth-child() Aucun de ces implémentations S'il y a des difficultés techniques, vous pouvez vérifier le document CSS et faire attention à la compatibilité


Code CSS

Copie. le contenu dans le presse-papiers

<style type="text/css">   
*{   
    margin: 0;   
    padding: 0;   
}   
img{   
    vertical-align: middle;   
}   
.test1{   
    padding: 0 2%;   
    margin-left: -3.3%;   
}   
ul>li{   
    float: left;   
}   
.test1>li{   
    width: 30%;   
    margin-left: 3.3%;   
}   
ul>li>img{   
    width: 100%;   
}   
.test2>li{   
    width: 33.3%;   
    padding: 0 2%;   
    box-sizing: border-box;   
}   
.test3{   
    display: flex;   
    justify-content: space-between;   
       
}   
.test3>li{   
    width: 31.3%;   
    padding: 0 2%;   
    float: none;   
}   
.test4{   
    padding: 0 2%;   
}   
.test4>li{   
    width: 30%;   
    margin-left: 5%;   
}   
.test4>li.first{   
    margin: 0;   
}   
.test5{   
    padding: 0 2%;   
}   
.test5>li{   
    width: 30%;   
    margin-left: 5%;   
}   
.test5>li:first-child{   
    margin: 0;   
}   
</style>   
<p>5.css选择器实现(注意ie兼容性)</p>   
        <ul class="test5 clearfix">   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
            <li><img  src="/static/imghwm/default1.png"  data-src="img/test.jpg"  class="lazy"  / alt="Utilisation magique de la marge négative dans la mise en page CSS et autres implémentations" ></li>   
        </ul>

Collez toute la DÉMO

J'ai presque oublié qu'il y a une autre situation où X=2, définissez la largeur, flottez à gauche à gauche et flottez à droite Flottez à droite.

En fait, lorsque X=3, il existe une autre façon de gérer cela. Les éléments gauche et droit flottent respectivement à gauche et à droite, et l'élément du milieu est défini pour être absolument positionné et centré par rapport au parent. .

Notez qu'en raison de l'indivisibilité, il ne peut pas être calculé aussi parfaitement que le dimensionnement d'une boîte, mais une application raisonnable ne posera aucun problème dans le projet.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.

Pour des utilisations plus magiques des marges négatives dans la mise en page CSS et d'autres articles liés à l'implémentation, veuillez prêter attention au site Web PHP 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
Draggin & # 039; et droppin & # 039; en réactionDraggin & # 039; et droppin & # 039; en réactionApr 17, 2025 am 11:52 AM

L'écosystème React nous offre de nombreuses bibliothèques qui se concentrent sur l'interaction de la glisser et de la chute. Nous avons react-dnd, react-beeufuly-dnd,

Logiciel rapideLogiciel rapideApr 17, 2025 am 11:49 AM

Il y a eu des choses merveilleusement interconnectées à propos des logiciels rapides ces derniers temps.

Gradients imbriqués avec un clip de fondGradients imbriqués avec un clip de fondApr 17, 2025 am 11:47 AM

Je ne peux pas dire que j'utilise souvent le clip de fond. Je ne parierai presque presque jamais dans le travail CSS au jour le jour. Mais je me suis souvenu de cela dans un post de Stefan Judis,

Utilisation de la réalisation de demandes avec des crochets ReactUtilisation de la réalisation de demandes avec des crochets ReactApr 17, 2025 am 11:46 AM

L'animation avec des demandes de châssis devrait être facile, mais si vous n'avez pas lu de manière approfondie de la documentation de React, vous rencontrerez probablement quelques choses

Besoin de faire défiler en haut de la page?Besoin de faire défiler en haut de la page?Apr 17, 2025 am 11:45 AM

Peut-être le moyen le plus simple d'offrir cela à l'utilisateur est un lien qui cible un ID sur l'élément. Tellement comme ...

La meilleure API (GraphQL) est celle que vous écrivezLa meilleure API (GraphQL) est celle que vous écrivezApr 17, 2025 am 11:36 AM

Écoutez, je ne suis pas un expert GraphQL mais j'aime travailler avec. La façon dont elle expose les données en tant que développeur frontal est assez cool. C'est comme un menu de

Actualités de plate-forme hebdomadaire: bookmarklet d'espacement de texte, attente de haut niveau, nouvel indicateur de chargement d'ampliActualités de plate-forme hebdomadaire: bookmarklet d'espacement de texte, attente de haut niveau, nouvel indicateur de chargement d'ampliApr 17, 2025 am 11:26 AM

Au cours de cette semaine, un Bookmarklet pratique pour inspecter la typographie, en utilisant Await pour bricoler comment les modules JavaScript s'importent, ainsi que Facebook & # 039; S

Diverses méthodes pour étendre une boîte tout en préservant le rayon de la frontièreDiverses méthodes pour étendre une boîte tout en préservant le rayon de la frontièreApr 17, 2025 am 11:19 AM

J'ai récemment remarqué un changement intéressant sur Codepen: sur le plan des stylos sur la page d'accueil, il y a un rectangle avec des coins arrondis se développant dans le dos.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel