第三章总结

3.1盒子模型

在页面设计中,只有掌握了盒子模型以及盒子模型的各个属性和应用方法,才能轻松控制页面中的各个元素。

盒子模型结构

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

3.2块级元素

盒子模型及块级元素

<view style="border:1px solid #f00">块级元素</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>

运行结果

行内元素

<view style="padding: 20px;">
<text style="border: 1px solid #f00;">文本1</text>
<text style="border: 1px solid #0f0;margin: 10px;padding: 5px;">文本2</text>
<view style="border: 1px solid #00f;display: inline">块级元素设置为行内元素</view> 一行显示不全,自动换行显示
</view>

运行结果

行内块元素

行内块元素可以设置高度,宽度,内边距和外边距。

<view>
元素显示方式的<view style="display: inline-block;border:1px solid #f00;margin: 10px;padding: 10px;width: 150px;">块级元素,行内元素和行内块元素</view>三种类型</view>

运行结果

3.3浮动与定位

元素浮动与清除

对box1,box2,bo3元素左浮动

<view>box1,box2,box3 没浮动</view>
<view style ="border:1px solid #f00 ;padding:5px;">
<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 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 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左浮动 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>

运行结果

另外,还可以在父元素外添加一个空元素,实现父元素包裹浮动元素

<view>bo1,bo2,bo3左浮动 在父元素后添加一个空元素</view>
<view style="border: 1px solid #f00;padding: 5px"class="clearfloat" >
<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>

运行结果

元素定位

<!--三个元素均未定位 static-->
<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>
<!--box2元素相对定位relative top:30px left:30px-->
<view style="border:1px solid #0f0;width: 100px;height: 100px">box1</view>
<view style="border:1px solid #0f0;width: 100px;height: 100px;position: relative;left: 30px;top: 30px">box2</view>
<view style="border:1px solid #0f0;width: 100px;height: 100px">box3</view>
<!--box2元素绝对定位absolute top:30px left:30px-->
<view style="border:1px solid #0f0;width: 100px;height: 100px">box1</view>
<view style="border:1px solid #0f0;width: 100px;height: 100px;position: absolute;left: 30px;top: 30px">box2</view>
<view style="border:1px solid #0f0;width: 100px;height: 100px">box3</view>
<!--box2元素固定定位fixed top:30px left:30px-->
<view style="border:1px solid #0f0;width: 100px;height: 100px">box1</view>
<view style="border:1px solid #0f0;width: 100px;height: 100px;position: fixed;left: 30px;top: 30px">box2</view>
<view style="border:1px solid #0f0;width: 100px;height: 100px">box3</view>

运行结果

如果box1.2.3的父元素采用相对定位,将box2采用相对定位

<view style="position: relative;left: 50px;top: 50px;border: 1px solid #00f">
<view style="border:1px solid #0f0;width: 100px;height: 100px">box1</view> 
<view style="border:1px solid #0f0;width: 100px;height: 100px;position: absolute;left: 30px;top: 30px">box2</view>
<view style="border:1px solid #0f0;width: 100px;height: 100px">box1</view> 
</view>

如果box1.2.3的父元素采用相对定位,将box2采用固定定位

<view style="position: relative;left: 50px;top: 50px;border: 1px solid #00f">
<view style="border:1px solid #0f0;width: 100px;height: 100px">box1</view> 
<view style="border:1px solid #0f0;width: 100px;height: 100px;position: fixed;left: 30px;top: 30px">box2</view>
<view style="border:1px solid #0f0;width: 100px;height: 100px">box1</view> 
</view>

运行结果

3.4flex布局

  flex布局模型

容器属性

display

用来指定是否为flex布局.

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

flex-dicrecion

用于设置主轴方向,即项目排列方向。

.box{flex-display:row|row-reverse|colum|colum-reverse;}

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

b)row -reverse——主轴为水平方向,起点在右端;
c)column——主轴为垂直方向,起点在顶端;
d)column -reverse——主轴为垂直方向,起点在底端。

flex-wrap

指定当项目在一根轴线排列位置不够时,项目是否换行.

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

a)nowrap——不换行,默认值;
b)wrap——换行,第一行在上方;
c)wrap-reverse——换行,第一行在下方。

flex-flow

是flex-dicrecion和flex-wrap的简写。默认为row-nowwrap。

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

示例代码

.box{flex-flow:row nowrap:}
.box{flex-flow:row-reverse wrap:}
.box{flex-flow:row-column wrap-recerse:}

justify-content

用于定义项目在主轴上的对齐方式.

a)justify-content——与主轴方向有关,默认主轴水平对齐,方
b)flex-start——左对齐,默认值;
c)flex-end——右对齐;
d)center——居中;
e)space -between-—两端对齐,项目之间的间隔都相等;space -around——-每个项目两侧的间隔相等。

align-items

用于指定项目在交叉轴上的对齐方式。

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

align-items——与交叉轴方向有关,默认交叉由上到下;
flex - start——交叉轴起点对齐;
flex -end——交叉轴终点对齐;
center——交叉轴中线对齐;
baseline——项目根据它们第一行文字的基线对齐;

//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;
}
.item2{
  height: 80px;
}
.item3{
  display: flex;
  height: 50px;
  align-items: flex-end;
}
.item4{
  height: 120px;
}

运行结果

align-content

用于定义项目有多根轴线(出现换行后)在交叉轴上的对齐方式,如果只有一根轴线,该属性不起作用。
 

. box|align – content: flex – start lflex – end I center Ispace - between space -around lstretchl

space-between——与交叉轴两端对齐,轴线之间的间隔平均分布;
space - around——每根轴线两侧的间隔都相等,轴线之间的间隔比轴线与边框间隔大一倍。

项目属性

order

定义项目排列顺序,数值越小,排列越靠前,默认值为0.

.item{order:<number>;}
<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item"style="order:1">1</view>
<view class="item"style="order:3">2</view>
<view class="item"style="order:2">3</view>
<view class="item">4</view>
</view>

运行结果

flex-grow

定义项目放大比例,默认为0,即不放大。

.item{flex-grow:<number>;}
<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item">1</view>
<view class="item"style="flex-grow:1">2</view>
<view class="item"style="flex-grow:2">3</view>
<view class="item">4</view>
</view>

运行结果

flex-shrink

用来定义项目缩小比例,默认为1,如果空间不足,该项目缩放。

.item{flex-shrink:<number>;}
<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item">1</view>
<view class="item"style="flex-basis:50px">2</view>
<view class="item"style="flex-basis:180px">3</view>
<view class="item"style="flex-shrink:4">4</view>
</view>

flex-basis

属性用来定义伸缩项目的基准值,剩余空间按比例缩放,默认为auto.

.item {flex: < flex – grow > |< flex – shrink > |< flex -basis >;}
<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item">1</view>
<view class="item"style="flex-basis:100px">2</view>
<view class="item"style="flex-basis:200px">3</view>
<view class="item">4</view>
</view>

flex

flex属性是flex-grow、flex-shrink 和flex-basis的简写,其默认值分别为0、1、auto.

.item flex: {< flex – grow > |< flex – shrink > |< flex -basis >;}
.item{flex:auto;}//等价于.item{flex:1 1 auto;}
.item{flex:none;}//等价与.item{flex:0 0 auto:}

align-self

align -self属性用来指定单独的伸缩项目在交叉轴上的对齐方式。该属性会重写默认的对齐方式

.item(align - self:auto Iflex - start |flex - end Icenter |baseline stretch;}

在该属性值中,除了auto以外,其余属性值和容器align-items的属性值完全一致。auto表示继承容器align-items的属性,如果没有父元素,则等于stretch(默认值)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值