Table des matières
前面的话
伪等高
边框模拟
负margin
真等高
table
absolute
flex
js
Maison interface Web tutoriel HTML CSS等高布局的6种方式_html/css_WEB-ITnose

CSS等高布局的6种方式_html/css_WEB-ITnose

Jun 24, 2016 am 11:19 AM

× 目录 [1]边框模拟 [2]负margin [3]table [4]absolute [5]flex [6]js

前面的话

  等高布局是指子元素在父元素中高度相等的布局方式。等高布局的实现包括伪等高和真等高,伪等高只是看上去等高而已,真等高是实实在在的等高。本文将介绍边框模拟、负margin这两种伪等高以及table实现、absolute实现、flex实现和js判断这四种真等高布局

 

伪等高

边框模拟

  因为元素边框和元素高度始终是相同高度,用元素的边框颜色来伪装左右两个兄弟元素的背景色。然后将左右两个透明背景的元素使用absolute覆盖在中间元素的左右边框上,实现视觉上的等高效果

  [注意]左右两侧元素的内容高度不能大于中间元素内容高度,否则无法撑开容器高度

<style>body,p{margin: 0;}.parent{    position: relative;}.center{    box-sizing:border-box;    padding: 0 20px;    background-clip: content-box;    border-left: 210px solid lightblue;    border-right: 310px solid lightgreen;}.left{    position: absolute;    top: 0;    left: 0;    width: 200px;}.right{    position: absolute;    top: 0;    right: 0;    width: 300px;}</style>
Copier après la connexion

<div class="parent" style="background-color: lightgrey;">    <div class="left">        <p>left</p>    </div>      <div class="center" style="background-color: pink;">        <p>center</p>        <p>center</p>    </div>              <div class="right">        <p>right</p>    </div>        </div>
Copier après la connexion

负margin

  因为背景是在padding区域显示的,设置一个大数值的padding-bottom,再设置相同数值的负的margin-bottom,使背景色铺满元素区域,又符合元素的盒模型的计算公式,实现视觉上的等高效果

  [注意]如果页面中使用锚点跳转时,将会隐藏部分文字信息

  [注意]如果页面中的背景图片定位到底部,将会看不到背景图片

<style>body,p{margin: 0;}.parent{    overflow: hidden;}.left,.centerWrap,.right{    float: left;    width: 50%;    padding-bottom: 9999px;    margin-bottom: -9999px;}.center{    margin: 0 20px;}.left,.right{    width: 25%;}</style>
Copier après la connexion

<div class="parent" style="background-color: lightgrey;">    <div class="left" style="background-color: lightblue;">        <p>left</p>    </div>      <div class="centerWrap">        <div class="center" style="background-color: pink;">            <p>center</p>            <p>center</p>        </div>             </div>             <div class="right" style="background-color: lightgreen;">        <p>right</p>    </div>        </div>
Copier après la connexion

真等高

table

  table元素中的table-cell元素默认就是等高的

<style>body,p{margin: 0;}.parent{    display: table;    width: 100%;    table-layout: fixed;}.left,.centerWrap,.right{    display: table-cell;}.center{    margin: 0 20px;}</style>
Copier après la connexion

<div class="parent" style="background-color: lightgrey;">    <div class="left" style="background-color: lightblue;">        <p>left</p>    </div>      <div class="centerWrap">        <div class="center" style="background-color: pink;">            <p>center</p>            <p>center</p>        </div>             </div>     <div class="right" style="background-color: lightgreen;">        <p>right</p>    </div>        </div>
Copier après la connexion

absolute

  设置子元素的top:0;bottom:0;使得所有子元素的高度都和父元素的高度相同,实现等高效果

<style>body,p{margin: 0;}.parent{    position: relative;    height: 40px;}.left,.center,.right{    position: absolute;    top: 0;    bottom: 0;}.left{    left: 0;    width: 100px;}.center{    left: 120px;    right: 120px;}.right{    width: 100px;    right: 0;}</style>
Copier après la connexion

<div class="parent" style="background-color: lightgrey;">    <div class="left" style="background-color: lightblue;">        <p>left</p>    </div>      <div class="center" style="background-color: pink;">        <p>center</p>        <p>center</p>    </div>              <div class="right" style="background-color: lightgreen;">        <p>right</p>    </div>        </div>
Copier après la connexion
Copier après la connexion

flex

  flex中的伸缩项目默认都拉伸为父元素的高度,也实现了等高效果

<style>body,p{margin: 0;}.parent{    display: flex;}.left,.center,.right{    flex: 1;}.center{    margin: 0 20px;}</style>
Copier après la connexion

<div class="parent" style="background-color: lightgrey;">    <div class="left" style="background-color: lightblue;">        <p>left</p>    </div>      <div class="center" style="background-color: pink;">        <p>center</p>        <p>center</p>    </div>              <div class="right" style="background-color: lightgreen;">        <p>right</p>    </div>        </div>
Copier après la connexion
Copier après la connexion

js

  当子元素高度不同时,进行js判断,增加较低子元素的padding-bottom,使得各个子元素实现等高效果

<style>body,p{margin: 0;}.parent{overflow: hidden;}.left,.center,.right{    float: left;    width: 25%;}    .center{    width: 50%;    padding: 0 20px;    background-clip: content-box;    box-sizing: border-box;}</style>
Copier après la connexion

<div class="parent" id="parent" style="background-color: lightgrey;">    <div class="left" style="background-color: lightblue;">        <p>left</p>    </div>      <div class="center" style="background-color: pink;">        <p>center</p>        <p>center</p>    </div>              <div class="right" style="background-color: lightgreen;">        <p>right</p>    </div>        </div>
Copier après la connexion

<script>function getCSS(obj,style){    if(window.getComputedStyle){        return getComputedStyle(obj)[style];    }    return obj.currentStyle[style];}var oParent = document.getElementById('parent');var oLeft = oParent.getElementsByTagName('div')[0];var oCenter = oParent.getElementsByTagName('div')[1];var oRight = oParent.getElementsByTagName('div')[2];function eqHeight(obj1,obj2){    var oDis = obj1.clientHeight - obj2.clientHeight;    if(oDis > 0){        obj2.style.paddingBottom = parseFloat(getCSS(obj2,'padding-bottom')) + oDis + 'px';    }else{        obj1.style.paddingBottom = parseFloat(getCSS(obj1,'padding-bottom')) +  Math.abs(oDis) + 'px';    }}eqHeight(oLeft,oCenter);eqHeight(oLeft,oRight);</script>
Copier après la connexion

Déclaration de ce site Web
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

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Dead Rails - Comment apprivoiser les loups
4 Il y a quelques semaines By DDD
Niveaux de force pour chaque ennemi et monstre de R.E.P.O.
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
2 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1658
14
Tutoriel PHP
1257
29
Tutoriel C#
1231
24
HTML est-il facile à apprendre pour les débutants? HTML est-il facile à apprendre pour les débutants? Apr 07, 2025 am 12:11 AM

HTML convient aux débutants car il est simple et facile à apprendre et peut rapidement voir les résultats. 1) La courbe d'apprentissage de HTML est fluide et facile à démarrer. 2) Il suffit de maîtriser les balises de base pour commencer à créer des pages Web. 3) Flexibilité élevée et peut être utilisée en combinaison avec CSS et JavaScript. 4) Les ressources d'apprentissage riches et les outils modernes soutiennent le processus d'apprentissage.

Comprendre HTML, CSS et JavaScript: un guide pour débutant Comprendre HTML, CSS et JavaScript: un guide pour débutant Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesOnHTML, CSS, etjavascript: 1) HTMLSTRUCTURESCONTENT, 2) CSSSTYLESIT, et3) JavascriptAdddsInterActivity, Forming TheasisofmodernweBEBExperiences.

Les rôles de HTML, CSS et JavaScript: responsabilités de base Les rôles de HTML, CSS et JavaScript: responsabilités de base Apr 08, 2025 pm 07:05 PM

HTML définit la structure Web, CSS est responsable du style et de la mise en page, et JavaScript donne une interaction dynamique. Les trois exercent leurs fonctions dans le développement Web et construisent conjointement un site Web coloré.

Quel est un exemple d'une balise de départ dans HTML? Quel est un exemple d'une balise de départ dans HTML? Apr 06, 2025 am 12:04 AM

Anexampleofastartingtaginhtmlis, qui abinginsaparagraph.startingtagsaressentialtinhtmlastheyinitiateelements, définit les éventualités, et la faculté de réduction des pages et de la construction de la création.

HTML, CSS et JavaScript: outils essentiels pour les développeurs Web HTML, CSS et JavaScript: outils essentiels pour les développeurs Web Apr 09, 2025 am 12:12 AM

HTML, CSS et JavaScript sont les trois piliers du développement Web. 1. HTML définit la structure de la page Web et utilise des balises telles que, etc. 2. CSS contrôle le style de page Web, en utilisant des sélecteurs et des attributs tels que la couleur, la taille de la police, etc. 3. JavaScript réalise les effets dynamiques et l'interaction, par la surveillance des événements et les opérations DOM.

HTML: The Structure, CSS: The Style, Javascript: Le comportement HTML: The Structure, CSS: The Style, Javascript: Le comportement Apr 18, 2025 am 12:09 AM

Les rôles de HTML, CSS et JavaScript dans le développement Web sont: 1. HTML définit la structure de la page Web, 2. CSS contrôle le style de page Web, et 3. JavaScript ajoute un comportement dynamique. Ensemble, ils construisent le cadre, l'esthétique et l'interactivité des sites Web modernes.

L'avenir de HTML: évolution et tendances de la conception Web L'avenir de HTML: évolution et tendances de la conception Web Apr 17, 2025 am 12:12 AM

L'avenir de HTML est plein de possibilités infinies. 1) Les nouvelles fonctionnalités et normes comprendront plus de balises sémantiques et la popularité des composants Web. 2) La tendance de la conception Web continuera de se développer vers une conception réactive et accessible. 3) L'optimisation des performances améliorera l'expérience utilisateur grâce à des technologies de chargement d'image réactives et de chargement paresseux.

L'avenir de HTML, CSS et JavaScript: Tendances de développement Web L'avenir de HTML, CSS et JavaScript: Tendances de développement Web Apr 19, 2025 am 12:02 AM

Les tendances futures de HTML sont la sémantique et les composants Web, les tendances futures de CSS sont CSS-in-JS et CSShoudini, et les tendances futures de JavaScript sont WebAssembly et sans serveur. 1. La sémantique HTML améliore l'accessibilité et les effets de référencement, et les composants Web améliorent l'efficacité du développement, mais l'attention doit être accordée à la compatibilité du navigateur. 2. CSS-in-JS améliore la flexibilité de gestion du style mais peut augmenter la taille du fichier. CSShoudini permet le fonctionnement direct du rendu CSS. 3.WeBassembly optimise les performances de l'application du navigateur mais a une courbe d'apprentissage abrupte, et sans serveur simplifie le développement mais nécessite une optimisation des problèmes de démarrage à froid.

See all articles