资讯专栏INFORMATION COLUMN

HTML+CSS的两栏、三栏布局以及垂直居中

nidaye / 2465人阅读

摘要:因为个人所学有限所以可能不会罗列出所有的实现方法,不过我会继续努力查漏补缺。两栏布局左固定,右适应先写出初始样式和结构。因为是主要的显示区域,所以我们应该先加载它再加载其它的地方。

这一次我想讲解一下HTML+CSS的两栏、三栏布局以及垂直居中的实现方式。因为个人所学有限所以可能不会罗列出所有的实现方法,不过我会继续努力查漏补缺。

1.两栏布局(左固定,右适应)

先写出初始样式和结构。

</>复制代码

  1. Lorem ipsum dolor sit amet
  2. Lorem ipsum dolor sit amet
  3. div {
  4. height: 200px;
  5. color: #fff;
  6. }

float+margin实现方式

</>复制代码

  1. .left {
  2. float: left;
  3. width: 300px;
  4. background-color: #5616;
  5. }
  6. .right {
  7. width: 100%;
  8. margin-left: 300px;
  9. background-color: #438;
  10. }

position实现方式

</>复制代码

  1. .left {
  2. position: absolute;
  3. left: 0;
  4. width: 300px;
  5. background-color: #5616;
  6. }
  7. .right {
  8. width: 100%;
  9. margin-left: 300px;
  10. background-color: #438;
  11. }

flex

</>复制代码

  1. .container {
  2. display: flex;
  3. }
  4. .left {
  5. flex: 0 0 300px;
  6. background-color: #5616;
  7. }
  8. .right {
  9. flex: 1 1;
  10. background-color: #438;
  11. }


右固定,左适应同理。

2.三栏布局

float + margin方式

</>复制代码

  1. Lorem ipsum dolor sit amet
  2. Lorem ipsum dolor sit amet
  3. Lorem ipsum dolor sit amet
  4. div {
  5. height: 200px;
  6. color: #fff;
  7. }
  8. .main {
  9. width: 100%;
  10. margin-left: 300px;
  11. margin-right: 100px;
  12. background-color: #554;
  13. }
  14. .left {
  15. float: left;
  16. width: 300px;
  17. background-color: #5616;
  18. }
  19. .right {
  20. float: right;
  21. width: 100px;
  22. background-color: #438;
  23. }

position实现方式

</>复制代码

  1. .main {
  2. width: 100%;
  3. margin-left: 300px;
  4. margin-right: 100px;
  5. background-color: #554;
  6. }
  7. .left {
  8. position: absolute;
  9. left: 0px;
  10. width: 300px;
  11. background-color: #5616;
  12. }
  13. .right {
  14. position: absolute;
  15. right: 0px;
  16. width: 100px;
  17. background-color: #438;
  18. }


以上这些实现方式,虽然实现了但还不够好。因为main是主要的显示区域,所以我们应该先加载它再加载其它的地方。

grid实现方式

</>复制代码

  1. .container {
  2. display: grid;
  3. grid-template-columns: 300px auto 100px; //列的宽度
  4. }
  5. .main {
  6. grid-row: 1; //第几行
  7. background-color: #554;
  8. }
  9. .left {
  10. grid-row: 1; //第几行
  11. background-color: #5616;
  12. }
  13. .right {
  14. grid-row: 1; //第几行
  15. background-color: #438;
  16. }

圣杯布局

</>复制代码

  1. .container {
  2. padding: 0 100px 0 300px;
  3. overflow: hidden;
  4. }
  5. .main {
  6. float: left;
  7. width: 100%;
  8. background-color: #554;
  9. }
  10. .left {
  11. position: relative;
  12. float: left;
  13. width: 300px;
  14. left: -300px;
  15. margin-left: -100%;
  16. background-color: #5616;
  17. }
  18. .right {
  19. position: relative;
  20. float: left;
  21. right: -100px;
  22. margin-left: -100px;
  23. width: 100px;
  24. background-color: #438;
  25. }

双飞翼布局

</>复制代码

  1. Lorem ipsum dolor sit amet
  2. Lorem ipsum dolor sit amet
  3. Lorem ipsum dolor sit amet
  4. div {
  5. height: 200px;
  6. color: #fff;
  7. }
  8. .wrap {
  9. float: left;
  10. width: 100%;
  11. }
  12. .main {
  13. margin: 0 100px 0 300px;
  14. overflow: hidden;
  15. background-color: #554;
  16. }
  17. .left {
  18. float: left;
  19. width: 300px;
  20. margin-left: -100%;
  21. background-color: #5616;
  22. }
  23. .right {
  24. float: left;
  25. width: 100px;
  26. margin-left: -100px;
  27. background-color: #438;
  28. }

两种布局方式的不同之处在于如何处理中间主列的位置:

</>复制代码

  1. 圣杯布局是利用父容器的左、右内边距+两个从列相对定位;
  2. 双飞翼布局是把主列嵌套在一个新的父级块中利用主列的左、右外边距进行布局调整

3.垂直居中

position + margin实现(1)

</>复制代码

  1. .container {
  2. position: relative;
  3. width: 500px;
  4. height: 500px;
  5. background-color: #5465;
  6. }
  7. .content {
  8. position: absolute;
  9. left: 50%;
  10. top: 50%;
  11. width: 200px;
  12. height: 200px;
  13. margin-left: -100px;
  14. margin-top: -100px;
  15. background-color: #6465;
  16. }

position + margin实现(2)

</>复制代码

  1. .container {
  2. position: relative;
  3. width: 500px;
  4. height: 500px;
  5. background-color: #5465;
  6. }
  7. .content {
  8. position: absolute;
  9. left: 0;
  10. top: 0;
  11. bottom: 0;
  12. right: 0;
  13. width: 200px;
  14. height: 200px;
  15. margin: auto;
  16. background-color: #6465;
  17. }

position + transform实现

</>复制代码

  1. .container {
  2. position: relative;
  3. width: 500px;
  4. height: 500px;
  5. background-color: #5465;
  6. }
  7. .content {
  8. position: absolute;
  9. left: 50%;
  10. top: 50%;
  11. width: 200px;
  12. height: 200px;
  13. transform: translate(-50%, -50%);
  14. background-color: #6465;
  15. }

flex实现

</>复制代码

  1. .container {
  2. display: flex;
  3. align-items: center;
  4. justify-content: center;
  5. width: 500px;
  6. height: 500px;
  7. background-color: #5465;
  8. }
  9. .content {
  10. width: 200px;
  11. height: 200px;
  12. background-color: #6465;
  13. }

inline-block实现

</>复制代码

  1. .container {
  2. display: inline-block;
  3. width: 500px;
  4. height: 500px;
  5. text-align: center;
  6. background-color: #5465;
  7. }
  8. .content {
  9. display: inline-block;
  10. width: 200px;
  11. height: 200px;
  12. vertical-align: middle;
  13. background-color: #6465;
  14. }
  15. .container::after{
  16. content: "";
  17. display: inline-block;
  18. width: 0;
  19. height: 100%;
  20. vertical-align: middle;
  21. }

效果都如下

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/117196.html

相关文章

  • HTML+CSS两栏三栏布局以及垂直居中

    摘要:因为个人所学有限所以可能不会罗列出所有的实现方法,不过我会继续努力查漏补缺。两栏布局左固定,右适应先写出初始样式和结构。因为是主要的显示区域,所以我们应该先加载它再加载其它的地方。 这一次我想讲解一下HTML+CSS的两栏、三栏布局以及垂直居中的实现方式。因为个人所学有限所以可能不会罗列出所有的实现方法,不过我会继续努力查漏补缺。 1.两栏布局(左固定,右适应) 先写出初始样式和结构。...

    kun_jian 评论0 收藏0
  • CSS入门指南-4:页面布局

    摘要:属性是中最重要的用于控制布局的属性。布局的高度多数情况下,布局中结构化元素乃至任何元素的高度是不必设定的。更新效果如图以上措施使布局有了明显改观。 这是《CSS设计指南》的读书笔记,用于加深学习效果。 display 属性 display是 CSS 中最重要的用于控制布局的属性。每个元素都有一个默认的 display 值。对于大多数元素它们的默认值通常是 block 或 inline ...

    ethernet 评论0 收藏0
  • CSS入门指南-4:页面布局

    摘要:属性是中最重要的用于控制布局的属性。布局的高度多数情况下,布局中结构化元素乃至任何元素的高度是不必设定的。更新效果如图以上措施使布局有了明显改观。 这是《CSS设计指南》的读书笔记,用于加深学习效果。 display 属性 display是 CSS 中最重要的用于控制布局的属性。每个元素都有一个默认的 display 值。对于大多数元素它们的默认值通常是 block 或 inline ...

    Stardustsky 评论0 收藏0
  • CSS布局说——可能是最全的

    摘要:元素框相对于之前正常文档流中的位置发生偏移,并且原先的位置仍然被占据。这些相对于布局来说是基础的,同时也是非常重要的。可以看到,浮动元素,其实对于布局来说,是特别危险的。 前言 现在,我们被称为前端工程师。然而,早年给我们的称呼却是页面仔。或许是职责越来越大,整体的前端井喷式的发展,使我们只关注了js,而疏远了css和html。 其实,我们可能经常在聊组件化,咋地咋地。但是,回过头来思...

    hearaway 评论0 收藏0

发表评论

0条评论

nidaye

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<