微信小程序的布局

一、盒子模型:

  margin(外边距),边框外的区域,外边距是透明的;

  border(边框),围绕在内边距和内容外的部分;

  padding(内边距),填充属性,是指内容周围的区域,内边距也是透明的;

  content(内容),盒子的实际内容,用于展示页面组件。

  在盒子模型中,确定内容位置的,是通过margin和padding这两个属性来确定的,而不是top,bottom,left,right等,这些属性在盒子模型中是失效的。

  在文档流中,通过设置margin:0 auto;使元素水平居中,此方式只适合在普通文档流情况下,在绝对定位和浮动中,元素不在属于正常文档流,因此不适用。

 

二、显示方式Display:

  display属性用来设定,元素是否显示或元素行内显示还是块级显示,以及flex布局也是需要通过设定display属性完成的。属于文档流的布局格式。

  display:none和visibility:hidden属性都可以用来指定元素是可见还是隐藏。

  display:none;隐藏某个元素的同时会释放元素占用的页面空间。

  visibility:hidden;隐藏某个元素时,元素占用的空间不被释放,元素的布局依然起作用。

值  描述
none   此元素不会被显示
block   此元素将会被显示为块级元素,前后带有换行符
inline   默认,此元素被显示为内联元素,前后没有换行符
inline-bolck 行内块元素
flex flex布局显示
list-item 此元素会作为列表显示
run-in 此元素会根据上下文作为块级元素或内联元素显示

 

 

 三、定位Position:

值   描述
absolute

生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。元素从文档流中完全删除,

元素原先在正常文档流中所占的空间会关闭,就像该元素不存在一样,如果文档流中该位置有元素,

则会出现重叠现象。绝对定位于文档流无关,因此不占据文档流空间

元素的位置通过"left"、“top”、“right”、“bottom”属性来定义。

relative

生成相对元素,相对于正常位置进行定位。依旧属于文档流中,占用文档流

中的空间。通过"left"、“top”、“right”、“bottom”属性使元素距离原位置进行偏移。

static 默认样式,没有定位,忽略样式表中"left"、“top”、“right”、“bottom”属性的影响。
fixed 生成绝对定位的元素,相对于设备显示窗口进行定位。


四、浮动Float:

  浮动属性产生之初是为了实现“文字环绕”的效果,让文字环绕图片在网页实现类似word中“图文混排”。

  定位方式:

  浮动让元素脱离正常流,向父容器的左边或右边移动直到碰到包含容器的边【经测试碰到padding即停】或者碰到其他浮动元素。文本和行内元素将环绕浮动元素。

  Note:

  1、碰到容器的边指的是容器的padding内边。

  2、浮动元素脱离正常流,意思是布局时后面元素当它不存在(文字还是当它存在,环绕其身边),但仍然在dom树上。后面的元素可能会被遮挡。

//index.wxml
<view class='view1'>红色</view>
<view class='view2'>绿色</view>
<view class='view3'>黄色</view>
//index.wxss
.view1{
  width: 300rpx;
  height: 300rpx;
  background-color: red;
    float: left;
}
.view2{
  width: 500rpx;
  height: 300rpx;
  background-color: green;
}
.view3{
  width: 300rpx;
  height: 300rpx;
  background-color: yellow;
}

 

属性值   说明
left 元素向左浮动
right 元素向右浮动
none 默认值,元素不浮动,并会显示其在文本中出现的位置
inherit 规定应该从父元素继承float属性的值

 

  浮动的包裹性和破坏性:

  包裹性:包裹性指的是元素尺寸刚好容纳内容。可以利用浮动的包裹性来达到父容器自适应内部元素宽度。

 

  破坏性:破坏性是指元素浮动后可能导致父元素高度塌陷。

  浮动破坏性原理:

  因为浮动元素被从文档正常流中移除了,父元素当然还处在正常流中,所以父元素不能被浮动元素撑大。

  清除浮动---clear属性:

  取值:

    • left:元素左侧不允许有浮动元素
    • ight:元素右侧不允许有浮动元素
    • both:元素左右两侧均不允许有浮动元素
    • none:默认值,允许浮动元素出现在两侧

  

五、Flex布局:

  盒子模型有它的不足之处,如我们需要元素垂直居中布局的时候,或者设计元素根据屏幕形式自动伸缩的响应式页面的时候,仅仅依靠盒子模型很难实现。Flex布局意即弹性布局,也被称为柔性布局,它让子项目方便的改变宽度、高度和顺序,为盒子模型提供最大的布局灵活性。Flex布局的元素大小是可伸缩的,可根据需要扩展自己的尺寸来填满可用空间。而常规的文档流布局中方向是确定的,块就是从上到下,内联就是从左到右,而在flex布局中,方向是不可预知的。

属性   参数   说明  
flex-direction

主轴方向

row:默认值,水平方向,从左到右;

row-reverse:水平方向,从右到左;

column:垂直方向,从上到下;

cokumn-reverse:垂直方向,从下到上

flex-wrap 换行属性

nowrap:默认值,不换行;

wrap:换行,由上到下排列,项目的第一行在最上方;

wrap-reverse:换行,由下到上排列,项目的第一行在最下方。

flex-flow   主轴方向和换行的缩写 rowwrap:水平方向,且换行;
justify-content   主轴线的对齐方式

flex-start:默认值,左对齐;

flex-end:右对齐;

center:居中对齐;

space-between:两端对齐,元素间隔相等;

space-around:项目等距分布在行里,两端保留项目间距一半的空间。

align-items 侧周对齐属性 

flex-start:默认值,左对齐;

flex-end:右对齐;

center:居中对齐;

baseline:项目第一行文字的基线对齐;

stretch:默认值,上下两侧对齐,将占满整个容器高度。

align-content 多行项目的对齐方式

flex-start:默认值,左对齐;

flex-end:右对齐;

center:居中对齐;

space-between:两端对齐,元素间隔相等;

space-around:项目等距分布在行里,两端保留项目间距一半的空间;

stretch:默认值,上下两侧对齐,将占满整个侧轴。

 order    顺序  数值小的排在前面,大的排在后面。
 flex-grow  放大比例  默认值为0,将元素放到到原来的几倍
 flex-shrink  缩小比例  将元素缩小到原来的几倍。
 flex-basis  根据主轴剩余空间,决定在主轴中的元素是否拉伸或者压缩 

 默认值为auto,设置为auto时不拉伸也不压缩。可以设定为固定值。

它的优先级高于对元素width的设定,当同时设定width和 flex-basis大小时,

最后会按照 flex-basis的大小设定。

flex   

flex-grow, flex-shrink,

 flex-basis的简写形式

 默认为flex:0,1auto;
 align-self

 单项对齐属性,用于设置单个项目的对齐方式,

设定值可以和align-items属性的其他项目的对齐方式不同。 

 默认值为auto ,表示继承容器的align-items属性。其他为flex-start等。
posted @ 2019-01-09 17:16  墨VS雪  阅读(9678)  评论(0编辑  收藏  举报