JavaScript State Manager是一种轻量级的、易于使用的状态管理器,主要用于响应式网站。它不需要任何的JavaScript框架。你可以定义断点将运行在当前断点的JavaScript代码打包在一起。

图片描述

  • 我为什么要使用SimpleStateManager而不是媒体查询?

媒体查询允许您改变一个网站是基于一系列的条件,相反,SimpleStateManager允许你改变你的网站的功能。这样,媒体查询和SimpleStateManager称赞对方,在情况你改变网站的外观也可能改变功能。

主要特性

  • 超轻量级

  • 不依赖任何第三方类库

  • 支持不同状态添加删除 - add/remove,拥有一个完整的API文档

  • 支持扩展

示例代码

    ssm.addState({
        id: 'mobile',
        maxWidth: 767,
        onEnter: function(){
            console.log('enter mobile');
        }
    });
     
    ssm.addState({
        id: 'tablet',
        minWidth: 768,
        maxWidth: 1023,
        onEnter: function(){
            console.log('enter tablet');
        }
    });
     
    ssm.addState({
        id: 'desktop',
        minWidth: 1024,
        onEnter: function(){
            console.log('enter desktop');
        }
    });
添加多个状态
    ssm.addStates([
        {
            id: 'mobile',
            maxWidth: 767,
            onEnter: function(){
                console.log('enter mobile');
            }
        },
        {
            id: 'tablet',
            minWidth: 768,
            maxWidth: 1023,
            onEnter: function(){
                console.log('enter tablet');
            }
        },
        {
            id: 'desktop',
            minWidth: 1024,
            onEnter: function(){
                console.log('enter desktop');
            }
       }
    ]);

ssm.removeState('mobile'); //删除单个状态
ssm.removeStates(['tablet', 'mobile']); //删除多个状态

态添加后,需要调用ready()方法来触发,如下:

ssm.ready();
  • 支持链式操作,如下:

    ssm.addState({
        id: 'mobile',
        maxWidth: 767,
        onEnter: function(){
            document.getElementById('hero').style.backgroundColor = "#daa23e";
        }
    }).ready();

当屏幕大于979px的时候:
图片描述
当小于979px的时候就会给他添加一些事件:
图片描述


老谭
1.2k 声望14 粉丝

孤独从来就不会毁掉一个人。