最近在学习移动端组件化开发web页面,其中有好多小细节,值的去思考。
主要介绍JS的思路,具体的代码就不贴了,主要是想表达出一种思路
总体来说
1.入口文件,在入口文件中导入插件,插件样式,jquery
// 首先要有config参数
var config ={
// config
}
// 进行实例化
var H5 = new H5Component(config)
// 插入DOM中
$(".container").append(H5)
// 触发组件中的自定义事件
$("body").on("click",function(){
$(".component").trigger(event)
})
2.组件.js
var H5ComponentBase = function(config){
// 初始化形参
var config = config || {} ;
// 设置class id等信息
// ...
// 建立dom节点
var component = $("<div></div>");
// css样式(行内样式)
// ...
// 触发自定义事件时
// ...
// 返回这个dom节点
return component;
}
引发的思考
1.如何根据ui的图片适应不同的设备
比如说完全显示图片而不是自己再给img或者背景设置宽高,或者设置背景的left和top
css
.h5_component_class_base{
backgroundImage:url("./bg.png");
background-size: 100%;
background-repeat: no-repeat;
}
当然你也可以在js中手动添加backgroundImage或样式
但是得注意一个问题, backgroundImage:url("./bg.png") 与 background:url("./bg.png")都能让图片加载出来,但是用background:url后设置background-size:100%无法完全显示图片,这个问题在之前碰到过
css中background是背景设置的集合,而background-image只是设置背景的图片样式。
background后可加背景颜色,背景图片及图片排列样式,和结构对齐样式,可以说控制了整个背景的属性。
不要替换这两个,否则就会踩坑
2.居中的问题
之前总结了很多居中的问题,但是多了反而不记得了,flex居中,float居中等
水平居中,设置dom的position:absolute,left:50% margin-left 为负的真实宽度的一半,所谓真实宽度就是页面上显示的宽度,UI给的psd图一般是以
iPhone5宽度做的,需要把psd的宽高除2才是真实宽高,这就是水平居中的做法,同理垂直居中也是这样。
css
.test{
position:absolute;
//水平居中
left :50%;
margin-left: 1/2*width*-1;
//垂直居中
top :50%;
margin-right:1/2*height*-1;
}
3.自定义事件的创建与引用
创建自定义事件
在入口文件中当点击body时创建自定义事件,也可以是其他事件触发该自定义事件
var flag = true;
$("body").on("click",function(){
flag ! =flag;
$(".dom").trigger(flag?"event1":"event2");
})
触发自定义事件
在插件中执行
DOM.on("event1",function(){
// 执行后的操作
})
DOM.on("event2",function(){
// 执行后的操作
})