The following editor will bring you an introduction to 6 ways of CSS equal height layout. The editor thinks it’s pretty good, so I’d like to share it with you now and give it as a reference. Let’s follow the editor and take a look.
What we said before
Equal-height layout refers to a layout method in which the heights of child elements are equal in the parent element. The implementation of equal height layout includes pseudo equal height and true equal height. Pseudo equal height only appears to be equal height, while true equal height is the real equal height. This article will introduce border simulation, negative margin these two pseudo-heights, as well as table implementation, absolute implementation, flex implementation and jsjudgment of these four true contour layouts
Pseudo-equal height
Border simulation
Because the element border and element height are always the same height, use the element's The border color is used to disguise the background color of the left and right sibling elements. Then use absolute to cover the left and right elements with transparent backgrounds on the left and right borders of the middle element to achieve a visual equal height effect
[Note] The height of the elements on the left and right sides cannot be greater than the height of the middle element, otherwise it will not be supported Open container height
CSS CodeCopy content to clipboard
<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; } .rightright{ position: absolute; top: 0; rightright: 0; width: 300px; } </style>
XML/HTML CodeCopy content to clipboard
<p class="parent" style="background-color: lightgrey;"> <p class="left"> <p>left</p> </p> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> <p class="right"> <p>right</p> </p> </p>
Negative margin
Because the background is displayed in the padding area, set a large value padding-bottom, and then set the same value The negative margin-bottom makes the background color cover the element area and conforms to the calculation formula of the element's box model to achieve a visual equal height effect
[Note] If the page uses anchor to jump, part of the text information will be hidden
[Note] If the background image on the page is positioned at the bottom, it will Can't see background image
##CSS CodeCopy content to clipboard
<style> body,p{margin: 0;} .parent{ overflow: hidden; } .left,.centerWrap,.rightright{ float: left; width: 50%; padding-bottom: 9999px; margin-bottom: -9999px; } .center{ margin: 0 20px; } .left,.rightright{ width: 25%; } </style>
XML/HTML CodeCopy content to clipboard
<p class="parent" style="background-color: lightgrey;"> <p class="left" style="background-color: lightblue;"> <p>left</p> </p> <p class="centerWrap"> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> </p> <p class="right" style="background-color: lightgreen;"> <p>right</p> </p> </p>
True equal height
table The table-cell element in the table element defaults to equal heightCSS CodeCopy content to clipboard
<style> body,p{margin: 0;} .parent{ display: table; width: 100%; table-layout: fixed; } .left,.centerWrap,.rightright{ display: table-cell; } .center{ margin: 0 20px; } </style>
XML/HTML CodeCopy content to clipboard
<p class="parent" style="background-color: lightgrey;"> <p class="left" style="background-color: lightblue;"> <p>left</p> </p> <p class="centerWrap"> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> </p> <p class="right" style="background-color: lightgreen;"> <p>right</p> </p> </p>
absolute
Set the top:0;bottom:0; of the child elements so that the height of all child elements is the same as the height of the parent element , to achieve the equal height effectCSS CodeCopy the content to the clipboard
<style> body,p{margin: 0;} .parent{ position: relative; height: 40px; } .left,.center,.rightright{ position: absolute; top: 0; bottombottom: 0; } .left{ left: 0; width: 100px; } .center{ left: 120px; rightright: 120px; } .rightright{ width: 100px; rightright: 0; } </style>
Copy content to clipboard <p class="parent" style="background-color: lightgrey;">
<p class="left" style="background-color: lightblue;">
<p>left</p>
</p>
<p class="center" style="background-color: pink;">
<p>center</p>
<p>center</p>
</p>
<p class="right" style="background-color: lightgreen;">
<p>right</p>
</p>
</p>
flex The telescopic items in flex are stretched by default As the height of the parent element, the equal height effect is also achieved
CSS Code复制内容到剪贴板
<style> body,p{margin: 0;} .parent{ display: flex; } .left,.center,.rightright{ flex: 1; } .center{ margin: 0 20px; } </style>
XML/HTML Code复制内容到剪贴板
<p class="parent" style="background-color: lightgrey;"> <p class="left" style="background-color: lightblue;"> <p>left</p> </p> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> <p class="right" style="background-color: lightgreen;"> <p>right</p> </p> </p>
js
当子元素高度不同时,进行js判断,增加较低子元素的padding-bottom,使得各个子元素实现等高效果
CSS Code复制内容到剪贴板
<style> body,p{margin: 0;} .parent{overflow: hidden;} .left,.center,.rightright{ float: left; width: 25%; } .center{ width: 50%; padding: 0 20px; background-clip: content-box; box-sizing: border-box; } </style>
XML/HTML Code复制内容到剪贴板
<p class="parent" id="parent" style="background-color: lightgrey;"> <p class="left" style="background-color: lightblue;"> <p>left</p> </p> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> <p class="right" style="background-color: lightgreen;"> <p>right</p> </p> </p>
JavaScript Code复制内容到剪贴板
<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('p')[0]; var oCenter = oParent.getElementsByTagName('p')[1]; var oRight = oParent.getElementsByTagName('p')[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>
以上这篇浅析CSS等高布局的6种方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHP中文网。
The above is the detailed content of Introduction to 6 ways of CSS equal height layout. For more information, please follow other related articles on the PHP Chinese website!

CSS Grid is a powerful tool for creating complex, responsive web layouts. It simplifies design, improves accessibility, and offers more control than older methods.

Article discusses CSS Flexbox, a layout method for efficient alignment and distribution of space in responsive designs. It explains Flexbox usage, compares it with CSS Grid, and details browser support.

The article discusses techniques for creating responsive websites using CSS, including viewport meta tags, flexible grids, fluid media, media queries, and relative units. It also covers using CSS Grid and Flexbox together and recommends CSS framework

The article discusses the CSS box-sizing property, which controls how element dimensions are calculated. It explains values like content-box, border-box, and padding-box, and their impact on layout design and form alignment.

Article discusses creating animations using CSS, key properties, and combining with JavaScript. Main issue is browser compatibility.

Article discusses using CSS for 3D transformations, key properties, browser compatibility, and performance considerations for web projects.(Character count: 159)

The article discusses using CSS gradients (linear, radial, repeating) to enhance website visuals, adding depth, focus, and modern aesthetics.

Article discusses pseudo-elements in CSS, their use in enhancing HTML styling, and differences from pseudo-classes. Provides practical examples.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

Dreamweaver CS6
Visual web development tools

Dreamweaver Mac version
Visual web development tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft
