小程序第三章总结

一.盒子模型

微信小程序的视图层由WXML和WXSS组成。其中,WXSS(WeiXin Style Sheets)是基于CSS拓展的样式语言,用于描述WXML的组成样式,决定WXML的组件如何显示。

盒子模型是我们在学习页面设计中经常用到的一种思维模型。在CSS中一个独立的盒子模型由内容(content)、内边距(padding)、边框(border)和外边距(margin)4个部分组成,如图所示:

此外,对padding、border、和margin可以进一步细化为上、下、左、右4个部分,在CSS中可以扽别设置,如图所示:

图中各元素如下:

  • width和height  内容的宽度和高度。
  • padding-top、padding-right、padding-bottom和padding-left  上内边距、右内边距、底内边距和左内边距 。
  • border-top、border-right、border-bottom和border-left  上边框、右边框、底边框和左边框。
  • margin-top、margin-right、margin-bottom和margin-left 上外边距、右外边距、底外边距和左外边距。

因此一个盒子实际所占有的宽度(高度)应该由“内容”+“内边距”+“边框”+“外边距”组成。

二.块级元素与行内元素

元素按显示方式分为块级元素、行内元素和行内块元素,他们的显示方式由display属性控制。

1.块级元素

块级元素默认占一行高度,一行内通常只有一个块级元素,添加新的块级元素时,会自动换行,块级元素一般作为盒子出现。特点如下:

  • 一个块级元素占一行。
  • 块级元素的默认高度由内容决定,除非自定义高度。
  • 块级元素的默认宽度是父级元素的内容区宽度,除非自定义宽度。
  • 块级元素的宽度、高度、外边距及内边距都可以自定义设置。
  • 块级元素可以容纳块级元素和行内元素。

<view/>组件默认为块级元素,使用<view/>组件演示盒子模型及块级元素的示例代码如下:

<view style="border: 1px solid #f00;">块级元素1</view>
<view style="border: 1px solid #0f0;margin: 15px; padding: 20px;">块级元素2</view>
<view style="border: 1px solid #00f;width: 200px; height:80px ;">块级元素3</view>
<view style="border: 1px solid #ccc;">
<view style="height: 60px;">块级元素4</view>
</view>
<view style="border: 1px solid #f00;width: 100px;background-color: #ccc;">父级元素高度随内容决定,内容为文本</view>

 

2.行内元素

  • 将一个元素的display属性设置为inline后,该元素被设置为行内元素。特点如下:
  • 行内元素不背设置高度和宽度,其高度和宽度被内容决定。
  • 行内元素内不能放置块级元素,只容纳文本或者其他行内元素。
  • 同一块内,行内元素和其他行内元素显示在同一行。

<text/>组件默认为行内元素,使用<view/>及<text/>组件演示盒子模型及行内元素的代码如下:

3.行内块元素

当元素的display元素被设置为inline-block时,元素被设置为行内块元素。行内块元素可以被设置高度、宽度、内边距和外边距。示例代码如下:

三.浮动与定位

1.元素浮动与清除

基本格式为:

{float:none|left|right;}

在下面的代码中,分别对bix1、box2、box3元素左浮动:

通过案例我们发现,当box3左浮动后,父元素的边框未能包裹住其元素,此时可以通过清除浮动去解决,其基本格式为

{clear:left|right|both|none}

示例代码:

<view>box1,box2,box3 没浮动 </view>
<view style="border: 1px solid #f00;padding: 5px;"></view>
<view style="border: 1px solid #0f0;">box1</view>
<view style="border: 1px solid #0f0;">box2</view>
<view style="border: 1px solid #0f0;">box3</view>
</view>
<view>box1 左浮动 </view>
<view style="border: 1px solid #f00;padding: 5px;"></view>
<view style="float: left;border: 1px solid #0f0;">box1</view>
<view style="border: 1px solid #0f0;">box2</view>
<view style="border: 1px solid #0f0;">box3</view>
</view>
<view>box1 box2 左浮动 </view>
<view style="border: 1px solid #f00;padding: 5px;"></view>
<view style="float: left;border: 1px solid #0f0;">box1</view>
<view style="float: left;border: 1px solid #0f0;">box2</view>
<view style="border: 1px solid #0f0;">box3</view>
</view>
<view>box1 box2 box3 左浮动 </view>
<view style="border: 1px solid #f00;padding: 5px;">
<view style="float: left;border: 1px solid #0f0;">box1</view>
<view style="float: left;border: 1px solid #0f0;">box2</view>
<view style="float: left;border: 1px solid #0f0;">box3</view>
</view>

另外,还可以在父元素外添加一个空元素,实现父元素包裹浮动元素。示例代码如下:

<view>box1 box2 左浮动 box3 清除左浮动 </view>
<view style="border: 1px solid #f00;padding: 5px;">
<view style="float: left;border: 1px solid #0f0;">box1</view>
<view style="float: left;border: 1px solid #0f0;">box2</view>
<view style="clear: left;border: 1px solid #0f0;">box3</view>
</view>

2.元素定位

浮动布局虽然灵活,但无法对元素的位置进行精确的控制。在css中,通过position属性可以实现对页面元素的精确定位。基本格式如下:

{position:static|relative|absolute|fixed}

 示例代码:

<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box1</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box2</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box3</view>

运行效果:

 

四.flex布局

flex布局主要有容器和项目组成。容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。设置display属性可以将一个元素指定为flex布局,设置flex-direction属性可以指定主轴方向。主轴既可以是水平方向,也可以是垂直方向。

1.容器属性

 flex容器支持的属性有7种,如下表所示:

(1).display

用来指定元素是否为flex布局,语法格式如下:

.box{display:flex|inline-flex;}

flex  块级flex布局,该元素变为弹性盒子; 

 inline-flex 行内flex布局,行内容器符合行内元素的特征,同时在容器内有符合flex布局规范。

(2). flex-direction

用于设置主轴的方向,即项目排列的方向,语法格式为:

.box{flex-direction:row|row-reverse|column|column-reverse;}

a.row  主轴为水平方向,起点在左端,当元素设置为flex布局时,主轴默认为row;

b.row-reverse  主轴为水平方向,起点在右端;

c.column  主轴为垂直方向,起点在顶端;

d.column-reverse  主轴为垂直方向,起点在底端。

 

(3).flex-wrap

用来指定当项目在一根轴线的排列位置不够时,项目是否换行,其语法格式如下:

.box{flex-wrap:nowrap|wrap|wrap-reverse;}

a.nowrap  不换行,默认值;

b.wrap  换行,第一行在上方;

c.wrap-reverse  换行,第一行在下方。

 

(4).flex-flow

是flex-direction和flex-wrap的简写形式,默认值为row nowrap。语法格式为:

.box{flex-flow:<floex-direction>||<flex-wrap>;}

(5).justify-content

用于定义项目在主轴上的对齐方式。语法格式如下:

.box{justify-content:flex-start|flex-end|center|space-between|space-around;}

a.justify-content  与主轴方向有关,默认主轴水平对齐,方向从左到右; 

b.flex-start  左对齐,默认值;

c.flex-end  右对齐;

d.center  居中;

e.space-betwwen  两端对齐,项目之间的间隔都相等;

f.space-around  每个项目两侧的间隔相等。

(6).align-items

用于指定项目在交叉轴上的对齐方式,语法格式如下:

.box{align-items:flex-start|flex-end|center|baseline|stretch;}

a.align-items  与交叉轴方向有关,默认交叉由上到下;

b.flex-start  交叉轴起点对齐

c.flex-end  交叉轴终点对齐;

d.center   交叉轴中线对齐;

e.baseline 项目根据它们第一行文字的基线对齐;

f.stretch  如果项目未设置高度或设置未auto,项目将在交叉轴方向拉伸填充容器,此为默认值。

示例代码如下:

//.wxml
<view class="cont1">
<view class="item">1</view>
<view class="item item2">2</view>
<view class="item item3">3</view>
<view class="item item4">4</view>
</view>
//wxss
.cont1{
  display: flex;
  flex-direction: row;
  align-items: baseline;
}
.item{
  background-color: #ccc;
  border: 1px solid #f00;
  height: 100px;
  width: 50px;
  margin: 2px;
}bg
.item2{
  height: 80px;
}
.item3{
  display: flex;
  height: 50px;
  align-items: flex-end;
}
.item4{
  height: 120px;
}

(7).align-content

用来定义项目有很多轴线在交叉轴上的对齐方式,如果只有一根轴线,该属性不起作用。其语法格式如下:

.box{align-content:flex-start|flex-end|center|space-between|space-around|stretch}

a.space-between  与交叉轴两端对齐,轴线之间的间隔平均分布;

b.space-around  每根轴线两侧的间隔都相等,轴线之间的间隔比轴线与边框间隔大一倍。

其余各属性值的含义与l=align-itens属性的含义相同。

 

2.项目属性

容器内的项目支持6个属性,其名称和功能如下表:

(1).order

定义项目的排列顺序,数值越小,排列越靠前,默认值为0.语法格式如下:

.item{order:<number>;}

示例代码如下: 

(2).flex-grow

定义项目的放大比例。语法格式如下:

.item{flex-grow:<number>;}

(3).flex-shrink

定义项目的缩小比例。语法格式如下:

.item{flex-shrink:<number>;}

(4).flex-basis

定义伸缩项目的基准值,剩余空间将按比例进行缩放。语法格式如下:

.item{flex-basis:<number>|auto;}

(5).flex

.item{flex:<flex-grow>|<flex-shrink>|<flex-basis>;}

(6).align-self

指定单独的伸缩项目在交叉轴上的对齐方式。语法格式如下:

.item{align-self:auto|flex-start|flex-end|center|baseline|stretch;}

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值