Coder Social home page Coder Social logo

shixy / jingle Goto Github PK

View Code? Open in Web Editor NEW
576.0 76.0 213.0 7.81 MB

Jingle UI是一个基于html5、css3开发轻量级的移动webapp 框架,提供一些基本交互方式,常用的组件(scroll,actionsheet,sidemenu,toggle,push2refresh......),帮助您更方便的开发移动应用。

Home Page: http://shixy.github.io/Jingle

License: MIT License

JavaScript 73.45% CSS 26.55%

jingle's Introduction

##提示##

因为工作的原因,一直都没有时间去维护和更新的Jingle,后面很长一段时间内可能都没有太多的业务时间。 在这里对关注和使用Jingle的同学说一声抱歉!其实源码也不多,需要用到实际项目的同学建议通读源码,这样才能更好为项目服务,也能提升自己的能力不是? 当然,后续我也会尽量抽出时间来对Jingle做一些重构和规划,只是时间点上不太确定,再次说一声抱歉~

##Jingle UI## Jingle UI是一个基于html5、css3开发轻量级的移动webapp 框架,提供一些基本交互方式,常用的组件(scroll,actionsheet,sidemenu,toggle,push2refresh......),帮助您更方便的开发移动应用。

  • 基于webkit开发,目前只支持ios,android
  • 依赖zepto.js、iscroll4、artTemplate等开源类库和组件

持续开发中,文档尚不完善,有需求的朋友可以直接看demo和源码

wiki入口

###部分案例###

Eoe资讯

访问地址:http://migrator.duapp.com/static/eoe/

源码地址:https://github.com/shixy/eoe-jingle

深圳图书馆 访问地址:http://shenzhenlib.duapp.com/

源码地址:已打包成apk,源码在https://github.com/shixy/szlib

###本地环境搭建### 因为涉及到跨域问题,需要服务端做一个代理。

我采用的是Nodejs,你可以根据自己的知识架构来做调整(Apache\Nginx等等)。

  1. 安装nodejs插件

    npm install;

  2. 运行nodejs

    node server.js

  3. 浏览器访问:http://localhost:3000

###页面结构###

<!---侧边栏容器---> 侧边栏 侧边栏
<!--页面容器--->

Jingle

book pencil more <!---do it yourself --->

###布局组件### section 基本页面

基本属性:

data-transition:页面转场动画,默认为“slide”,
目前框架已内置“slideUp”,“slideDown”,"scale",亲们可以自己编写css3动画...

aside 侧边菜单

基本属性:

data-position:  left(左侧边栏) right(右侧边栏)
data-transition: push(抽屉式) overlay(侧边栏覆盖页面) reveal(页面退出显示侧边栏)
data-show-close: true false (是否显示关闭按钮)

list 列表组件

ul class="list" 基本设置
li data-selected="selected" 点击会有高亮显示

###交互组件### ok data-target的值有:

section:页面跳转
article:页面中的元素块切换
menu:显示/隐藏侧边菜单
link:执行a标签默认行为

href对应section/article/menu的id

###界面元素### 导航栏

<!--只有文字-->
<ul class="control-group">
    <li class="active"><a href="#">Hello</a></li>
    <li><a href="#">Jingle</a></li>
    <li><a href="#" >html5</a></li>
</ul>
<!--只有图标-->
<ul class="control-group">
    <li data-icon="home"></li>
    <li class="active" data-icon="bell"></li>
    <li data-icon="spinner"></li>
</ul>
<!--图标+文字 左右-->
<ul class="control-group">
    <li class="active"><a href="#" data-icon="home">Hello</a></li>
    <li><a href="#" data-icon="bell">Jingle</a></li>
    <li><a href="#" data-icon="spinner">html5</a></li>
</ul>
<!--图标+文字 上下-->
<ul class="control-group">
    <li class="active" data-icon="home"><a href="#">Hello</a></li>
    <li data-icon="bell"><a href="#">Jingle</a></li>
    <li data-icon="spinner"><a href="#" >html5</a></li>
</ul>

图标

data-icon="icon name"
icon name请参见示例中的icons页面,基本所有的组件都可以用

toggle

<div class="toggle" class="active"></div>
默认为√和×,可以自定义文字
data-on="开启"
data-off="关闭"

范围选择器

<div  data-rangeinput="right">
    <input type="range" min=4 max=10 value="7"/>
</div>
data-rangeinput: 输入框显示在左侧还是右侧

进度条

<div data-progress="80" data-title="已完成"></div>
data-title:自定义进度文字

数字标签

<a class="button" data-count=3 data-orient="left">按钮</a>
data-orient:标签显示位置,默认显示在右上角

checkbox

<div data-checkbox="unchecked">爱我你就勾勾我</div>
data-checkbox:unchecked(未选中) checked(选中)

###功能组件### toast 消息提示框(单例)

J.Toast.show(type,text,duration);
	//type: toast|success|error|info  内置的几种样式
	//text: 显示文本
	//duration:持续时间,为0则不自动关闭

J.Toast.hide(); //关闭消息

popup 弹出框(单例)

J.Popup.show(options);
J.Popup.close();
J.Popup.alert();
J.Popup.confirm();
J.Popup.popover();
J.Popup.loading();
J.Popup.actionsheet();

slider 轮换组件

var slider = new J.Slider(selector);

scroll 滚动组件(下拉刷新)

自动装载模式:data-scroll=true
javascript模式:J.Scroll(selector,opts);

jingle's People

Contributors

inspurhua avatar shixy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jingle's Issues

弹窗远程加载的问题

我现在有一个弹窗是多个页面共用的,所以我不希望写在每个页面里面,我单独为一个html。所以我的逻辑走到了jinlge.Popuo.js里面的html = J.Page.loadContent(settings.url);但是 J.Page.loadContent(settings.url)这个方法返回的是一个异步对象并不是真正的内容,而且这貌似是同步的书写方式,请问是不是我理解错了?

ajax远程记载页面

/**
 * ajax远程加载页面
 */
var loadPage = function(hash){
    var id = _formatHash(hash);
    //优先从remotePage中寻找是否有对应的url,没有则根据id自动从basePagePath中装载
    var url = J.settings.remotePage[id]||J.settings.basePagePath+id+'.html'
    if(!url){
        console.error(404,'页面不存在!');
        return;
    }
    if(J.settings.showPageLoading){
        J.showMask('正在加载...');
    }
    $.ajax({
        url : url,
        timeout : 10000,
        async : false,
        success : function(html){
            if(J.settings.showPageLoading){
                J.hideMask();
            }
            //添加到dom树中
            $('#section_container').append(html);
            //触发pageload事件
            $('#'+id).trigger('pageload');
            //构造组件
            J.Element.init(hash);
        }
    })
}

var url = J.settings.remotePage[id]||J.settings.basePagePath+id+'.html'

这个url我想从动态获取怎么实现啊

  • 如何使用mobiscroll控件

    由于需要使用mobiscroll,需要引入JQ,但引入JQ后相关弹出的模板无法正常,怎么办?

    data-scroll="true" 和 input元素冲突

    我在一个可以滚动的article中放了一个 ,问题出现了,如果给article加上data-scroll="true" 属性就不能输入了,点击input无法取得焦点(就是光标不能定位到输入框中),无法输入;去掉这个属性,就不能滚动了。

    我不知道哪里出问题了 ⊙﹏⊙b汗 ,求助

    怎么在js中显示(切换)想要的页面(section)呢?

    我想达到这种效果:
    页面元素:

    <a href='#' target_id='douban_movie_id'>X战警</a> 
    <section id="movie_section"></section>
    <script id="movie_tpl" type="text/html"></script>
    

    动作--->
    点击 这个a链接
    1、弹出loading 框
    2、调用豆瓣电影的api,zepto的jsonp请求
    3、在success中将返回的数据 渲染模板 , $.tmpl
    4、关闭loading窗 显示 movie_section

    问题是在怎么在js中显示想要的页面呢? 或许这个问题很简单,但确实困扰了我很久了。

    1: J.showMask();
    2: $.getJSON(douban_api_url + 'subject/' + douban_movie_id + '?apikey=' +                   douban_api_key + '&callback=?', function (remoteData) {
          3: J.tmpl('#movie_section', 'movie_tpl', remoteData); 
          J.Scroll('#moviedetail');//刷新滚动条
          //how to  show movie_section
          //??????
          J.hideMask();
    });
    

    大家谈谈对jingle的使用感受

    最近有个webapp的需求,看了jingle的demo,感觉还不错,不知道大家使用的过程中有什么感受,比如兼容性方面,性能方面等。若果有成功的案列,大家也可以分享一下,谢谢!

    使用jingle一个小建议

    自己学习jingle也有3-4个月了,感觉代码写的很不错,简洁易懂。我发现一个关于zepto.js 使用ajax请求本地html时,并没有声明dataType为html,浏览器会自动识别目标文件格式,在不设置服务器的情况下ajax请求可能发生错误,只要加上这个dataType声明,及时静态页面也可以正常跳转页面。

    关于slider的_autoplay()定时器问题

    假如我在A section页面使用了slider 然后设置autoplay:true,然后点开其他页面再回到A页面的时候,slider很明显图片的播放速度飞快,是否每次回到A都会初始化,那_autoplay()的定时器应该要清一下吧?

    关于Toast提示无效

    我用的Jingle0.41版本,调用的Toast方法弹出提示无效,页面没有弹出东西呢,电脑上调试也没有报错,就是没反应额

    <a href="#about_section" data-target="section" 这个怎么传递参数啊 我想把about_section传递到about.php?id=131

    <a href="#about_section" data-target="section" 这个怎么传递参数啊 我想把about_section传递到about.php?id=131

    <script type="text/html" id="tpl_reserve"> {each $data}
  • {$value.status}
    {$value.title}

    {$value.loanAddr}

    登记日期:{$value.regDate}

    最后取书日期: {$value.deadline}

  • {/each} </script>

    这种模板循环 不会用啊 能不能改成原生态的啊

    使用section做子页出现的缓存问题

    问题是这样:项目打开后,是一个html页面,点击某个按钮是一个section子页的列表页,再点击列表页中某一项,又打开一个section的子页。这两个section子页都是通过联网加载数据动态渲染出来的,当我返回上一级页面再进入的时候,页面使用了缓存,而我又不想使用缓存,请问我该怎么操作呢?

    发现一些问题 麻烦能抽时间看看

    1、表单组件列表状态下 如果使用多选的话会很错乱就是左边文字 右边空间的那个
    2、希望能有折叠菜单的组件
    3、感觉侧边栏菜单的兼容性不是很好 经常点开宽度不一样
    4、对第三方内核的浏览器 比如百度手机浏览器 侧栏有点问题

    输入法导致footer出现漂移、遮罩组件显示白屏

    1、在测试机HTC G7、索尼LT29上,都是4.4.2系统,百度输入法 和 原生输入法,填写表单时,输入法会遮住输入框,并且footer元素会一直固定在输入法的顶部,输入完输入法不自动隐藏。应该是个bug。

    理想的方式:当点击输入框的时候,输入法打开,输入框取得焦点且定位在输入法顶上,其他元素不影响输入体验。完成输入,失去焦点后输入法自动收缩隐藏。

    2、遮罩组件在页面切换的过程中出现半幅白屏,短暂卡顿;

    页面间传参的问题

    怎么在页面间传参,比如详情页要获取列表页传过来的参数,用js获取url的参数时获取不了

    jingle是不是不能搭载太多section的子级页面?

    假设项目是一个首页,首页可以进入下一页是一个列表,列表可以进入下一页是该项内容的明细页。
    现在,当我在首页打开过一个列表页(section页面),再从列表页(section页面)打开明细页(section页面),第一次这个操作是没有问题的。
    但是,当我在上面这个操作进行返回到上两页,再从首页进入其他列表页(section页面),再从列表页(section页面)打开明细页(section页面)时;就会出现之前显示过的列表页(section)或者明细页(section页面)。
    不知道是什么原因所导致,请问是不是不能搭载太多section的子级页面?

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.