css常见布局方式

这篇具有很好参考价值的文章主要介绍了css常见布局方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、前言

CSS 的布局应该是 CSS 体系中的重中之重,主要的布局方式有 table 表格布局(早期),float 浮动布局、position布局和 flex 布局。

实现效果如下:
css常见布局方式

1、两栏布局

指的是左边固定,右边自适应。

1.1 浮动 + margin

先将左元素设置定宽为100px,并左浮动。
然后给右元素设置margin-left,值等于左元素的宽度。

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .left {
      width: 200px;
      height: 200px;
      background-color: #f00;
      float: left;
    }

    .right {
      height: 200px;
      background-color: aqua;
      margin-left: 100px;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="right"></div>
  </div>
</body>

</html>

1.2 浮动 + BFC(overflow: hidden)

触发BFC后,右元素就会环绕着浮动的元素,不会被浮动的元素所覆盖。

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .left {
      width: 200px;
      height: 200px;
      background-color: #f00;
      float: left;
    }

    .right {
      height: 200px;
      background-color: aqua;
      overflow: hidden
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="right"></div>
  </div>
</body>

</html>

1.3 定位 + margin-left

先给父元素设置position: relative、左子元素设置position: absolute,然后给左子元素设置left: 0
并设置宽度,然后给右子元素设置 margin-left,值等于左子元素的宽度。

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      position: relative
    }

    .left {
      width: 200px;
      height: 200px;
      background-color: #f00;
      position: absolute;
      left: 0;
    }

    .right {
      height: 200px;
      background-color: aqua;
      margin-left: 200px;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="right"></div>
  </div>
</body>

</html>

1.4 给父容器设置flex布局,左盒子固定宽度,然后给右子元素设置 flex: 1。

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      display: flex;
    }

    .left {
      width: 200px;
      height: 200px;
      background-color: #f00;
    }

    .right {
      height: 200px;
      background-color: aqua;
      flex: 1;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="right"></div>
  </div>
</body>

</html>

1.5 table布局

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* table布局:(display:table-cell后)子级容器默认是自动平分宽度沾满父级容器; */
    .container {
      display: table;
      height: 300px;
      width: 100%;
    }

    .left {
      display: table-cell;
      /* 定宽 */
      width: 200px;
      /*height: 100% 因为未脱离文档流,所以不用设置高度也行*/
      background-color: chartreuse;
    }

    .right {
      /*height: 100% 因为未脱离文档流,所以不用设置高度也行*/
      display: table-cell;
      background-color: coral;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>

    <div class="right"></div>
  </div>
</body>

</html>

2、三栏布局

顾名思义就是两边固定,中间自适应。

实现效果如下:
css常见布局方式

2.1 float布局

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .left {
      float: left;
      width: 100px;
      height: 200px;
      background-color: red;
    }

    .right {
      float: right;
      width: 100px;
      height: 200px;
      background-color: blue;
    }

    .center {
      background-color: aqua;
      height: 200px;
      margin-left: 100px;
      margin-right: 100px;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="right"></div>
    <div class="center"></div>
  </div>
</body>

</html>

2.2 position布局

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .left {
      position: absolute;
      left: 0;
      width: 200px;
      height: 200px;
      background-color: red;
    }

    .right {
      position: absolute;
      right: 0;
      width: 200px;
      background-color: blue;
      height: 200px;
    }

    .center {
      position: absolute;
      left: 200px;
      right: 200px;
      background-color: aqua;
      height: 200px;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="center"></div>
    <div class="right"></div>
  </div>
</body>

</html>

2.3 flex布局

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      display: flex;
    }

    .left {
      width: 200px;
      height: 200px;
      background: red;
    }

    .right {
      width: 200px;
      height: 200px;
      background: blue;
    }

    .center {
      /* margin: 0; */
      background-color: aqua;
      width: 100%;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="center"></div>
    <div class="right"></div>
  </div>
</body>

</html>

2.4 table布局

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      width: 100%;
      display: table;
    }

    .left,
    .center,
    .right {
      display: table-cell;
    }

    .left {
      width: 200px;
      height: 200px;
      background-color: aqua;
    }

    .center {
      height: 200px;
      background-color: red;
    }

    .right {
      width: 200px;
      height: 200px;
      background-color: blue;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="center"></div>
    <div class="right"></div>
  </div>
</body>

</html>

2.5 网格(gird)布局:

代码如下:文章来源地址https://www.toymoban.com/news/detail-495931.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      width: 100%;
      display: grid;
      grid-template-rows: 200px;
      grid-template-columns: 200px auto 200px;
    }

    .left {
      background-color: aqua;
    }

    .center {
      background-color: red;
    }

    .right {
      background-color: blue;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="left"></div>
    <div class="center"></div>
    <div class="right"></div>
  </div>
</body>

</html>

3、总结

布局方式 优点 缺点
浮动布局 兼容性好,支持大多数浏览器;可以实现多列布局。 容易出现清除浮动问题,需要额外的样式规则来处理;不太适合复杂的布局需求,例如垂直居中和等高布局。
定位布局 灵活性较高,可以精确控制元素的位置;可以实现重叠布局效果。 对于复杂布局,需要手动计算和调整元素的位置和尺寸。当元素的位置改变时,可能需要手动调整其他相关元素的位置。
表格布局 可以实现简单的等高布局和垂直居中;兼容性良好,支持大多数浏览器。 结构复杂,不适用于非表格内容的布局;语义化不强,使用表格元素来布局非表格内容不符合标准。
弹性盒子布局 简单易用,可以快速实现自适应布局;支持灵活的对齐和排列方式;适用于响应式设计。 在某些情况下,对于复杂布局需求可能需要额外的样式规则。
网格布局 提供了强大的网格系统,可以实现复杂的布局;可以方便地进行元素的放置和对齐;支持自适应和响应式设计。 兼容性方面,部分较老的浏览器对网格布局支持较差。

到了这里,关于css常见布局方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【CSS弹性盒模型 display:flex;常用参数及常见的布局】

    display:flex; 是CSS中用于创建弹性盒子布局的属性,其常见的各种参数及用法包括: flex-direction 指定主轴的方向,可以是row(水平方向)、column(垂直方向)等。 justify-content 定义在主轴上的对齐方式,可以是flex-start(靠近起点)、flex-end(靠近终点)、center(居中对齐)、s

    2024年02月13日
    浏览(41)
  • CSS中的栅格布局

    在写前端项目的时候,我之前一直习惯使用flex布局,flex布局写起来比较随心,几乎可以实现任意形式的页面布局。不过自从B占看到某位大佬的grid布局后,发现布局居然还可以这么玩,正好自己在写一个vue3的项目,需要写几个大屏展示方案,用栅格布局实现了一下,发现真

    2024年02月07日
    浏览(31)
  • css中的grid高频布局

    1.一个父级容器内有n个子元素; 2.每个子元素最小宽度是100px; 3.每个子元素最大宽度根据屏幕宽度自适应; 4.每个子元素的宽度保持同宽; 5.每个元素之间有间隔,每一行的两边不留间隙,每一列的上下不留间隙; 6.每个子元素中的文本超出之后省略显示; css排版常见布局

    2024年02月04日
    浏览(53)
  • CSS三栏布局的几种自适应的排版方式

       CSS三栏布局的几种方式,主要有 float、position、flex实现。    对红色、蓝色 box 设置 float,绿色不设。    可见,结果绿色box好像消失了,其实是由于没有设置 float的情况下,它依然保持块级元素的属性。因此蓝色box在绿色box的元素下排列。    把绿色块元素移到最

    2024年02月16日
    浏览(39)
  • 【前端】CSS(引入方式+选择器+常用元素属性+盒模型+弹性布局)

    层叠样式表(Cascading Style Sheets) 对元素位置的排版进行精确控制,实现结构和样式的分离 CSS 控制页面的展示效果 HTML决定页面的结构 选择器+{一条/N条声明} 选择器:要修改谁 声明:具体要修改什么内容。声明的属性是键值对,用分号区分,键和值用: 通常情况下,把style放

    2024年04月15日
    浏览(51)
  • css三角和css 用户见面样式,vertical-align 属性应用,溢出的文字省略号显示,常见布局技巧

    目录 3.CSS三角  4.CSS 用户界面样式 4.1什么是界面样式  4.2轮廓线 outline  4.3 防止拖拽文本域 resize  5.vertical-align 属性 5.1图片,表单都属于行内块元素,默认的vertical-align 是基线对齐。 5.2解决图片底部默认空白缝隙问题 6.溢出的文字省略号显示 1.单行文本溢出显示省略号--必须

    2023年04月09日
    浏览(46)
  • Css Flex 弹性布局中的换行与溢出处理方法

    Css Flex 弹性布局中的换行与溢出处理方法 CSS弹性布局(Flex)是CSS3中的一种新的布局方式,它能够帮助我们更加灵活地布局元素。在Flex弹性布局中,元素的布局仅依赖于父容器的设置,而不再需要复杂的相对或绝对定位。本文将详细介绍Flex布局中的换行与溢出处理方法,并

    2024年02月07日
    浏览(47)
  • CSS 中有五种常见的定位方式--详解

    1. 静态定位(Static):元素的默认定位方式。在静态定位下,元素根据正常文档流进行布局,并不受到 top、left、bottom、right 等属性的影响。 HTML: CSS:   2. 相对定位(Relative):通过设置元素的位置属性(如 top、left、bottom、right)来相对于其在正常文档流中的位置进行定位。

    2024年02月11日
    浏览(35)
  • 【移动端网页布局】Flex 弹性布局案例 ② ( 顶部固定定位搜索栏 | 固定定位盒子居中对齐 | 二倍精灵图设置 | CSS3 中的垂直居中对齐 )

    需求 : 制作如下搜索栏 ; 首先 , 设置固定定位 , 固定定位盒子始终显示在浏览器中指定的位置 , 与父容器或其它容器无关 ; 然后 , 设置固定定位盒子垂直方向位置 , 设置为 top: 0; 紧贴顶部 ; 再后 , 设置 left: 50% 样式 , 将盒子左侧设置到中心位置 , 这个 50% 是相对于父容器的 比

    2024年02月05日
    浏览(53)
  • CSS中的四种定位方式

    在CSS中定位有以下4种: 静态定位 - static 相对定位 - relative 绝对定位 - absolute 固定定位 - fixed 静态定位是css中的默认定位方式,也就是没有定位。在此定位方式中设置:top,bottom,left,right,z-index 这些属性都是无效的。 相对位置前的位置: 相对位置后的位置: 可以看到该

    2024年02月08日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包