微信小程序和HTML区别:
1、开发工具不同,H5的开发工具+浏览器Device Mode预览,小程序的开发基于自己的开发者工具
2、开发语言不同,小程序自己开发了一套WXML标签语言和WXSS样式语言,并非直接使用标准的HTML5+CSS3
3、组件封装不同,小程序独立出来了很多原生APP的组件,在HTML5需要模拟才能实现的功能,小程序里可以直接调用组件。
小程序的两个线程:Appservice Thread和View Thread会同时进行、并行加载,甚至Appservice Thread会更早执行,当视图线程加载完,通知Appservice,Appservice 会把准备好的数据用setData的方法返回给视图线程。
微信小程序细节部分:
1、标签书写方法,所有组件与属性都是小写,以连字符-连接。
<image src="" />
or
<image src="" ></image>
2、文件引入,import可以引入定义好的template模板,模板是有作用域的;而include就是拷贝一个公用的代码片段到目标文件中,适合做公共页面片的拆分。
<!--import-->
<import src="../template/a.wxml"/>
<!--include-->
<include src="../include/footer.wxml"/>
3、wxss,
尺寸:px、rem和rpx,其中rem和rpx可以针对屏幕容器进行适配,px则为固定尺寸。 其中1rpx=0.5px,在WXSS和WXML中定义的rpx单位最终会转换为在手机端可以识别的rem单位。
备注:rpx的单位不光在样式中会自适应,写在WXML的style里也会根据屏幕自适应。
import "../../wxss/common.wxss";样式引入
选择器:包括.class、#id、 element、element,element、::after(注意是双冒号)、::before这6种选择器。
小程序对于:first-child、:last-child、.class-a .class-b{},甚至更多层级的嵌套都是支持的。 不过官方并不推荐级联的这种写法
4、组件
1、view, div和view都是盒模型,默认display:block。 盒模型在布局过程中,一般推荐display:flex的写法,配合justify-content:center;align-items:center;的定义实现盒模型在横向和纵向的居中。
2、text, text可以嵌套text,但不能嵌套view
3、 icon icon可以直接用微信组件默认的图标,默认是iconfont格式的,从WeUI那边沿袭过来的一种做法。 自定义的icon推荐svg sprite格式或者iconfont。
4、input input 的类型,有效值:text, number, idcard, digit, time, date 。 input不需要设置line-height或padding来纵向居中,默认placeholder的文字是居中的。 小程序把checkbox和radio都单独做成了组件,默认的input只支持输入文本。 上传文件在小程序里需要调用chooseImage事件完成;
注意:
小程序CSS里的 :focus 不生效,需要修改placehoder的样式,通过placeholder-class=”class”来定义。
.login .input-group input::-webkit-input-placeholder {
color: #c0c0c0;
}
.login .input-group input:focus::-webkit-input-placeholder {
color: transparent;
}
5、picker 支持普通、日期和时间三种选择器, picker通过bindchange事件来调取range中自定义的数据数据,并展示到页面中,调用的是系统原生的select。
<picker bindchange="bindPickerChange" value="{{index}}" range="{{area}}">
<view class="picker">
{{area[index]}}
</view>
</picker>
Page({
data: {
area: [‘中国‘, ‘美国‘, ‘巴西‘, ‘日本‘],
}
})
<!--js里的area数组-->
<!--picker下拉框-->
6、 navigator 默认是打开新页面,当前页面打开需要加redirect;navigator仅支持5级页面的跳转;
7、image
scaleToFill{
background-size:100% 100%;//不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
}
aspectFit{
background-size:contain;//保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
}
aspectFill{
background-size:cover;//保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
}
8、button :after的方式去覆盖默认值
button::after {
content:" ";
width:200%;
height:200%;
border:1px solid rgba(0, 0, 0, 0.2);
}
其他:
.media {
display: flex;
justify-content:center;//设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。
align-items:center;//定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。
}
.media .content {
flex: 1;
}