微信小程序 | CSS | Flex布局

简介: 微信小程序 | CSS | Flex布局

相信刚开始学习开发小程序的初学者一定对界面的布局很困扰,不知道怎么布局,怎么摆放位置,其原因是不了解CSS样式的属性,所以,今天这篇文章,给大家普及一下相关的知识。

说起CSS布局,首先要讲解的就是FLex布局,这个可以说是一个万能钥匙,遇到什么复杂的布局,都可以通过Flex布局搞定,为了方便大家理解Flex属性,我将会一步步解析FLex的属性,并附上效果图。


1、基本概念


采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。


2、Flex容器属性


Flex总共有6个属性

  • flex-direction 设置排列方向
  • flex-wrap 内容满一行,是否换行
  • flex-flow flex-direction属性和flex-wrap属性的简写形式
  • justify-content 左右对齐方式
  • align-items 上下对齐方式
  • align-content 多行上下对齐方式


1. flex-direction属性

flex-direction决定了item里面排列的方向,有下面四个属性值

  • row(默认值):横向排序,从左边起开始排列item。
  • row-reverse:横向排序,从右边起开始排列item。
  • column:纵向排列,从顶部开始排列item。
  • column-reverse:纵向排列,从底部开始排列item。


2. flex-wrap属性

默认情况下,项目都排在一行上不换行,flex-wrap有三个属性值

  • nowrap (默认)不换行
  • wrap 如果第一行满了,换行
  • wrap-reverse 换行,第一行在下方


3. flex-flow属性

是flex-direction属性和flex-wrap属性的简写形式,这里不建议使用,就不介绍了


4. justify-content属性justify-content用来定义item 左右对齐的方式,有以下五种

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:等距对齐,两端对齐,item之间的间隔都相等。
  • space-around:每个item两侧的间隔相等。所以,item之间的间隔比item与边框的间隔大一倍。


5. align-items属性

align-items用来定义item上下对齐的方式,也有五种

  • flex-start:向上对齐
  • flex-end:向下对齐。
  • center:居中。
  • baseline: item的第一行文字的基线对齐。
  • stretch(默认值):如果item未设置高度或设为auto,将占满整个容器的高度。


6. align-content属性

align-content是多行对齐方式,如果只有把一行,此属性不起作用

  • flex-start:向上对齐。
  • flex-end:向下对齐。
  • center:居中。
  • space-between:等距对齐,两端对齐,item之间的间隔都相等。
  • space-around:每个item两侧的间隔相等。所以,item之间的间隔比item与边框的间隔大一倍。
  • stretch(默认值):所有item占满整个容器。


7. 扩展:如果想对容器内的item按比例划分的话,可以用flex-grow属性,赋值就是该item占一行的比例


3、Flex属性实战


初始代码

<!--index.wxml-->
<view class="container">
   <view class="item">
      v1
    </view>
    <view class="item">
      v2
    </view>
    <view class="item">
      v3
    </view>
</view>
/**index.wxss**/
.container {
  height: 1000rpx;
  width: 100%;
  background-color: rgb(13, 134, 78);
  display: flex;
}
.item {
  height: 100rpx;
  width: 100rpx;
  border: 5rpx solid #fff;
}

image.png

上图为初始效果图,因为 flex-direction默认为row,所以刚开始会横向排列,如果要纵向排列加入flex-direction设置为column即可

image.png

改过属性的效果图如上,剩下的两个属性就不演示了,接下来试一下justify-content左右对齐方式,我们就实现一下等距对齐方式吧

/**index.wxss**/
.container {
  height: 1000rpx;
  width: 100%;
  background-color: rgb(13, 134, 78);
  display: flex;
  /* 改动的代码 */
  flex-direction: row;
  justify-content: space-between;
}

image.png

ok,接下来是上下对齐,align-items这个里面有一个和左右对齐不一样的,就是根据内容文字对齐baseline,让我们看一下效果是什么样的,为了有对比性,我把文字的高度设置的不一样

/**index.wxss**/
.container {
  height: 1000rpx;
  width: 100%;
  background-color: rgb(13, 134, 78);
  display: flex;
  /* 改动的代码 */
  flex-direction: row;
  justify-content: space-between;
  align-items: baseline;
}
.item {
  height: 100rpx;
  width: 100rpx;
  border: 5rpx solid #fff;
}
.item2 {
  height: 100rpx;
  width: 100rpx;
  border: 5rpx solid #fff;
  padding-top: 20rpx;
}

image.png

看到了吧,这个属性就是根据第一行文字为基线对齐的,因为第二个view字位置和其他不一样,所以整体往上移动了,最后一个,实现以下等比划分item,用到的属性是flex-grow,这个属性需要设置在item里面才可以

/**index.wxss**/
.container {
  height: 1000rpx;
  width: 100%;
  background-color: rgb(13, 134, 78);
  display: flex;
  /* 改动的代码 */
  flex-direction: row;
  justify-content: space-between;
  align-items: baseline;
}
.item {
  height: 100rpx;
  width: 100rpx;
  border: 5rpx solid #fff;
  /*占比1*/
  flex-grow: 1;
}
.item2 {
  height: 100rpx;
  width: 100rpx;
  border: 5rpx solid #fff;
  /*占比1*/
  flex-grow: 1;
}

image.png


总结


不要只看文章,一定要跟着教程,去实战一下,只有这样,才可以对属性了解透彻,如果你掌握这些,相信市面上的小程序基础布局,你都可以实现的。


目录
相关文章
|
18天前
|
前端开发 开发者 UED
解锁网页布局的秘密武器:探索 CSS Grid 布局的神奇魔力
解锁网页布局的秘密武器:探索 CSS Grid 布局的神奇魔力
21 3
|
25天前
|
前端开发 容器
《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)
《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)
21 2
|
17天前
|
UED 开发者 容器
【专栏】Flexbox是CSS3的全新布局模式,提供灵活响应式的页面设计
【4月更文挑战第27天】Flexbox是CSS3的全新布局模式,提供灵活响应式的页面设计。其特点包括灵活性、响应式和易理解,通过主轴和交叉轴控制元素排列对齐。核心概念有容器和项目,常用于导航栏、卡片布局、响应式设计、表格和表单布局。关键属性如flex-direction定义主轴方向,justify-content和align-items控制对齐,flex属性调整项目伸缩,order改变排序。在实践中,要关注响应式、代码维护和浏览器兼容性,以优化布局和用户体验。
|
14天前
|
前端开发 UED
【专栏:HTML与CSS实战项目篇】创建一个具有复杂布局的电商详情页
【4月更文挑战第30天】构建复杂布局的电商详情页涉及页面结构规划、样式设计和交互效果实现。首先规划顶部导航栏、商品图片展示区、商品信息区、用户评价区和相关商品推荐区。在样式设计上,注重色彩搭配、字体选择、布局与间距及图片处理。交互效果包括图片放大、添加到购物车按钮、滚动监听和评论互动,以提升用户体验。实际开发中需考虑跨设备兼容性和用户体验优化。
|
14天前
|
编解码 缓存 前端开发
【专栏:HTML与CSS移动端开发篇】移动端网页布局与适配
【4月更文挑战第30天】本文探讨了如何使用HTML和CSS优化移动端网页布局与适配,强调响应式设计、灵活布局和媒体查询的重要性。针对移动设备的屏幕尺寸、操作方式、网络速度和性能差异,提出了断点选择、触摸优化、图像和性能优化等最佳实践。测试和调试、框架工具的应用也是关键步骤,以确保在多设备上提供优秀用户体验。开发者需持续学习新趋势和工具,以适应移动端发展。
|
14天前
|
前端开发 UED 容器
【专栏:CSS进阶篇】CSS Grid布局:构建复杂的二维布局
【4月更文挑战第30天】CSS Grid布局是二维布局系统,适用于复杂页面结构,如页眉、主体和侧边栏。通过定义网格线和单元格,能轻松创建行和列。基本语法包括设置容器为grid容器,定义`grid-template-rows`和`grid-template-columns`。高级特性包括命名网格线、网格区域、网格间隙、重复网格线和自动填充。在实际应用中,CSS Grid能有效提升开发效率和用户体验,尤其在响应式设计和复杂布局场景下。
|
14天前
|
前端开发 开发者 容器
【专栏:CSS进阶篇】CSS Flexbox布局:实现灵活的响应式设计
【4月更文挑战第30天】CSS Flexbox是现代网页设计中创建响应式布局的关键工具,它提供了一种一维布局模型,使元素能灵活适应各种屏幕尺寸。通过设置容器的`display`属性为`flex`,开发者可以利用主轴和交叉轴调整元素排列和对齐方式。核心概念包括弹性项、伸缩性、空间分配和对齐。通过实例,如导航栏、卡片布局、图片画廊和响应式表单,展示了Flexbox在实现响应式设计中的应用。尽管需要注意浏览器兼容性,但掌握Flexbox能帮助开发者构建出功能强大且适应性强的界面。
|
14天前
|
前端开发 开发者 容器
【专栏:CSS基础篇】CSS定位与布局:从静态到浮动、定位
【4月更文挑战第30天】本文介绍了CSS定位与布局的基础,包括静态、相对、绝对、固定定位以及浮动。静态定位遵循HTML顺序,相对定位可在正常位置基础上偏移,不占用额外空间。绝对定位基于最近已定位祖先元素定位,脱离文档流。固定定位相对于浏览器窗口定位,无视页面滚动。浮动用于文字环绕图片等,可能导致父元素高度塌陷。Flexbox布局提供更灵活的元素排列和对齐方式,适配各种复杂布局需求。理解并掌握这些布局技术能提升网页设计的灵活性和响应性。
|
14天前
|
前端开发
【专栏:CSS基础篇】CSS盒模型:理解网页布局的核心
【4月更文挑战第30天】CSS盒模型是网页布局关键,将HTML元素视为内容、内边距、边框和外边距的矩形。内容决定元素大小,padding增加内部空间,border设置线条样式,margin控制元素间距。理解盒模型及其计算方式(内容+padding+border+margin)有助于布局设计。通过调整相关属性,实现浮动、Flexbox或定位布局,创建响应式网页。
|
15天前
|
前端开发
CSS弹性布局justify-content的用法
CSS弹性布局justify-content的用法

热门文章

最新文章