Skip to content

Latest commit

 

History

History
246 lines (224 loc) · 7.63 KB

File metadata and controls

246 lines (224 loc) · 7.63 KB

通用样式库

  • order: 3
  • category: alice

Life is like a box of chocolate. 「 Forrest Gump 」1994

这里是一套按照 Alice 规范 和支付宝视觉规范搭建的的通用样式模块库。 找到你需要的模块,复制代码,然后享受生活去吧。


<script type="text/spm">
    require('./widget.css');
</script>

<script type="text/template" id="alice-module">
    <div class="alice-module">
        <div class="alice-module-head">
            <h2 class="alice-module-title">
                <a href="#"></a>
            </h2>
            <span class="alice-module-version"></span>
            <p class="alice-module-description"></p>
        </div>
        <img class="alice-loading" src="data:image/gif;base64,R0lGODlhEAALAPQAAP///z2LqeLt8dvp7u7090GNqz2LqV+fuJ/F1IW2ycrf51aatHWswaXJ14i4ys3h6FmctUCMqniuw+vz9eHs8fb5+meku+Tu8vT4+cfd5bbT3tbm7PH2+AAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA">
    </div>
</script>

<script type="text/template" id="alice-module-demo">
    <div class="alice-module-demo">
        <h3 class="alice-module-subtitle"></h3>
        <a class="alice-module-sourcecode" href="javascript:;">查看源码</a>
        <div class="alice-module-dom"></div>
        <pre class="alice-module-code"></pre>
    </div>
</script>

<style>
.alice-module {
    border-bottom: 1px solid #eee;
    padding: 0;
    margin-top: 20px;
    margin-bottom: 50px;
    font:12px/1.5 tahoma,arial,Hiragino Sans GB,"Microsoft Yahei",\5b8b\4f53;
}
.alice-module-head {
    overflow: hidden;
}
.alice-module-title {
    margin: 0;
    font-size: 28px;
    font-family: Trebuchet MS;
    display: inline;
}
.alice-module-title a {
    color: #7CAE23;
    cursor: pointer;
}
.alice-module-link {
    font-size: 14px;
}
.alice-module-version {
    font-size: 12px;
    font-weight: normal;
    margin-left: 0.5em;
    color: #888;
    font-family: Menlo,Monaco,"Courier New",monospace;
}
p.alice-module-description {
    font-size: 14px;
    color: #888;
    margin: 10px 0 20px;
}
.alice-module-demo {
    border: 1px solid #eee;
    border-bottom: none;
    padding: 20px 130px 20px 20px;
    position: relative;
}
.alice-module-demo:hover {
    background: #fdfdfd;
}
.alice-module-dom {
    margin-bottom: 8px;
}
.alice-module-code {
    display: none;
    margin: 0!important;
}
h3.alice-module-subtitle {
    position: absolute;
    top: 0;
    right: 0;
    border-radius: 3px;
    margin: 0;
    color: #777;
    font-size: 12px;
    background: #F8F8F8;
    border-bottom: 1px solid #ddd;
    border-left: 1px solid #ddd;
    display: block;
    font-size: 12px;
    width: 100px;
    padding: 5px 10px;
    opacity: 0.8;
}
.alice-module-sourcecode {
    position: absolute;
    right: 125px;
    top: 0;
    font-size: 12px;
    padding: 5px 10px;
    background: #EFFFE4;
    border-radius: 3px;
    display: none;
    z-index: 99;
    opacity: 0.8;
}
a {
    color: #08c;
}
.alice-loading {
    margin-bottom: 20px;
}
.black {
    font-size: 12px;
    padding: 2px;
    border-radius: 2px;
    background: rgba(0, 0, 0, 0.55);
    color: #fff;
}
</style>

<div class="alice-modules"></div>

<script type="text/spm">
var $ = require('jquery');
var _ = require('underscore');
var Popup = require('arale-popup');

$('.alice-modules').on('mouseenter', '.alice-module-demo', function() {
    $(this).find('.alice-module-sourcecode').fadeIn(200);
}).on('mouseleave', '.alice-module-demo', function() {
    $(this).find('.alice-module-sourcecode').fadeOut(200);
});

new Popup({
    trigger: '.alice-module-sourcecode',
    template: '<div class="black">源码在下方</div>',
    delay: -1,
    delegateNode: '.alice-modules'
});

$('.alice-modules').on('click', '.alice-module-sourcecode', function() {
    var code = $(this).parent().find('.alice-module-code');
    if (code.is(':hidden')) {
        code.animate({
            opacity: 1,
            height: 'toggle'
        }, 200);
    } else {
        code.animate({
            opacity: 0,
            height: 'toggle'
        }, 200);
    }
});

$.getJSON('/docs/widgets.json?nowrap', function(data) {
    var alias = data || {};
    var deps = _.pairs(alias);
    _.each(deps, function(dep) {
        var name = dep[0].replace('alice-', '');
        var version = dep[1];

        var moduleNode = $($('#alice-module').html());
        moduleNode.find('.alice-module-title a')
            .attr('href', '/' + name)
            .attr('id', 'modules-' + name)
            .html(name);
        moduleNode.find('.alice-module-version').html(
          '<a href="http://spmjs.io/package/alice-' + name + '" target="_blank">' +
            '<img src="http://spmjs.io/badge/alice-' + name + '">' +
          '</a>'
        );
        moduleNode.appendTo('.alice-modules');
        var list = substractTitle(moduleNode.find('h2'));

        $.ajax({
            url: 'http://docs.spmjs.io/alice-' + name + '/latest/',
            dataType: 'html',
            success: function(data) {
                data = $(data);
                moduleNode.find('.alice-module-description')
                    .html(data.find('.entry-content > p:first-child').html());

                data.find('.nico-insert-code').each(function(index, item) {
                    var demoNode = $($('#alice-module-demo').html());
                    item = $(item);
                    if (item.children()[0].tagName === 'LINK' ||
                        item.children()[0].tagName === 'STYLE') {
                      return;
                    }
                    var subtitle = item.prev().html();
                    if (item.prev()[0].tagName !== 'H3' || !subtitle) {
                        subtitle = '默认';
                    }
                    demoNode.find('.alice-module-subtitle').html(subtitle);
                    demoNode.find('.alice-module-dom').html(item.html());
                    // 直接使用目标页面生成的高亮代码,不再动态渲染
                    var codeHtml = item.next('.highlight').find('pre').html();
                    demoNode.find('.alice-module-code').html(codeHtml);

                    moduleNode.find('.alice-loading').remove();
                    demoNode.appendTo(moduleNode);
                });

                // 中文关键词,一般放在 keywords 数组的第一个
                // 在这里写到左边索引栏中
                var keywords = data.find('.sidebar-wrapper .sidebar-description').data('keyword');
                if (keywords) {
                    list.find('i').html(keywords);
                }
            }
        });
    });
});

function substractTitle(item) {
    $('.side-loading').remove();
    item = item.find('a');
    var list = $($('#list-template').html());
    list.find('a').html(item.html() + list.find('a').html());
    list.find('a').attr('href', '#' + item.attr('id'));
    list.appendTo('.side-area ul');
    return list;
}
</script>