npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ctmobile/ui-cascadecompared-sd

v1.0.2

Published

支持移动端的UI组件-CascadeCompared

Downloads

13

Readme

CascadeCompared

基本布局

常见的布局如下:

  • ct-cascadecompared和ct-stickuplayout - 代表是一个cascadecompared组件
    • ct-cascadecompared-indicator - 代表指示器
      • ct-cascadecompared-fixedWrap - 代表固定的部分
        • ct-cascadecompared-item - 代表固定部分的外层 这个元素始终只有一个
          • ct-cascadecompared-cell - 代表固定部分的里层
      • ct-cascadecompared-autoWrap - 代表可以滚动的部分
        • ct-cascadecompared-cell - 代表可滚动的单元格 元素个数同列数相同
    • ct-cascadecompared-master - 代表主体部分
      • ct-cascadecompared-master-inner - 代表主体内的部分
        • ct-stickuplayout-fixed - 固定的列头
        • ct-stickuplayout-inner - 主体部分
          • ct-stickuplayout-item - 一行
            • ct-stickuplayout-item-header - 一行的头
            • ct-stickuplayout-item-content - 一行的内容部分
              • ct-cascadecompared-fixedWrap - 代表固定的部分
                • ct-cascadecompared-item - 代表固定部分的外层 个数等于行数
                  • ct-cascadecompared-cell - 代表固定部分的里层
              • ct-cascadecompared-autoWrap - 代表可以滚动的部分外层
                • ct-cascadecompared-autoInner - 代表可滚动的部分内层
                  • ct-cascadecompared-item - 代表固定部分的外层 个数等于行数
                    • ct-cascadecompared-cell - 代表固定部分的里层 个数等于列数

初始化


  import CascadeCompared from '@ctmobile/ui-cascadecompared';
  import '@ctmobile/ui-cascadecompared/cascadecompared.less';
  const cascadecompared = CascadeCompared.create(el,config = {columnsWidth = [], rowsHeight = []});

配置项

| 参数 | 类型 | 描述 | | --- | --- | --- | | columnsWidth | array | 列的宽度,例如[50,80,90,....],如果想跳过,可以写成null,undefined,'',跳过的宽度默认为6rem | | rowsHeight | array | 行的高度,例如[50,80,90,....],如果想跳过,可以写成null,undefined,'',跳过的宽度默认为3rem |

例子

html


        <!--基本的-->
        <dl>
            <dt>
              <h3 class="title">基本的</h3>
            </dt>
            <dd>
              <div class="ct-stickuplayout ct-cascadecompared" id="cascadecompared-demo-base">
                <div class="ct-cascadecompared-indicator">

                  <div class="ct-cascadecompared-autoWrap">
                    <div class="ct-cascadecompared-item">
                      <span class="ct-cascadecompared-cell">指标</span>
                      <span class="ct-cascadecompared-cell">比较1</span>
                      <span class="ct-cascadecompared-cell">比较2</span>
                      <span class="ct-cascadecompared-cell">比较3</span>
                      <span class="ct-cascadecompared-cell">比较4</span>
                      <span class="ct-cascadecompared-cell">比较5</span>
                      <span class="ct-cascadecompared-cell">比较6</span>
                      <span class="ct-cascadecompared-cell">比较7</span>
                      <span class="ct-cascadecompared-cell">比较8</span>
                      <span class="ct-cascadecompared-cell">比较9</span>
                    </div>
                  </div>
                </div>

              </div>
            </dd>
          </dl>

        <!--动态插入和删除-->
        <dl>
            <dt>
              <h3 class="title">动态插入和删除</h3>
              <div class="toolbar">
                <button id="cascadecompared-demo-dynamic-append">插入</button>
              </div>
            </dt>
            <dd>
              <div class="ct-stickuplayout ct-cascadecompared" id="cascadecompared-demo-dynamic">
                <div class="ct-cascadecompared-indicator">

                  <div class="ct-cascadecompared-autoWrap">
                    <div class="ct-cascadecompared-item">
                      <span class="ct-cascadecompared-cell">指标</span>
                      <span class="ct-cascadecompared-cell">比较1</span>
                      <span class="ct-cascadecompared-cell">比较2</span>
                      <span class="ct-cascadecompared-cell">比较3</span>
                      <span class="ct-cascadecompared-cell">比较4</span>
                      <span class="ct-cascadecompared-cell">比较5</span>
                      <span class="ct-cascadecompared-cell">比较6</span>
                      <span class="ct-cascadecompared-cell">比较7</span>
                      <span class="ct-cascadecompared-cell">比较8</span>
                      <span class="ct-cascadecompared-cell">比较9</span>
                    </div>
                  </div>
                </div>

              </div>
            </dd>
          </dl>

        <!--滚动到指定位置(通过索引)-->
        <dl>
            <dt>
              <h3 class="title">滚动到指定位置(通过索引)</h3>
              <div class="toolbar">
                <div class="toolbar">
                  <button id="cascadecompared-demo-scrollbyindex-noanimation-btn">滚动到最后一行(无动画)</button>
                  <button id="cascadecompared-demo-scrollbyindex-animation-btn">滚动到最后一行(有动画)</button>
                  <button id="cascadecompared-demo-scrollbyindex-top-btn">回到顶部</button>
                </div>
              </div>
            </dt>
            <dd>
              <div class="ct-stickuplayout ct-cascadecompared" id="cascadecompared-demo-scrollbyindex">
                <div class="ct-cascadecompared-indicator">

                  <div class="ct-cascadecompared-autoWrap">
                    <div class="ct-cascadecompared-item">
                      <span class="ct-cascadecompared-cell">指标</span>
                      <span class="ct-cascadecompared-cell">比较1</span>
                      <span class="ct-cascadecompared-cell">比较2</span>
                      <span class="ct-cascadecompared-cell">比较3</span>
                      <span class="ct-cascadecompared-cell">比较4</span>
                      <span class="ct-cascadecompared-cell">比较5</span>
                      <span class="ct-cascadecompared-cell">比较6</span>
                      <span class="ct-cascadecompared-cell">比较7</span>
                      <span class="ct-cascadecompared-cell">比较8</span>
                      <span class="ct-cascadecompared-cell">比较9</span>
                    </div>
                  </div>
                </div>

              </div>
            </dd>
          </dl>

        <!--滚动到指定位置(通过dom)-->
        <dl>
            <dt>
              <h3 class="title">滚动到指定位置(通过Dom)</h3>
              <div class="toolbar">
                <div class="toolbar">
                  <button id="cascadecompared-demo-scrollbyel-noanimation-btn">滚动到最后一行(无动画)</button>
                  <button id="cascadecompared-demo-scrollbyel-animation-btn">滚动到最后一行(有动画)</button>
                  <button id="cascadecompared-demo-scrollbyel-top-btn">回到顶部</button>
                </div>
              </div>
            </dt>
            <dd>
              <div class="ct-stickuplayout ct-cascadecompared" id="cascadecompared-demo-scrollbyel">
                <div class="ct-cascadecompared-indicator">

                  <div class="ct-cascadecompared-autoWrap">
                    <div class="ct-cascadecompared-item">
                      <span class="ct-cascadecompared-cell">指标</span>
                      <span class="ct-cascadecompared-cell">比较1</span>
                      <span class="ct-cascadecompared-cell">比较2</span>
                      <span class="ct-cascadecompared-cell">比较3</span>
                      <span class="ct-cascadecompared-cell">比较4</span>
                      <span class="ct-cascadecompared-cell">比较5</span>
                      <span class="ct-cascadecompared-cell">比较6</span>
                      <span class="ct-cascadecompared-cell">比较7</span>
                      <span class="ct-cascadecompared-cell">比较8</span>
                      <span class="ct-cascadecompared-cell">比较9</span>
                    </div>
                  </div>
                </div>

              </div>
            </dd>
          </dl>

js


        <!--例子的js-->
        import $ from 'jquery';
        import CascadeCompared from '@ctmobile/ui-cascadecompared';
        import '@ctmobile/ui-cascadecompared/cascadecompared.less';

        let dynamicIndex = 0;

        function getDynamicTemplate(title) {
          return (
            <pre>
            <code class="html">
            `<li class="ct-stickuplayout-item">
              <div class="ct-stickuplayout-item-header"><span class="title">${title}</span></div>
              <div class="ct-stickuplayout-item-content">
              <div class="ct-cascadecompared-fixedWrap">
                <div class="ct-cascadecompared-item">
                  <span class="ct-cascadecompared-cell">厂家指导价</span>
                </div>
                <div class="ct-cascadecompared-item">
                  <span class="ct-cascadecompared-cell">厂家指导价</span>
                </div>
                <div class="ct-cascadecompared-item">
                  <span class="ct-cascadecompared-cell">厂家指导价</span>
                </div>
              </div>
              <div class="ct-cascadecompared-autoWrap">
                <div class="ct-cascadecompared-autoInner">
                  <div class="ct-cascadecompared-item">
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                  </div>
                  <div class="ct-cascadecompared-item">
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                  </div>
                  <div class="ct-cascadecompared-item">
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                    <span class="ct-cascadecompared-cell">厂家指导价</span>
                  </div>
                </div>
              </div>
             </div>
             </li>`
            </code>
            </pre>
          );
        }

        function initListView(el) {
          let str = '';
          for(let i = 0; i < 10; i++) {
            str += getDynamicTemplate(`header${i + 1}`);
          }

          $(el).append(str);
        }

        // 基本的
        initListView($('#cascadecompared-demo-base .ct-stickuplayout-inner')[0]);
        CascadeCompared.create($('#cascadecompared-demo-base')[0]);

        // 动态的插入
        initListView($('#cascadecompared-demo-dynamic .ct-stickuplayout-inner')[0]);
        const cascadeComparedDynamic = CascadeCompared.create($('#cascadecompared-demo-dynamic')[0]);
        $('#cascadecompared-demo-dynamic-append').on('click', () => {
          const $dynamicItemJO = $(getDynamicTemplate(`动态增加${++dynamicIndex}`));
          $('#cascadecompared-demo-dynamic .ct-stickuplayout-inner').append($dynamicItemJO);
          cascadeComparedDynamic.refresh();
          cascadeComparedDynamic.scrollToByHeaderEl($dynamicItemJO.prev().find('.ct-stickuplayout-item-header')[0]);
        });

        // 滚动到指定位置(通过索引)
        initListView($('#cascadecompared-demo-scrollbyindex .ct-stickuplayout-inner')[0]);
        const cascadeComparedScrollbyindex = CascadeCompared.create($('#cascadecompared-demo-scrollbyindex')[0]);
        const $cascadeComparedScrollbyIndexItemJO = $('#cascadecompared-demo-scrollbyindex .ct-stickuplayout-inner .ct-stickuplayout-item');
        $('#cascadecompared-demo-scrollbyindex-noanimation-btn').on('click', () => {
          cascadeComparedScrollbyindex.scrollToByIndex($cascadeComparedScrollbyIndexItemJO.length - 2, 0);
        });
        $('#cascadecompared-demo-scrollbyindex-animation-btn').on('click', () => {
          cascadeComparedScrollbyindex.scrollToByIndex($cascadeComparedScrollbyIndexItemJO.length - 2, 600);
        });
        $('#cascadecompared-demo-scrollbyindex-top-btn').on('click', () => {
          cascadeComparedScrollbyindex.scrollToByIndex(0);
        });

        // 滚动到指定位置(通过dom)
        initListView($('#cascadecompared-demo-scrollbyel .ct-stickuplayout-inner')[0]);
        const cascadeComparedScrollbyel = CascadeCompared.create($('#cascadecompared-demo-scrollbyel')[0]);
        const $cascadeComparedScrollbyelItemJO = $('#cascadecompared-demo-scrollbyel .ct-stickuplayout-inner .ct-stickuplayout-item');
        $('#cascadecompared-demo-scrollbyel-noanimation-btn').on('click', () => {
          cascadeComparedScrollbyel.scrollToByHeaderEl($cascadeComparedScrollbyelItemJO[$cascadeComparedScrollbyelItemJO.length - 2].querySelector('.ct-stickuplayout-item-header'), 0);
        });
        $('#cascadecompared-demo-scrollbyel-animation-btn').on('click', () => {
          cascadeComparedScrollbyel.scrollToByHeaderEl($cascadeComparedScrollbyelItemJO[$cascadeComparedScrollbyelItemJO.length - 2].querySelector('.ct-stickuplayout-item-header'), 600);
        });
        $('#cascadecompared-demo-scrollbyel-top-btn').on('click', () => {
          cascadeComparedScrollbyel.scrollToByHeaderEl($cascadeComparedScrollbyelItemJO[0].querySelector('.ct-stickuplayout-item-header'));
        });

方法

scrollToByIndex(index,duration) - 通过索引滚动到某一项

  • index-number 要滚动到目标的索引
  • duration-number 滚动持续的时间(默认是300毫秒)

scrollToByHeaderEl(headerEl,duration) - 通过dom滚动到某一项

  • headerEl-HtmlElement 要滚动到的dom(带有ct-cascadecompared-item-header样式的元素)
  • duration-number 滚动持续的时间(默认是300毫秒)

refresh() - 刷新整个StickupLayout

on(type, handler) - 注册事件

  • type-string 注册事件的类型,包括[change]
  • handler-Function 注册事件的回调函数

事件

| 名称 | 说明 | | --- | --- | | change | 滚动切换时触发 | | scrollEnd | 列滚动完成之后触发 |


  <!--事件例子代码-->
  import $ from 'jquery';
  import CascadeCompared from '@ctmobile/ui-cascadecompared';
  import '@ctmobile/ui-cascadecompared/cascadecompared.less';

  // 基本的
  const cascadeCompared = CascadeCompared.create($('#cascadecompared-demo-base')[0]);
  cascadeCompared.on('change', (dom, index) => {
    console.log(dom);
    console.log(index);
  });
  cascadeCompared.on('scrollend', () => {
    console.log('scrollend');
  });