圣杯布局与双飞翼布局

mac2025-10-13  5

1、作用

圣杯布局与双飞翼布局都是两边顶宽,中间自适应的三栏布局,中间栏要放在文档流前面以优先渲染。

2、区别

圣杯布局:将中间div设置左右padding-left和padding-right,且将左右两个div用相对布局position:relative以及left和right属性,使得左右两栏div不遮挡中间div。

双飞翼布局:直接在中间div内部创建子div用于放置内容,在该子div中使用margin-left和margin-right为左右两栏div空出位置。

3、代码实现

1)圣杯布局

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Test</title> <style> * { margin: 0; padding: 0; } #header { height: 50px; background-color: #aaaaaa; text-align: center; } #body { padding: 0 200px 0 180px; height: 100px; } #middle { float: left; width: 100%; height: 100px; background-color: red; } #left { float: left; width: 180px; height: 100px; margin-left: -100%; background-color: blue; position: relative; left: -180px; } #right { float: left; width: 200px; height: 100px; margin-left: -200px; background-color: blue; position: relative; right: -200px; } #footer { height: 50px; background-color: #aaaaaa; text-align: center; } </style> </head> <body> <div id="header">header</div> <div id="body"> <div id="middle">middle</div> <div id="left">left</div> <div id="right">right</div> </div> <div id="footer">footer</div> <script> </script> </body> </html>

2)双飞翼布局

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Test</title> <style> * { margin: 0; padding: 0; } #header { height: 50px; background-color: #aaaaaa; text-align: center; } #middle { float: left; width: 100%; height: 100px; background-color: red; } #inside { margin: 0 200px 0 180px; height: 100px; } #left { float: left; width: 180px; height: 100px; margin-left: -100%; background-color: blue; } #right { float: left; width: 200px; height: 100px; margin-left: -200px; background-color: blue; } #footer { clear: both; height: 50px; background-color: #aaaaaa; text-align: center; } </style> </head> <body> <div id="header">header</div> <div id="middle"> <div id="inside">middle</div> </div> <div id="left">left</div> <div id="right">right</div> <div id="footer">footer</div> <script> </script> </body> </html>

 

最新回复(0)