【CSS布局】响应式设计原则以及双飞翼布局&圣杯布局

历史小剧场

温体仁未必是奸臣,钱谦益未必是好人,不需要惊讶,历史往往跟你所想的并不一样。英雄可以写成懦夫,能臣可以写成奸臣,史实并不重要,重要的是,谁来写。----《明朝那些事儿》

响应式设计原则

  1. 移动优先原则;
  2. 内容优先;
  3. 灵活布局;
  4. 图片和资源;
  5. 交互和性能

双飞翼布局

特点:两侧固定,中间自适应

效果:

传统方案实现

浮动+calc()函数

html 复制代码
<style>
	 * {
        margin: 0;
         padding: 0;
     }
	.container {
        min-width: 100%;
     }
     .container div {
         float: left;
         padding: 20px;
         text-align: center;
     }
     .center {
         width: calc(100% - 400px - 20 * 6px);
         background-color: red;
     }
     .left {
         width: 200px;
         background-color: yellow;
     }
     .right {
         width: 200px;
         background-color: green;
     }
</style>
<div class="container">
    <div class="left">左侧内容</div>
    <div class="center">中间内容</div>
    <div class="right">右侧内容</div>
</div>
Flex布局实现
css 复制代码
 .container {
   display: flex;
    justify-content: space-between;
}
.container div {
    padding: 20px;
    text-align: center;
}
.left {
    width: 200px;
    background-color: red;
}
.right {
    width: 200px;
    background-color: greenyellow;
}
.center {
    background-color: gold;
    flex: 1;
}

圣杯布局

特点:

  • 头部和底部固定;
  • 中间部分自适应;
  • 且中间部分里的三个部分遵循双飞翼布局原则
    效果:
传统方案实现

浮动+calc()函数

html 复制代码
<style>
	 * {
        margin: 0;
         padding: 0;
     }
     header, footer {
        text-align: center;
        height: 40px;
        line-height: 40px;
        width: 100%;
    }
    header {
        background-color: skyblue;
    }
    footer {
        background-color: salmon;
    }
    main {
        height: calc(100vh - 80px);
    }
    main > div {
        float: left;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    main .left {
        width: 200px;
        background-color: red;
    }
    main .center {
        background-color: deepskyblue;
        width: calc(100% - 400px);
    }
    main .right {
        width: 200px;
        background-color: greenyellow;
    }
</style>
<header>header</header>
<main>
    <div class="left">左侧内容</div>
    <div class="center">中间内容</div>
    <div class="right">右侧内容</div>
</main>
<footer>footer</footer>
Flex布局实现
css 复制代码
header, footer {
    height: 50px;
    line-height: 50px;
    text-align: center;
}
header {
    background-color: slateblue;
}
footer {
    background-color: slategray;
}
main {
    height: calc(100vh - 100px);
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}
main div {
    display: flex;
    align-items: center;
    justify-content: center;
}
main .left, main .right {
    width: 200px;
    flex-shrink: 0;
}
main .left {
    background-color: red;
}
main .right {
    background-color: greenyellow
}
main .center {
    background-color: skyblue;
    flex-grow: 1;
}
相关推荐
陪我去看海34 分钟前
被要求猛出小程序,做了这个多平台多环境的部署替我承受压力
前端·微信小程序·抖音小程序
Frag0ut1 小时前
告别插件时代:HTML5 视频播放对比 Flash/Silverlight/ActiveX 的性能与技术优势解析
前端·html5·视频播放·flash·activex·流媒体技术·silverlight
用户818618028001 小时前
MongoDB文档模型设计——从建模到索引
前端
無名路人1 小时前
小程序点餐页吸顶滚动之分类按需加载,上划切换
前端·vue.js·微信小程序
竹林8182 小时前
把神经网络塞进一个浏览器标签页:端侧视觉 AI 的工程真相
前端·浏览器
乘风gg2 小时前
别跟风 AI 副业,工程师最该学的是 AI Coding
前端·ai编程·claude
Frag0ut2 小时前
深度解析:Chrome 自启动与后台常驻服务的作用、关闭方法及利弊权衡
前端·chrome
OpsEye3 小时前
当企业不再只关心能不能调用模型,而是关心值不值得调用
javascript·ai编程
Amos_Web3 小时前
Rspack 源码解析(十五):Loader Runner 与 JS Loader 桥接
前端·rust·前端框架
YIAN3 小时前
从 SSE 流式到结构化输出:LangChain 三大 OutputParser 与 ToolCall 方案全实战
前端·langchain·node.js