7 天写 “分答” 微信小程序第二天 - 1:公共组件与公共模版

1,616 阅读3分钟

项目进度

github地址:github.com/icindy/fend…

相对第一天的计划来说,进度不是很理想,比预期的界面和功能要多很多,另外最近业余时间比较少,但是自己吹的牛,含着泪熬着夜也要完成。文章可能要滞后一些才能发。

可以看第一篇:7天写”分答”微信小程序第一天:组织与首页

今天的开始

创建必要的公共类是必要的,能够统一整体ui效果,减少开发时间,有利于团队开发过程中的重复利用率和效率。同时后期维护也会轻松很多

这是本篇的文章

icindy/fenda/blob/master/common.wxss


/*定义公共基础色彩*/
.fd-color-orange{
    color: #f85f48;
}
.fd-backcolor-orange{
    background-color: #f85f48;
}

.fd-color-blue{
    color: #28aef5;
}

.fd-backcolor-blue{
    background-color: #28aef5;
}

.fd-color-green{
    color: #1ccda6;
}
This file has been truncated. show original

这是本篇的主要效果gif

公共展示GIF

前提

创建公共类前,你必须要知道整体的要求、整体的逻辑及整体的UI,避免做重复工作和无用功.

接下来是我在制作分答微信小程序过程中分析顺序和建立顺序。

公共颜色、字体、高度

既然wxss没有sass的变量等功能,我们就没有办法实现类似宏定义的方式来定义公共颜色、公共字体大小等,但是我们可以建立一套公有的wxss,在需要的时候为元素添加必要的css效果

  • 1.简单实用标注工具(markman)进行标注必要的颜色,高度等
标注后的例子

微信小程序中app.wxss为公共类,当然你也可以自己建立common.wxss,并使用@import "common.wxss";引入使用

小TIPS: 微信小程序建议使用rpx或者rem,本篇使用rpx(iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。)

/*定义公共基础色彩*/
.fd-color-orange{
    color: #f85f48;
}
.fd-backcolor-orange{
    background-color: #f85f48;
}
.fd-color-blue{
    color: #28aef5;
}
.fd-backcolor-blue{
    background-color: #28aef5;
}
/............/
/*定义高度*/

.fd-avatar-large{
    height: 106rpx;
    width: 106rpx;
    border-radius: 50%;
}

.fd-avatar-middle{
    height:74rpx;
    width: 74rpx;
    border-radius: 50%;
}

.fd-avatar-small{
    height: 50rpx;
    width: 50rpx;
    border-radius: 50%;
}

公共组件

微信提供的组件可以满足简单的无自定义UI要求的程序,如果你希望完成UI给你的效果,你需要自定义自己的组件,以供程序使用。

//例子自定义已有的button
/*buttons*/

.fd-defalut-btn{
    background-color: #f85f48 !important;
    color: #fff !important;
    border-color: #f85f48 !important;
}
// 写一个纯自定义的button
//wxml代码

公共模版

公共模块是在多view中被调用,基本上所有的列表类型的可以制作一个模版文件来调用。感觉模版类似于移动开发中的viewmodel模块,当然微信小程序应该也是一种MVVM的开发模式?


/*公共模版*/

/*question,dynamic*/
.dynamic, .question{
    background: #fff;
    padding: .3rem .45rem;
    margin: .4rem 0;
}
.dynamic-content, .question-content{
  color: #3f3f3f;
  font-size: .8rem;
}
.dynamic-respondent,.question-respondent{
    display: inline-block;
    width: 100%;
    color: #999;
    font-size: .65rem;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;

}

.dynamic-answer,.question-answer{
  margin-top: .3rem;
}

.dynamic-time{
    display: inline-block;
    width: 50%;
    color: #999;
    font-size: .65rem;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

.dynamic-num{
    text-align: right;
    display: inline-block;
    width: 50%;
    color: #999;
    font-size: .65rem;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}


.avatar{
  position:relative;width:1.85rem;height:1.85rem;border-radius:50%;display:inline-block;vertical-align:middle;margin-right:.675rem;
}
.avatarImg{
  position:relative;width:1.85rem;height:1.85rem;border-radius:50%;display:inline-block;
}

.voice{
  display:inline-block;
}
.bubble{
    float: none;
    display: block;
    background: #1ccda6;
    line-height: 2.2rem;
    height: 2.2rem;
    border-radius: 1.1rem;
    text-align: center;
    min-width: 9rem;
    color: #fff;
    font-size: .8rem;
    text-decoration: none;
    position: relative;
    margin-right: .35rem;

}

.bubble-blue {
    background: #28aef5;
}

.bubble-tail {
    width: .83rem;
    height: 1.185rem;
    position: absolute;
    bottom: 0;
    left: -.3rem;
    background-image: url('/images/bubble-tail.png');
    background-size: .83rem 1.185rem;
}

.wave3 {
    display: block;
    position: absolute;
    width: .8rem;
    height: .8rem;
    background-image: url('/images/bubble-wav3.png');
    background-size: .8rem;
    top: .65rem;
    left: .65rem;
}

接下来要做的

因为今天还没有完全做完,稍后会更新今天的第二篇文章,主要讨论,分析建立模型、凭凑视图