微信小程序布局篇课程构思----Position+Flex
简单的回顾屏幕适配
整体观思考布局问题
一 Flex布局
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?^%$
1.Flex 布局是什么?
Flex 是 Flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为 Flex 布局,行内元素也可以使用;
.box{display: flex;/*display: inline-flex; */
}
相关知识点:
1.行内元素:行内元素适合显示具体内容,而块级元素适合做布局
2.行内元素可以与块级元素通过Display相互转换
3.设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。
2.Flex重要概念
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称”项目”。
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
3.容器的属性
6个重要属性
flex-direction flex-wrap flex-flow justify-content align-items align-content
(1).flex-direction
属性决定主轴的方向(即项目的排列方向)。
- row(默认值):主轴为水平方向,起点在左端。
- row-reverse:主轴为水平方向,起点在右端。
- column:主轴为垂直方向,起点在上沿。
- column-reverse:主轴为垂直方向,起点在下沿。
.box {flex-direction: row | row-reverse | column | column-reverse;
}
(2).flex-wrap属性
默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
- nowrap(默认):不换行,每个项目都会压缩差不多等比例缩小
- wrap:换行,第一行在上方。
- wrap-reverse:换行,第一行在下方。
(3).flex-flow属性
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
(4) justify-content属性
justify-content属性定义了项目在主轴上的对齐方式。
它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。
- flex-start(默认值):左对齐
- flex-end:右对齐
- center: 居中
- space-between:两端对齐,项目之间的间隔都相等。
- space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
(5)align-items属性
它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。
- flex-start:交叉轴的起点对齐。
- flex-end:交叉轴的终点对齐。
- center:交叉轴的中点对齐。
- baseline: 项目的第一行文字的基线对齐。
- stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
(6)align-content属性
align-items和align-content有相同的功能,不过不同点是它是用来让每一个单行的容器居中而不是让整个容器居中,
align-content属性只适用于多行的flex容器,并且当侧轴上有多余空间使flex容器内的flex线对齐。
- flex-start:交叉轴的起点对齐。
- flex-end:交叉轴的终点对齐。
- center:交叉轴的中点对齐。
- baseline: 项目的第一行文字的基线对齐。
- stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
知识点:
flex布局中align-items 和align-content的区别
4.项目的属性
- order 定义项目的排列顺序。数值越小,排列越靠前,默认为0。
- flex-grow 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
- flex-shrink 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。
- flex-basis flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
- flex flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
- align-self align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
.item {align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
该属性可能取6个值,除了auto,其他都与align-items属性完全一致。
二.Position:absolute —–绝对布局
- 绝对定位的第一个特征在于会从文档流中脱离,不受其他元素影响,定位是“绝对”的,所以称之为绝对定位,如果是相对定位,会受其他元素影响,则定位是“相对”的;
- 生成绝对定位的元素,相对于 static 定位以外的相对于第一个具有定位属性的祖先元素进行定位。
- 元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
- 标准文档流:说白了就是一个“默认”状态。文档流指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。并最终窗体自上而下分成一行行,并在每行中从左至右的顺序排放元素。
.top-left {position: absolute;background-color: red;margin-top: 50rpx;margin-left: 50rpx;
}.top-right {position: absolute;background-color: yellow;margin-top: 50rpx;margin-right: 50rpx;top: 0rpx;right: 0rpx;
}.bottom-left {position: absolute;background-color: orange;bottom: 0rpx;left: 0rpx;margin-bottom: 50rpx;margin-left: 50rpx;
}.bottom-right {background-color: blueviolet;position: absolute;bottom: 0rpx;right: 0rpx;margin-bottom: 50rpx;margin-right: 50rpx;
}
设问:
- 如果去掉”left”, “top”, “right” 以及 “bottom” 属性布局会怎么样
- 如果去掉”left”, “top”, “right” 以及 “bottom” 属性布局margin-top,margin-bottom,margin-left,margin-right会怎么样
- 如何实现布局居中
- 绝对定位精解
三.Position:Relative —–相对定位
- 如何定位?
每个元素在页面的普通流中会“占有”一个位置,这个位置可以理解为默认值,而相对定位就是将元素偏离元素的默认位置,但普通流中依然保持着原有的默认位置。(在父级节点的content-box区定位,父级节点有文字的话,元素的默认位置则是紧随文字) - 不会改变行内元素的display属性。
- 并没有脱离普通流,只是视觉上发生的偏移。
四.z-index:重叠 —帧布局
z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
注释:元素可拥有负的 z-index 属性值。
注释:Z-index 仅能在定位元素上奏效(例如 position:absolute;)!
微信小程序布局篇课程构思----Position+Flex相关推荐
- 微信小程序css篇----定位(position)
昨天2017的微信公开课pro如期进行了,小程序将于2017年1月9日对个人开放,公司项目的demo版做了个大概,过程中花的时间最多的还是页面布局,所以后面将花一段时间将css的属性在小程序里过一篇, ...
- 微信小程序实战篇:实现抖音评论效果
IT实战联盟博客:http://blog.100boot.cn 我们在写小程序的时候经常会遇到弹出层的效果而现有官网提供的跳转方法多数是不支持参数传递的.本文教大家做一个抖音评论效果的小程序 首先看下 ...
- 微信小程序实战篇-购物车
哈喽,大家好,快半个月没写了,现在提笔都有点生硬了,一直没更新的原因,一个是代码君也要上班,加上最近工作比较忙,还有就是写文章一直未被认可,所以没什么动力再创作了,那时真的坚持不下去,打算放弃了,感谢 ...
- 微信小程序实战篇-商品详情页(二)
今天要讲解商品详情页中sku的弹出选着框,这个涉及css动画样式,css动画是新的知识点,我们之前并没有接触过,请大家做好笔记,我们要做的效果是酱紫的~ 这个布局难点是需要绘制一个阴影背景.弹出的动画 ...
- 微信小程序实战篇:商品属性联动选择(案例)
本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点奶茶. 效果演示: 商品属性联动.gif 代码示例 1.commodity.xml <!-- <v ...
- 前端微信小程序实战篇
电商底部导航栏的制作 我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个人 ...
- 《微信小程序-基础篇》初识微信小程序
大家好,好久不见了,前段时间各种原因分享不稳定,后面一段时间内参与了主站的原力计划,请麻烦各位支持一下,万分感谢- 本系列将从零开始介绍微信小程序的开发,介绍完基础以后会实际同步开发一个微信小程序的项 ...
- 微信小程序实战篇-电商(一)
哈喽,大家好,端午节过的怎么样啊,代码君可是没休息,专心的写电商文章哦,也是蛮拼的,如果对代码君认可的话,欢迎点赞转发,你们的点赞转发是对我最大的支持!好啦,言归正传,我们今天要讲解微信小程序的实战篇 ...
- 微信小程序第二篇实战
title: 微信小程序第二篇实战 date: 2018-03-08 02:33:00 tags: WeChat category: WeChat description: 微信小程序第二篇实战 效果 ...
最新文章
- JS字符串 window.open() window.opener window.name window对象总结
- WF4.0进行单元测试
- python opencv 透视变换
- 台湾大学林轩田机器学习技法课程学习笔记13 -- Deep Learning
- Windows的三种坐标系:屏幕坐标系,非客户区坐标系,客户区坐标系
- mysql left join 结果怎么这么慢
- linux获取笔记本摄像头视频,如何在windows下用ffmpeg抓取笔记本电脑摄像头视频
- SpringBoot 自带工具类~ReflectionUtils
- linux命令取数字前两位,linux中head命令使用详解(显示开头数量的文字块)
- ofdm误码率仿真代码_共享源代码之MSK仿真(1)
- Mysql 索引(学习笔记十二)
- Spring Boot使用AOP在控制台打印请求、响应信息
- test和read命令
- python编程方式_python的两种编程方式是什么
- bat脚本学习——拖拽文件到bat下载
- mysql命令分号_MySql常用命令:注意命令后面的分号!
- 鹿晗关晓彤公布恋情阿里云服务器救场 这位微博程序员新婚还加班
- 零基础入门金融风控-贷款违约预测_Task1
- 在职计算机培训班,计算机科学与技术在职研究生招生院校有哪些?
- 7个 优秀的远程“结对编程“编码工具
热门文章
- 能与PowerDesigner媲美的数据库建模工具PDMan
- WRF系列教程3:嵌套方式总结
- Unity游戏优化指南大全(持续更新中!)
- 议题预告 | Pulsar Summit Asia 2022:Day 2 - 英文演讲
- python 实现文章中词汇的频率统计并进行显示(针对英文文章)
- java 做的原神抽卡模拟小程序
- vivado 综合与实现
- opencv-python立体匹配(极线校正)
- android opencv hu moment,Opencv计算一幅图像的hu矩
- Linux搭建SVN服务器,并内网穿透实现公网远程访问