美文网首页
常见网页布局的介绍

常见网页布局的介绍

作者: mm_tang | 来源:发表于2020-04-07 14:49 被阅读0次

左侧固定,右侧自适应

<div class="parent">
    <div class="left">左侧的盒子</div>
    <div class="right">右侧的盒子</div>
</div>

1. 使用flex实现
.parent {
  display: flex;
}

.left {
  width: 200px;
  border: 1px solid red;
  margin-right: 10px;
}

.right {
  flex: 1; // 相当于 flex: 1 1 0 填充满剩余空间
  border: 1px solid black;
}

_____________________________________________________________________________

2.使用传统的浮动实现
.parent {
  height: 500px;
  border: 1px solid red;
}

.left {
  float: left; // 左侧固定的盒子,宽高写死,并且浮动
  height: 460px;
  width: 200px;
  border: 1px solid green;
  margin: 20px;
}

.right {
  height: 460px; // 右侧不写宽度,直接用margin-left挤出距离
  border: 1px solid blue;
  margin: 20px 20px 20px 260px;
}

右侧固定,左侧自适应

<div class="parent">
    <div class="left">左侧的盒子</div>
    <div class="right">右侧的盒子</div>
</div>
  
1.使用flex实现
.parent {
  display: flex;
}

.left {
  flex: 1;  // flex: 1 1 auto;
  border: 1px solid red;
  margin-right: 10px;
}

.right {
  width: 200px;
  border: 1px solid blue;
}

_____________________________________________________________________________

2. 使用传统的浮动实现
<div class="parent">
    <div class="right">右侧的盒子</div>
    <div class="left">左侧的盒子</div>
</div>

.parent {
  border: 1px solid black;
}

.left { // div有个默认属性,即如果不设置宽度,那他会自动填满他的父标签的宽度
  margin-right: 220px;
  border: 1px solid red;
}

.right {
  float: right; // html中right必须放在left盒子之前
  width: 200px;
  border: 1px solid blue;
}

圣杯布局(左右固定,中间自适应)

<div class="parent">
    <div class="left">左侧的盒子</div>
    <div class="center">中间的盒子</div>
    <div class="right">右侧的盒子</div>
</div>

1.flex布局
.parent {
  display: flex;
}

.left {
  border: 1px solid red;
  flex: 0 0 100px; // 这里左右盒子甚至的宽度是100px
}

.center {
  flex: 1;
  border: 1px solid blue;
}

.right {
  flex: 0 0 100px;
  border: 1px solid red;
}

_____________________________________________________________________________

2.使用浮动+margin实现
<div class="parent">
    <div class="left">左侧的盒子</div>
    <div class="right">右侧的盒子</div>  // 浮动的盒子要放到标准流盒子的右侧
    <div class="center">中间的盒子</div>
</div>

.left, .center, .right{
    height: 200px;
}

left {
  width: 200px;
  border: 1px solid red;
  float: left; // 左右盒子都写死宽高并浮动
}

.center {
  margin-left: 220px; // 使用左右margin值挤出自己的位置
  margin-right: 220px;
  border: 1px solid blue;
}

.right {
  width: 200px;
  float: right;
  border: 1px solid red;
}

_____________________________________________________________________________

3.使用margin 负边距+padding来实现
<div class="parent">
    <div class="center">中间的盒子</div>
    <div class="left">左侧的盒子</div>
    <div class="right">右侧的盒子</div>
</div>

.parent {
  padding-left: 100px;  // 给左右两个盒子留出位置
  padding-right: 100px;
}

.left,.center,.right {
  float: left;
  position: relative;
}

.left {
  margin-left: -100%; // 因为浮动关系,就把左边块上移到了[center]左侧,与其交织在一起,这样可以让left回到上一行最左侧
  left: -100px; // 回到父元素预留的左侧padding的位置
  width: 100px;
  border: 1px solid red;
}

.center {
  width: 100%;
  border: 1px solid blue;
}

.right {
  margin-left: -100px; // 右侧移动的是自己的宽度
  right: -100px; // 回到父元素预留的右侧的padding的位置
  width: 100px;
  border: 1px solid red;
}

中间固定 两侧自适应

<div class="parent">
    <div class="left">左侧的盒子</div>
    <div class="center">中间的盒子</div>
    <div class="right">右侧的盒子</div>
</div>

1. 使用flex实现
.parent {
  display: flex;
}

.left {
  flex: 1;
  border: 1px solid red;
}

.center {
  width: 200px;
  border: 1px solid black;
}

.right {
  flex: 1;
  border: 1px solid red;
}

_____________________________________________________________________________

2.通过绝对定位和预留padding值来实现
.parent {
  position: relative;
  box-sizing: border-box;
}

.left,.right {
  width: 50%;
  float: left;
  border: 1px solid red;
}

.left {
  padding-right: 100px; // 这是预留给中间盒子宽度的二分之一
}

.center { // 中间的盒子要水平居中到最中间,相当于是叠在左右两个盒子的上方
  width: 200px;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  border: 1px solid black;
}

.right {
  padding-left: 100px;
}

_____________________________________________________________________________

3.使用calc()函数计算实现
.parent {
  height: 200px;
}

.left,.right {
  float: left;
  height: 100%;
  width: calc(50% - 100px); // 左右两边通过calc计算实现,减去的是中间容器宽度的一般
  border: 1px solid red;
}

.center {
  width: 200px;
  float: left;
  height: 100%;
  border: 1px solid black;
}

等分布局

等分布局其实就是我们常用的百分比布局,宽度自适应,高度写死,但是这样布局不能百分比的去还原设计图,一些小的icon也需要写死,一些图片需要保持等比例缩放。

多列等高布局(依据padding占用空间)

<div class="parent">
    <div class="left">左侧的盒子</div>
    <div class="right">右侧的盒子</div>
</div>

1. 使用flex布局
// 由于flex的align-items的默认值是stretch,所以高度是等高的
// 假如想通过flex布局实现子项目的高度自适应,可以将align-items设置成flex-start
.parent {
  display: flex;
}

.left,.right {
  border: 1px solid red;
  margin-right: 10px;
  width: 100px;
}

_____________________________________________________________________________

2. 使用负边距抵消
.parent {
  width: 300px;
  border: 1px solid blue;
  overflow: hidden;
}
.left,.right {
  float: left;
  width: 100px;
  border: 1px solid red;
  padding-bottom: 2000px; // 其他比这列矮的列,会用它们的padding-bottom来补偿这部分高度差
  margin-bottom: -2000px; // 设置一个大数值的padding-bottom,再设置相同数值的负的margin-bottom
}

当我们在进行移动端开发的时候,这些页面布局是会经常使用的,希望这些小例子可以帮助大家理解~ 动动手 敲敲代码会更容易理解哦~😊

相关文章

  • 常见网页布局的介绍

    左侧固定,右侧自适应 右侧固定,左侧自适应 圣杯布局(左右固定,中间自适应) 中间固定 两侧自适应 等分布局 等分...

  • CSS布局

    前言 网页的布局有很多种,下面我来介绍一些常见的布局方式和小的Demo 单列布局 特征:中间盒子水平居中,宽度固定...

  • 常见网页布局

    1.负边距在让元素产生偏移时和position: relative有什么区别? 当margin-top、margi...

  • Flex布局-产品介绍 & 网站 & 手机页面

    前言:Flex布局能快速实现常见的几种网页布局,如九宫格类产品介绍页面,网站双飞翼布局,手机页面设计等。 关于Fl...

  • CSS-布局1-浮动三列布局

    1、三列布局需求 网页中,常见的实现3列布局,左右两边宽宽固定,中间自适应的布局。本节介绍一种,最简单的实现思路,...

  • 网页基本布局

    网页常见的几种简单布局 单列布局 两列布局 三列布局 通栏布局 单列布局 效果图: top{ }/宽度980px,...

  • CSS全面解析之二:CSS 布局

    布局的简单回溯布局重要性的介绍 常见的布局方法常见布局方法 现代化布局 flexbox 布局,核心代码如下。如果要...

  • 几种网页布局方式

    1、固定宽度布局:为网页设置一个固定的宽度,通常以px做为长度单位,常见于PC端网页。 2、流式布局:为网页设置一...

  • CSS经典布局之Sticky footer布局

    何为Sticky footer布局? 我们常见的网页布局方式一般分为header(页头)部分,content(内容...

  • 最全的常见css布局

    本文概要 本文将介绍如下几种常见的布局: 一、单列布局 常见的单列布局有两种: header,content 和 ...

网友评论

      本文标题:常见网页布局的介绍

      本文链接:https://www.haomeiwen.com/subject/fhhnphtx.html