什么是布局

在说三大布局之前我们先说说什么是布局:把页面分成一块一块,按左中右、上中下等排列

现在的布局分类有两种:

  1. 固定宽度布局,一般宽度为960/1000/1024px
  2. 不固定宽度布局,主要靠文档流的原理来布局

还有一种就是响应式布局,这种布局要考虑到手机端的布局,在pc端固定,在手机端不固定

布局的思路:

  1. 由大到小,先定下大局再完善小部分,一般老手使用这种办法
  2. 由小到大,先完成小部分,再组合成大布局,新手推荐

前端戒律:

  1. 在布局的时候千万不要将界面写死,永远不要把width和height写死,除非有特殊说明
  2. 在写margin,padding等一些可以组合写的时候除非特说需要,尽量不要写在一起,建议分开,如:margin-top 或 padding-bottom。
  3. 必须要有设计稿再开始写页面,如果没有设计稿而自己装x的编写,那是在坑自己
  4. 如果没有设计稿,就自己画设计稿,经过老板同意之后再编写
  5. 如果设计师给了一份设计稿,而又让你写pc端的和移动端的时,“不给设计稿我写个P”,!!!!注意这是底线,如果让步你的996就要开始了

如何决定使用何种布局

再决定用何种布局时要根据两点是否兼容IE9是否兼容最新浏览其 下面给出图

float:当需要兼容IE浏览器时使用float布局,当使用float布局时不需要考虑移动端,因为手机上没有人用IE浏览其

flex布局:当不需要兼容IE浏览器又不需要兼容最新浏览器时可以使用flex布局

grid:当只兼容最新浏览器时可以使用grid布局

必要时可以使用负margin来布局,这里做个提醒

给饥人谷打一波广告,嘿嘿。饥人谷官网

float布局

  1. 通过改变子元素的float:left/right值来让元素布局,需要时可以在子元素上加上width
  2. 当子元素浮动之后会造成父元素塌陷的情况,需要在父元素上加上clearfix:after来清除浮动(我的另一篇博客有写)

一颗喜糖:IE浏览其中float布局中的文档流,浮动,定位和清除浮动(clearfix)详解​zhuanlan.zhihu.com

经验:

  1. 有经验者会留-些空间或者最后一个不设width
  2. 不需要做响应式,因为手机上没有IE,而这个布局是专门为IE准备的
  3. IE 6/7存在双倍margin bug,解决办法有两个一是将错就错,针对IE 6/7把margin减半,二是神来一笔,再加一个display: inline-block,为什么可以这样?你问我,我问谁,老师就是这么教的,经验
  4. 加上头尾,即可满足所有PC页面需求
  5. 手机页面傻子才用float
  6. float要程序员自己计算宽度,不灵活
  7. float用来应付IE足以

实践:

  1. 用float做两栏布局(如顶部条)
  2. 用float做三栏布局(如内容区)
  3. 用float做四栏布局(如导航)
  4. 用float做平均布局(如产品展示区)

这里给出老师的代码:

JS Bin​js.jirengu.com

flex布局

当使用flex布局的时候涉及到两个东西,容器container和项目items

container:父元素为container,通过给父元素container加样式可以改变其内部items的布局

items:container内的子元素为items

让一个元素变成container的方法:让display:flex就可以了

下面给出我整理的在container加的样式来改变内部container的方法

.container{/*or display:inline—flex(区别跟block和inline-block区别一样),让一个元素变为flex容器*/display:flex;/*改变items的流向*/flex-direction:row;   /*默认的从左到右依次排开*/flex-direction:row-reverse; /*从右到左依次排开*/flex-direction:column;   /*从上到下依次排开*/flex-direction:column-reverse; /*从下到上依次排开*//*是否折行*/flex-wrap:nowrap; /*默认是不折行的,弹性排版*/flex-wrap: wrap; /*折行*/flex-wrap: wrap; /*从下到上排版,然后折行*//*主轴的对齐方式*/justify-content: flex-start; /*默认样式,从开始的地方开始排,尽量往后靠*/justify-content: flex-end;  /*从最后开始排,尽量往后靠*/justify-content: center;  /*尽量往中间靠*/justify-content: space-around; /*把空间放到周围*/justify-content: space-between; /*把空间全部放到中间*/justify-content: space-evenly; /*把空间平均分*//*次轴的对齐方式*/align-items:stretch; /*默认的样式,默认拉到跟最长的一样长*/align-items:flex-start;/*都往上顶*/align-items:flex-end; /*都往下顶*//*多行对齐*/align-content:flex-start; /*都往上顶,把多余的空间放到下面*/align-content:flex-end; /*都往下顶,把多余的空间放到上面*/align-content:center; /*把多余的行高放到两边*/align-content: stretch; /*把多余的空间平均分配*/align-content: space-between; /*把多余的空间放到两边*/align-around: space-around; /*把多余的空间放到周围*/}

下面给出items的样式

.item{/*用order排列*/order:1; /*可以用order来从小到大排列,默认是0,*//*控制item所占的分数*/flex-grow:1; /*让item的这个值都为相同的时候会平均分配空间*//*flex-shrink控制如何变瘦*/flex-shrink:0;  /*当页面缩小到要挤压当前item时,我不缩小,我的兄弟元素先缩小*//*控制基本宽度*/flex-basis:100px;   /*可以用align-self来定制align-items*/align-self:flex-end;
}

由于属性太多我在这里给出常用的几种:

  1. display: flex
  2. flex-direction: row | column
  3. flex-wrap: wrap
  4. just-content: center I space- between
  5. align-items: center

还有一个练习flex布局的小游戏,建议玩通关,有助于熟悉flex布局

Flexbox Froggy​flexboxfroggy.com

关于flex布局的详细可以参考 CSS tricks:

https://css-tricks.com/snippets/css/a-guide-to-flexbox/​css-tricks.com

grid布局

关于grid布局的详情也可以参考CSS tricks:

https://css-tricks.com/snippets/css/complete-guide-grid/​css-tricks.com

grid布局也分container和items,使一个容器成为container的方法是display:grid/inline-grid

当一个元素变为grid的container容器时,可以通过两个属性来划分,下面给出官网的截图

当一个元素被划分后就成了网格装,其中每根线都有编号,如上图,grid布局的具体样式太多
同样下面给出我整理的样式:

.container{/*让一个东西成为Grid的container*/display:grid | inline-grid; /*划分一个container的区域,使他成为三行五列*//*每一行的宽度*/grid-template-columns: 40px 50px auto 50px 40px;/*每一列的宽度*/grid-template-rows: 50px 80px auto;/*也可以通过分数来分*//*把宽平均分成三份*/grid-template-row: 1fr 1fr 1fr;/*把列平均分成两份*/grid-template-column: 1fr 1fr;/*空隙*/grid-gap:12px;/*空隙12px*//*也可以来设置上下和左右grid-column-gap和 grid-row-gap*/
}.items{/*横向从第几根线开始*/grid-row-start:1;/*横向从第几根线结束*/grid-row-end:4;/*纵向从第几根线开始*/grid-column-start:1;/*纵向从第几根线结束*/grid-column-end:4;}
/*页面中有:header,aside,main,div,footer*//*用grid-template-areas来布局*/
.container{grid-template-areas:"header header header""aside main ad""footer footer footer"/*如果想空着可以用.来代替*/
}
header{/*让header占据header的位置*/grid-area:header;
}   

grid布局属于比较超前的布局,可能会在未来使用,这种布局更为简单,可以把前端的门槛降低,嘤嘤嘤!!!。

关于grid布局的属性也有一个小游戏来帮助我们练习(反正我是通关了,嘿嘿):

Grid Garden​cssgridgarden.com

现在大部分都是用的flex布局,可以去找找psd图来练习练习,一两张就可以,过多也不好,最后祝大家,事业有成,家庭美满,求赞!!!。

css grid随页面大小_前端三大布局,float,flex,grid的介绍。相关推荐

  1. css grid随页面大小_前端开发中各种设置CSS间距的优点缺点及实例「实践」

    前言 如果两个或多个元素很接近,那么用户就会认为它们以某种方式属于彼此.当对多个设计元素进行分组时,用户可以根据它们之间的空间大小来决定它们之间的关系.没有间距,用户将很难浏览页面并知道哪些内容相关而 ...

  2. css grid随页面大小_你现在可以玩下这 5 个 CSS 新功能

    在浏览器开始实现它们之前,CSS 新的功能通常需要经过长时间讨论之后,才在W3联盟的规范中定义.有许多值得一提的 CSS 新功能,但是在本文中,我们重点介绍可以浏览器的稳定版中进行测试的五个功能: C ...

  3. anguler 画面布局适应屏幕大小_前端开发常见的五大布局模式,绝对不要错过这篇分享!...

    点击上方蓝字关注我哦前端五大常见布局 前端5种常见布局方式 作为前端开发工程师,布局方式有多种,对于不同的场景可以使用不同的布局方式,但是很多刚参加工作的同学对于这些不是很了解,那么我们就先来简单的来 ...

  4. bootstrap 页面垂直居中_前端布局之——水平垂直居中

    其他平台文章地址 github: 前端布局之--水平垂直居中 · Issue #3 · yaodebian/blog​github.com csdn: https://blog.csdn.net/Ya ...

  5. html设置页面大小_如何将Word文档页面大小设置为16开?

    某大学毕业生在对其毕业论文进行排版时,要求将纸张大小设置为16开,但Word默认的纸张大小为A4纸,如何将页面大小设置为16开? 1解决方案 通过设置"纸张大小"功能,将其页面设置 ...

  6. python 生成pdf页面大小_(Python)更改使用xtopd生成的PDF文件的页面大小和格式

    我想用Python转换xlsx.我使用tablib和xtopdf模块构建了一个结构良好的表.工作出色!不幸的是,内容不适合一个pdf页面.所以我想把页面大小和格式改成水平A3.但我不知道这怎么可能.我 ...

  7. centos调整页面大小_这2种方法都能调整PDF文档的纸张大小

    PDF文件大家都很熟悉了,在工作中是经常会遇到的,但是想对PDF文件进行修改和编辑的可能很多人都觉得为难.比如当你在阅读PDF文件时,发现PDF文档的页面尺寸不是自己想要的尺寸,要如何修改PDF的纸张 ...

  8. java 设置pdf页面大小_通过Java实现对PDF页面的详细设置

    前言 下面的示例将介绍通过Java编程来对PDF页面进行个性化设置的方法,包括设置页面大小.页边距.纸张方向.页面旋转等.这里有如下多种页面大小尺寸可供选择: 同时,设置文档内容旋转时,可支持如下角度 ...

  9. Css 弹性布局(Flex)详细介绍(Flex 属性详解、场景分析)

    目录​​​​​​​ 前言 Flex 布局是什么? Flex 简介 Flex 容器属性 Flex 基本使用 场景一 flex-direction 场景二 justify-content align-it ...

  10. css grid随页面大小_CSS中的间距知识总结,前端开发中各种间距的使用及优缺点

    本文经作者授权翻译,来源:https://ishadeed.com,作者:Ahmad Shadeed 如果两个或多个元素很接近,那么用户就会认为它们以某种方式属于彼此.当对多个设计元素进行分组时,用户 ...

最新文章

  1. LeetCode中等题之无重复字符的最长字串
  2. RxJava debounce()和throttleWithTimeout()
  3. vue-cli ——解决多次复用含有Echarts图表组件的问题
  4. 使用 ASP.NET 配置类
  5. sessionlistener方法中获取session中存储的值报空指针异常_从Golang实践中得到的教训...
  6. Cocoa Touch国际化
  7. Bash游戏 V2(51Nod-1067)
  8. Python(6)-文件和异常
  9. Alibaba Druid 源码阅读(二) 数据库连接池实现初步探索
  10. Marlin代码分析一些记录
  11. 【JVM】Object obj = new Object()
  12. oracle笔记:新手上路必备。花了两天时间整理出来的,详细的不能再详细了。
  13. 11-golang流程控制
  14. 安装麦咖啡8.7出现--错误1920,怎么办? 解决办法
  15. 如何在App过审之后进入解决方案中心
  16. 微信公众号页面跳转APP或小程序遇到的问题
  17. 八、CISP 教材缩略语(2019 版)
  18. 《思辨与立场》听书笔记
  19. C++ 内存对齐详解加配图分析
  20. 基于javaweb+mysql的健身房健身俱乐部管理系统(前台、后台)

热门文章

  1. js高级学习笔记(b站尚硅谷)-6-IIFE
  2. alias 为命令定义别名、unalias删除别名
  3. python从js文件中取数据_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程...
  4. linux 截图软件安装,Ubuntu 安装截图工具Shutter,并设置快捷键 Ctrl+Alt+A
  5. linux 中特殊权限,Linux SetGID(SGID)文件特殊权限用法详解
  6. php 判断邮箱_php检测邮箱地址是否存在
  7. java中两个数交换的4种方式
  8. c语言文本作图输出爱心,C语言程序设计——文本作图简案(3页)-原创力文档...
  9. lcm模块 oracle,lcm模组有哪些配件组成
  10. 对于通用计算机而言,《计算机操作系统》第二次作业