• 通过小程序实现会议Oa主界面


          🏅我是默,一个在CSDN分享笔记的博主。📚📚

    🌟在这里,我要推荐给大家我的专栏《微信小程序 》。🎯🎯

    🚀无论你是编程小白,还是有一定基础的程序员,这个专栏都能满足你的需求。我会用最简单易懂的语言,带你走进代码的世界,让你从零开始,一步步成为编程大师。🚀🏆

    🌈让我们在代码的世界里畅游吧!🌈

    🎁如果感觉还不错的话请记得给我点赞哦!🎁🎁

    💖期待你的加入,一起学习,一起进步💖💖

    一.小程序的布局

    1.Flex布局简介

    布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性

    2.什么是flex布局?

    1. Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。

    2. 任何一个容器都可以指定为Flex布局。

    3. display: ‘flex’

    容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

    项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

    3.flex属性

    • flex-direction 主轴的方向 默认为row

    • flex-wrap 如果一条轴线排不下,如何换行

    • flex-flow 是flex-direction属性和flex-wrap属性的简写形式

    • justify-content 定义了项目在主轴上的对齐方式

    • align-items 定义项目在交叉轴上如何对齐

    • align-content 属性定义了多根轴线的对齐方式

    注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

    3.1 flex-direction属性

    flex-direction属性决定主轴的方向(即项目的排列方向)。

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

    它可能有4个值。

    • row(默认值):主轴为水平方向,起点在左端。
    • row-reverse:主轴为水平方向,起点在右端。
    • column:主轴为垂直方向,起点在上沿。
    • column-reverse:主轴为垂直方向,起点在下沿。

    3.2 flex-wrap属性

    默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

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

    它可能取三个值。

    (1)nowrap(默认):不换行。

    (2)wrap:换行,第一行在上方。

    (3)wrap-reverse:换行,第一行在下方。

    3.3 flex-flow

    flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

    .box {
      flex-flow:  ;
    }

    3.4 justify-content属性

    justify-content属性定义了项目在主轴上的对齐方式。

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

    它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。

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

    3.5 align-items属性

    align-items属性定义项目在交叉轴上如何对齐。

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

    它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。

    • flex-start:交叉轴的起点对齐。
    • flex-end:交叉轴的终点对齐。
    • center:交叉轴的中点对齐。
    • baseline: 项目的第一行文字的基线对齐。
    • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

    3.6 align-content属性

    align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

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

    该属性可能取6个值。

    • flex-start:与交叉轴的起点对齐。
    • flex-end:与交叉轴的终点对齐。
    • center:与交叉轴的中点对齐。
    • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
    • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
    • stretch(默认值):轴线占满整个交叉轴。

    4、项目的属性

    以下6个属性设置在项目上。

    • order
    • flex-grow
    • flex-shrink
    • flex-basis
    • flex
    • align-self(一般不用,容易失效)

    4.1 order属性

    order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

    .item {
      order: ;
    }

    4.2 flex-grow属性

    flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

    .item {
      flex-grow: ; /* default 0 */
    }

    如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

    4.3 flex-shrink属性

    flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

    .item {
      flex-shrink: ; /* default 1 */
    }

    如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

    负值对该属性无效。

    4.4 flex-basis属性

    flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

    .item {
      flex-basis:  | auto; /* default auto */
    }

    它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

    4.5 flex属性

    flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

    .item {
      flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
    }

    该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

    建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

    4.6 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属性完全一致。

    二.通过Mock.js模拟数据交互(轮播图)

    1.如何模拟数据

    2.定义一个方法放入onload方法中设置请求路径

    1. loadSwiperImgs(){
    2. let that=this;
    3. wx.request({
    4. url: api.SwiperImgs,
    5. dataType: 'json',
    6. success(res) {
    7. console.log(res)
    8. that.setData({
    9. imgSrcs:res.data.images
    10. })
    11. }
    12. })
    13. },

     

     3.解决请求的合法域名

     

     4.通过mock.js模拟数据

    1. {
    2. "data": {
    3. "images":[
    4. {
    5. "img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner1.png",
    6. "text": "1"
    7. },
    8. {
    9. "img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner2.png",
    10. "text": "2"
    11. },
    12. {
    13. "img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner3.png",
    14. "text": "3"
    15. },
    16. {
    17. "img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner4.png",
    18. "text": "4"
    19. },
    20. {
    21. "img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner5.png",
    22. "text": "5"
    23. },
    24. {
    25. "img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner6.png",
    26. "text": "6"
    27. }
    28. ]
    29. },
    30. "statusCode": "200",
    31. "header": {
    32. "content-type":"applicaiton/json;charset=utf-8"
    33. }
    34. }

     效果图

    三.构建会议Oa主界面

    1.将图标导入创建的小程序的所在目录中

    2.创建相当于的菜单栏 

    通过自带的菜单函数进行操作

    1. "tabBar": {
    2. "list": [{
    3. "pagePath": "pages/index/index",
    4. "text": "首页",
    5. "iconPath": "/static/tabBar/coding.png",
    6. "selectedIconPath": "/static/tabBar/coding-active.png"
    7. },
    8. {
    9. "pagePath": "pages/meeting/list/list",
    10. "iconPath": "/static/tabBar/sdk.png",
    11. "selectedIconPath": "/static/tabBar/sdk-active.png",
    12. "text": "会议"
    13. },
    14. {
    15. "pagePath": "pages/vote/list/list",
    16. "iconPath": "/static/tabBar/template.png",
    17. "selectedIconPath": "/static/tabBar/template-active.png",
    18. "text": "投票"
    19. },
    20. {
    21. "pagePath": "pages/ucenter/index/index",
    22. "iconPath": "/static/tabBar/component.png",
    23. "selectedIconPath": "/static/tabBar/component-active.png",
    24. "text": "设置"
    25. }
    26. ]
    27. },

    3.新建文件夹用来存储接口地址

     

    存储地址的js文件

    1. // 以下是业务服务器API地址
    2. // 本机开发API地址
    3. var WxApiRoot = 'http://localhost:8080/demo/wx/';
    4. // 测试环境部署api地址
    5. //http://localhost:8080/demo/wx/SwiperImgs
    6. // var WxApiRoot = 'http://192.168.0.101:8070/demo/wx/';
    7. // 线上平台api地址
    8. //var WxApiRoot = 'https://www.oa-mini.com/demo/wx/';
    9. module.exports = {
    10. IndexUrl: WxApiRoot + 'home/index', //首页数据接口
    11. SwiperImgs: WxApiRoot+'swiperImgs', //轮播图
    12. MettingInfos: WxApiRoot+'meeting/list', //会议信息
    13. };

     4.定义会议Oa系统界面

    最基础的版本没有样式的调整

    1. class="mobi-icon">
    2. <text class="mobi-text">会议信息text>
    3. <block wx:for-items="{{lists}}" wx:for-item="item" wx:key="item.id">
    4. <view class="list" data-id="{{item.id}}">
    5. <view class="list-img">
    6. <image class="video-img" mode="scaleToFill" src="{{item.image}}">image>
    7. view>
    8. <view class="list-detail">
    9. <view class="list-title"><text>{{item.title}}text>view>
    10. <view class="list-tag">
    11. <view class="state">{{item.state}}view>
    12. <view class="join"><text class="list-num">{{item.num}}text>人报名view>
    13. view>
    14. <view class="list-info"><text>{{item.location}}text>|<text>{{item.starttime}}text>view>
    15. view>
    16. view>
    17. block>
    18. <view class="section">
    19. <text>到底啦text>
    20. view>

    效果展示图

     在进行过样式的调整后

    1. /**index.wxss**/
    2. .section{
    3. color: #aaa;
    4. display: flex;
    5. justify-content: center;
    6. }
    7. .list-info {
    8. color: #aaa;
    9. font-size: 10px;
    10. }
    11. .list-num {
    12. color: #e40909;
    13. font-weight: 700;
    14. }
    15. .join {
    16. padding: 0px 0px 0px 10px;
    17. color: #aaa;
    18. }
    19. .state {
    20. margin: 0px 6px 4px 0px;
    21. border: 1px solid #93b9ff;
    22. color: #93b9ff;
    23. }
    24. .list-tag {
    25. padding: 3px 0px 10px 0px;
    26. display: flex;
    27. align-items: center;
    28. }
    29. .list-title {
    30. display: flex;
    31. justify-content: space-between;
    32. font-size: 11pt;
    33. color: #333;
    34. font-weight: bold;
    35. }
    36. .list-detail {
    37. display: flex;
    38. flex-direction: column;
    39. margin: 0px 0px 0px 15px;
    40. }
    41. .video-img {
    42. width: 80px;
    43. height: 80px;
    44. display: ;
    45. }
    46. .list {
    47. display: flex;
    48. flex-direction: row;
    49. border-bottom: 4px solid #6b6e74;
    50. padding: 10px;
    51. align-items: center;
    52. }
    53. .mobi-text {
    54. font-weight: 700;
    55. padding: 15px;
    56. }
    57. .mobi-icon {
    58. border-left: 5px solid #e40909;
    59. }
    60. .mobi-title {
    61. background-color: rgba(158, 158, 142, 0.678);
    62. margin: 10px 0px 10px 0px;
    63. }
    64. .swiper-item {
    65. height: 300rpx;
    66. width: 100%;
    67. border-radius: 10rpx;
    68. }
    69. .userinfo {
    70. display: flex;
    71. flex-direction: column;
    72. align-items: center;
    73. color: #aaa;
    74. }
    75. .userinfo-avatar {
    76. overflow: hidden;
    77. width: 128rpx;
    78. height: 128rpx;
    79. margin: 20rpx;
    80. border-radius: 50%;
    81. }
    82. .usermotto {
    83. margin-top: 200px;
    84. }

  • 相关阅读:
    【笔试题】【day17】
    神经网络控制器设计步骤,神经网络控制系统设计
    C#编程模式之桥接模式(Bridge)
    半导体新能源智能装备上位机工业软件设计方案
    (1)安装hadoop之虚拟机准备(配置IP与主机名)
    用go设计开发一个自己的轻量级登录库/框架吧
    阿里云Hologres助力好未来网校实时数仓降本增效
    一些性能优化的东西
    d改进重载2
    Opencv-图像插值与LUT查找表
  • 原文地址:https://blog.csdn.net/lz17267861157/article/details/133880953