草庐IT

前端常用布局方式大全——细致讲解

mochenxiya 2023-03-28 原文

盒模型

点击打开视频教程

标准盒模型、怪异盒模型(IE盒模型)

什么是盒模型?

盒模型的作用:规定了网页元素如何显示以及元素间的相互关系
盒模型的概念:盒模型是css布局的基石,它规定了网页元素如何显示以及元素间的相互关系。
css定义所有的元素都可以拥有像盒子一样的外形和平面空间。即都包含内容区、补白(填充)、
边框、边界(外边距)这就是盒模型。

2、盒模型是怎样组成的?

盒模型的组成部分
	content(内容区)+ padding(填充区)+ border(边框区)+ margin(外边界区)
<template>
  <div id="app">
    <div class="box"></div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {

    } 
  },
  mounted(){
    
  },
  methods:{
    
  }
}
</script>

<style scoped>
  .box{
    width: 100px;
    height: 100px;
    border: 4px solid red;
    padding: 5px;
    margin: 5px;
  }
</style>

效果:

标准盒模型的组成:宽高(content)+ padding + border + margin
怪异盒模型的组成:width(content+border+padding)+ margin

可以用css属性更改是标准盒模型还是怪异盒模型

css属性:box-sizing: border-box(怪异盒模型)/content-box(标准盒模型)

浮动布局

float 属性定义元素往哪个方向浮动。
float元素脱离了文档流,但是不脱离文本流

浮动布局主要是利用float属性来实现,可以给元素设置float属性让元素脱离文档流,然后设置left和right来边改元素在文档上的展示位置以此形成我们想要的布局方式,下面用浮动布局完成一个左右宽度固定中间自适应的三栏布局。

float实现三栏布局

<template>
  <div id="app">
    <div class="content">
      <div class="left">
        左
      </div>
      <div class="right">
        右
      </div>
      <div class="middle">
        中
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {

    } 
  },
  mounted(){
    
  },
  methods:{
    
  }
}
</script>

<style scoped>
  .content{
    width:100%;
    height:200px;
  }
  .left {
    width: 200px;
    height: 100px;
    float: left;
    background-color: red;
  }
  .right {
    width: 200px;
    height: 100px;
    float: right;
    background-color: yellow;
  }
  .middle {
    width:400px;
    height: 100px;
    margin-left:100px;
    background-color: blue;
  }
</style>

效果:

注意:使用float浮动布局middle中间的元素在html中要放在最后,否则黄色区域会换行,因为div是块级元素使用margin后右边区域也是属于它的。

注意:如果给非float元素加上宽度,一定要记得给此元素加上margin-left/right属性, 否侧非float元素会被float元素覆盖住一部份。

定位布局

定位布局是利用position来实现,可以使用absolute绝对定位移动元素的位置,使用绝对定位也会使元素脱离文档流,下面使用绝对定位实现一个三栏布局。

绝对定位实现三栏布局:

<template>
  <div id="app">
    <!-- 定位布局 -->
    <div class="content">
      <div class="positionLeft">
        左
      </div>
      <div class="positionMiddle">
        中
      </div>
      <div class="positionRight">
        右
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {

    } 
  },
  mounted(){
    
  },
  methods:{
    
  }
}
</script>

<style scoped>
  /* 定位布局 */
  .positionLeft {
    position: absolute;
    width: 200px;
    left: 0;
    top: 0;
    background-color: red;
  }
  .positionMiddle {
    background-color: blue;
    margin: 0 200px;
  }
  .positionRight {
    position: absolute;
    width: 200px;
    right: 0;
    top: 0;
    background-color: yellow;
  }
</style>

效果:

表格布局

表格是很严格的一行就是一行,一列就是一列,并且他们的位置不会发生变化,所以我们可以利用表格布局来实现我们想要的布局,在以前还没有出现这些浮动、定位属性的时候表格用的是最多的布局方式。通过给父元素设置display: table;,给子元素设置display: table-cell;即可实现三栏布局,使用表格布局还是比较方便的,几乎不需要写什么样式就可以实现。

表格布局实现三栏布局:

<template>
  <div id="app">
    <!-- 表格布局 -->
    <div class="parent">
      <div class="tableLeft">
        左
      </div>
      <div class="tableMiddle">
        中
      </div>
      <div class="tableRight">
        右
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {

    } 
  },
  mounted(){
    
  },
  methods:{
    
  }
}
</script>

<style scoped>
  /* 表格布局 */
  .parent {
    display: table;
    width: 100%;
  }
  .parent > div {
    display: table-cell;
  }
  .tableLeft {
    width: 300px;
    background-color: red;
  }
  .tableRight {
    width: 300px;
    background-color: yellow;
  }
  .tableMiddle {
    background-color: blue;
  }
</style>

效果:

flex布局

flex布局也叫弹性布局,是利用css3新出的属性display: flex实现的,
这种布局方式很方便,也不会对文档的结构改变,是当下最热门的一种布局方式,
建议每个前端开发者都要掌握。

flex布局实现三栏布局:

<template>
  <div id="app">
     <!-- flex布局 -->
    <div class="flexParent">
      <div class="flexLeft">
        左
      </div>
      <div class="flexMiddle">
        中
      </div>
      <div class="flexRight">
        右
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {

    } 
  },
  mounted(){
    
  },
  methods:{
    
  }
}
</script>

<style scoped>
  /* flex布局 */
  .flexParent{
    display: flex;
  }
  .flexLeft {
    width: 300px;
    background-color: red;
  }
  .flexRight {
    width: 300px;
    background-color: yellow;
  }
  .flexMiddle {
    flex: 1;
    background-color: blue;
  }
</style>

效果:

grid 布局(栅格布局)
百分比布局
响应式布局
等等....

如对您有帮助,请点击跳转到B站一键三连哦!感谢支持!

有关前端常用布局方式大全——细致讲解的更多相关文章

  1. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  2. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  3. 100个python算法超详细讲解:画直线 - 2

    1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva

  4. ruby-on-rails - 在 Rails 应用程序的前端获取实时日志 - 2

    在Rails3.x应用程序中,我正在使用net::ssh并向远程pc运行一些命令。我想向用户的浏览器显示实时日志。比如,如果两个命令在net中运行::ssh执行即echo"Hello",echo"Bye"被传递然后"Hello"应该在执行后立即显示在浏览器中。这是代码我在ruby​​onrails应用程序中使用ssh连接和运行命令Net::SSH.start(@servers['local'],@machine_name,:password=>@machine_pwd,:timeout=>30)do|ssh|ssh.open_channeldo|channel|channel.requ

  5. ruby - 如何在转换器插件中访问页面属性(YAML 前端) - 2

    我正在为Jekyll编写一个转换器插件,需要访问一些页眉(YAML前端)属性。只有内容被传递给主要的转换器方法,似乎无法访问上下文。例子:moduleJekyllclassUpcaseConverter关于如何在转换器插件中访问页眉数据有什么想法吗? 最佳答案 基于Jekyll源代码,无法在转换器中检索YAML前端内容。根据您的情况,我看到了两种可行的解决方案。您的文件扩展名可以具有足够的描述性,以提供您本应包含在前言中的信息。看起来Converter插件的设计就是这么基本的。如果修改Jekyll是一个选项,您可以更改Convert

  6. ruby - 构建Trie数据结构的Ruby代码讲解 - 2

    所以我从维基百科上抓取了这段ruby​​代码并做了一些修改:@trie=Hash.new()defbuild(str)node=@triestr.each_char{|ch|cur=chprev_node=nodenode=node[cur]ifnode==nilprev_node[cur]=Hash.new()node=prev_node[cur]end}endbuild('dogs')puts@trie.inspect我首先在控制台irb上运行它,每次我输出node时,每次{}都会给我一个空哈希值,但当我实际调用时该函数使用参数'dogs'字符串构建,它确实有效,并输出{"d"=>

  7. 前端实现文件上传(点击+拖拽) - 2

    一、简介之前在Vue项目中使用过element的上传组件,实现了点击上传+拖拽上传的两种上传功能。然后我就在想是否可以通过原生的html+js来实现文件的点击上传和拖拽上传,说干就干。首先是点击获取上传文件自然没的说,只需要借助input标签即可,但原生的点击上传按钮,实在是过于简陋,所以我的想法是通过一个div,模拟成上传按钮,然后监听其点击事件,通过input.click()去模拟点击真正的上传元素。然后是拖拽获取上传文件,这个稍有难度,我的想法是通过HTML5新增的drag拖放API+dataTransfer来实现文件的拖拽获取,但是由于是html5新增的,所以可能在某些低版本IE浏览器

  8. Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信) - 2

    运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid

  9. 超详细的文件操作讲解 - 2

    各位朋友们,大家好啊,今天我要分享的是关于文件操作方面的知识。文章目录为什么会有文件操作什么是文件文件操作文件指针文件的打开与关闭fopen(打开文件)fclose(关闭文件)打开文件的方式文件的顺序读写fgets函数fputc函数fgets函数fputs函数fprintf函数fscanf函数文件的非顺序读写fseek函数ftell函数rewind函数二进制读写fwrite函数`fread函数结语为什么会有文件操作那么大家可能会问:为什么会有文件操作呢?前面我们可能都了解了通讯录,我们知道当我们使用通讯录的时候我们可以添加联系人,也可以删除联系人,但是当我们退出程序之后下次再进来的时候,我们要

  10. 教你如何使用vercel服务免费部署前端项目和serverless api - 2

    一、介绍一下vercelvercel是一个站点托管平台,提供CDN加速,同类的平台有Netlify和GithubPages,相比之下,vercel国内的访问速度更快,并且提供Production环境和development环境,对于项目开发非常的有用的,并且支持持续集成,一次push或者一次PR会自动化构建发布,发布在development环境,都会生成不一样的链接可供预览。但是vercel只是针对个人用户免费,teams是收费的首先vercel零配置部署,第二访问速度比github-page好很多,并且构建很快,还是免费使用的,对于部署个人前端项目路、接口服务非常方便vercel类似于git

随机推荐