前端面试题宝典

使用 flex 实现几种常用布局(一)

大家好,我是雷布斯。

网页布局是前端面试中很常见的面试方向,传统的布局方案是基于 display + position + float属性,实现一些特殊的布局都会比较麻烦。

W3C 在 2009 年就提出了 Flex 布局,可以简便、完整、响应式地实现各种页面布局,也成为了目前主流的布局方案。

想必大家都已经很了解 Flex 的基本使用方法,今天给大家介绍几种常用的布局实现。

Sticky Footer

首先来看看经典的上-中-下布局。

布局特点:

  • 当页面内容高度小于可视区域高度时,footer 吸附在底部;
  • 当页面内容高度大于可视区域高度时,footer 被撑开排在 content 下方

大家有实现思路吗?

其实使用 flex 实现很简单,咱们也不卖关子,直接贴出代码:

<body>
  <header>HEADER</header>
  <article>CONTENT</article>
  <footer>FOOTER</footer>
</body>
body {
  min-height100vh;
  display: flex;
  flex-direction: column;
}
article {
  flex: auto;
}

是不是很简单?

flex: auto;flex:1 1 auto; 的简写,有剩余空间就放大,空间不够就缩小。

那么它和 flex: 1; 有什么区别呢,大家可以思考下。

Fixed-Width Sidebar

上-中-下布局的基础上,加上左侧定宽 sidebar。

我们依旧可以使用 flex: auto实现。

<body>
  <header>HEADER</header>
  <div class="content">
    <aside>ASIDE</aside>
    <article>CONTENT</article>
  </div>
  <footer>FOOTER</footer>
</body>
body {
  min-height100vh;
  display: flex;
  flex-direction: column;
}
.content {
  flex: auto;
  display: flex;
}
.content aside {
  width100px;
}
.content article {
  flex: auto;
}

Sidebar

左边是定宽 sidebar,右边是上-中-下布局。

<body>
  <aside>ASIDE</aside>
  <div class="content">
    <header>HEADER</header>
    <article>CONTENT</article>
    <footer>FOOTER</footer>
  </div>
</body>
body {
  min-height100vh;
  display: flex;
}
aside {
  flex: none;
}
.content {
  flex: auto;
  display: flex;
  flex-direction: column;
}
.content article {
  flex: auto;
}

Sticky Header

还是 上-中-下 布局,区别是 header 固定在顶部,不会随着页面滚动。

<body>
  <header>HEADER</header>
  <article>CONTENT</article>
  <footer>FOOTER</footer>
</body>
body {
  min-height100vh;
  display: flex;
  flex-direction: column;
  padding-top60px;
}
header {
  height60px;
  position: fixed;
  top0;
  left0;
  right0;
  padding0;
}
article {
  flex: auto;
  height1000px;
}

大家可能还会想到使用 sticky 替换 fixed

Sticky Sidebar

布局要点:

  • 左侧 sidebar 固定在左侧且与视窗同高
  • 当内容超出视窗高度时,在 sidebar 内部出现滚动条
  • 左右两侧滚动条互相独立
<body>
  <aside>
    ASIDE
    <p>item</p>
    <p>item</p>
    <!-- many items -->
    <p>item</p>
  </aside>
  <div class="content">
    <header>HEADER</header>
    <article>CONTENT</article>
    <footer>FOOTER</footer>
  </div>
</body>
body {
  height100vh;
  display: flex;
}
aside {
  flex: none;
  width200px;
  overflow-y: auto;
  display: block;
}
.content {
  flex: auto;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
}
.content article {
  flex: auto;
}

最后

篇幅限制,我们的第一篇先介绍到这儿。我们将在下一篇介绍其他的一些布局实现方式,比如如何单独适配最后一行的排列实现色子5的布局实现色子3的布局等布局。

还没有使用过我们刷题网站(https://fe.ecool.fun/)或者刷题小程序的同学,如果近期准备或者正在找工作,千万不要错过,我们的题库主打无广告和更新快哦~。

老规矩,也给我们团队的辅导服务打个广告。


玻璃钢生产厂家玻璃钢校园广场抽象看书人物雕塑云南玻璃钢红色文化雕塑赤水玻璃钢雕塑湘西商场美陈花器湖南户内玻璃钢雕塑订做价格玻璃钢景观雕塑免费咨询济南玻璃钢天壶雕塑商场吊顶美陈装饰重庆佛像玻璃钢雕塑什么叫玻璃钢雕塑珠海玻璃钢卡通雕塑南京拉丝玻璃钢雕塑优选企业浙江玻璃钢桃子雕塑长沙城市玻璃钢雕塑云南户外玻璃钢雕塑批发商场书屋美陈香港玻璃钢抽象雕塑五华区玻璃钢雕塑贵不贵白云玻璃钢造型雕塑佛山透明玻璃钢雕塑制作东营小区玻璃钢雕塑厂家玻璃钢恐龙雕塑制作肇庆商场玻璃钢卡通雕塑玻璃钢卡通门头雕塑设计费用四川玻璃钢雕塑供应商广州学校玻璃钢雕塑安装户外玻璃钢花盆图片济源锻铜校园玻璃钢景观雕塑公司池州定制玻璃钢雕塑优势辽宁商场主题创意商业美陈理念香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化