Commit 1a274491caa516522760d1d8888240cf7565e379

Authored by bichao.dong
1 parent 63e06640

first commit

Showing 71 changed files with 4751 additions and 0 deletions

Too many changes to show.

To preserve performance only 71 of 3809 files are displayed.

css/common.css 0 → 100644
  1 +* {
  2 + -moz-tap-highlight-color: rgba(0, 0, 0, 0);
  3 + -o-tap-highlight-color: rgba(0, 0, 0, 0);
  4 + -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  5 +}
  6 +html {
  7 + height: 100%;
  8 +}
  9 +html,
  10 +body,
  11 +div,
  12 +span,
  13 +object,
  14 +iframe,
  15 +h1,
  16 +h2,
  17 +h3,
  18 +h4,
  19 +h5,
  20 +h6,
  21 +p,
  22 +blockquote,
  23 +pre,
  24 +abbr,
  25 +address,
  26 +cite,
  27 +code,
  28 +del,
  29 +dfn,
  30 +em,
  31 +img,
  32 +ins,
  33 +kbd,
  34 +q,
  35 +samp,
  36 +small,
  37 +strong,
  38 +sub,
  39 +sup,
  40 +var,
  41 +b,
  42 +i,
  43 +dl,
  44 +dt,
  45 +dd,
  46 +ol,
  47 +ul,
  48 +li,
  49 +fieldset,
  50 +form,
  51 +label,
  52 +legend,
  53 +table,
  54 +caption,
  55 +tbody,
  56 +tfoot,
  57 +thead,
  58 +tr,
  59 +th,
  60 +td,
  61 +article,
  62 +aside,
  63 +canvas,
  64 +details,
  65 +figcaption,
  66 +figure,
  67 +footer,
  68 +header,
  69 +menu,
  70 +nav,
  71 +section,
  72 +summary,
  73 +time,
  74 +mark,
  75 +audio,
  76 +video {
  77 + margin: 0;
  78 + padding: 0;
  79 + border: 0;
  80 + outline: 0;
  81 + vertical-align: baseline;
  82 + background: transparent;
  83 +}
  84 +body {
  85 + font: 12px/1.5 sans-serif;
  86 + background-color: #F5F5F5;
  87 + position: relative;
  88 + color: #333;
  89 + min-height: 100%;
  90 + overflow-x: hidden;
  91 +}
  92 +article,
  93 +aside,
  94 +details,
  95 +figcaption,
  96 +figure,
  97 +footer,
  98 +header,
  99 +menu,
  100 +nav,
  101 +section {
  102 + display: block;
  103 +}
  104 +nav ul {
  105 + list-style: none;
  106 +}
  107 +li {
  108 + list-style: none;
  109 +}
  110 +em {
  111 + font-style: normal;
  112 +}
  113 +ins {
  114 + background-color: #ff9;
  115 + color: #000;
  116 + text-decoration: none;
  117 +}
  118 +mark {
  119 + background-color: #ff9;
  120 + color: #000;
  121 + font-style: italic;
  122 + font-weight: bold;
  123 +}
  124 +table {
  125 + border-collapse: collapse;
  126 + border-spacing: 0;
  127 +}
  128 +hr {
  129 + display: block;
  130 + height: 1px;
  131 + border: 0;
  132 + border-top: 1px solid #cccccc;
  133 + margin: 0;
  134 + padding: 0;
  135 +}
  136 +input,
  137 +select {
  138 + vertical-align: middle;
  139 +}
  140 +input:focus,
  141 +button:focus {
  142 + outline: none;
  143 +}
  144 +a {
  145 + color: #333;
  146 + text-decoration: none;
  147 + margin: 0;
  148 + padding: 0;
  149 + vertical-align: baseline;
  150 + background: transparent;
  151 +}
  152 +a:active,
  153 +a:visited {
  154 + color: #333;
  155 +}
  156 +input,
  157 +img {
  158 + border: 0;
  159 + vertical-align: middle;
  160 +}
  161 +textarea,
  162 +input,
  163 +a {
  164 + -webkit-tap-highlight-color: transparent;
  165 +}
  166 +/* 清除浮动 */
  167 +.clearfix,
  168 +.clear {
  169 + display: inline-table;
  170 + zoom: 1;
  171 +}
  172 +* html .clearfix,
  173 +* html .clear {
  174 + height: 1%;
  175 +}
  176 +* html .clearfix,
  177 +* html .clear {
  178 + zoom: 1;
  179 +}
  180 +.clearfix,
  181 +.clear {
  182 + display: block;
  183 +}
  184 +.clear {
  185 + clear: both;
  186 +}
  187 +.clearfix:after,
  188 +.clear:after {
  189 + content: " ";
  190 + display: block;
  191 + height: 0;
  192 + clear: both;
  193 + visibility: hidden;
  194 + line-height: 0px;
  195 +}
  196 +.border-1px {
  197 + position: relative;
  198 +}
  199 +.border-1px:before,
  200 +.border-1px:after {
  201 + border-top: 1px solid #e2e2e2;
  202 + content: '';
  203 + display: block;
  204 + width: 100%;
  205 + position: absolute;
  206 + left: 0;
  207 + z-index: 1;
  208 +}
  209 +.border-1px:before {
  210 + top: 0;
  211 +}
  212 +.border-1px:after {
  213 + bottom: 0;
  214 +}
  215 +.border-1px.border-top:after {
  216 + display: none;
  217 +}
  218 +.border-1px.border-bottom:before {
  219 + display: none;
  220 +}
  221 +.border-1px-full {
  222 + position: relative;
  223 +}
  224 +.border-1px-full:after {
  225 + content: '';
  226 + position: absolute;
  227 + top: 0;
  228 + left: 0;
  229 + z-index: 1;
  230 + border: 1px solid #e2e2e2;
  231 + -webkit-box-sizing: border-box;
  232 + box-sizing: border-box;
  233 + width: 200%;
  234 + height: 200%;
  235 + -webkit-transform: scale(0.5);
  236 + transform: scale(0.5);
  237 + -webkit-transform-origin: left top;
  238 + transform-origin: left top;
  239 +}
  240 +@media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5) {
  241 + .border-1px::after,
  242 + .border-1px::before {
  243 + -webkit-transform: scaleY(0.7);
  244 + -webkit-transform-origin: 0 0;
  245 + transform: scaleY(0.7);
  246 + }
  247 + .border-1px::after {
  248 + -webkit-transform-origin: left bottom;
  249 + }
  250 +}
  251 +@media (-webkit-min-device-pixel-ratio: 2), (min-device-pixel-ratio: 2) {
  252 + .border-1px::after,
  253 + .border-1px::before {
  254 + -webkit-transform: scaleY(0.5);
  255 + transform: scaleY(0.5);
  256 + }
  257 +}
  258 +/***************************************************
  259 +* feature : 全局头部,提供默认 深色(绿底白字) & 浅色(白底黑字)主题;
  260 +* update : 2015/02/03;
  261 +* use : .m-header;
  262 +* extend : .header-*;
  263 +* example : <header class="m-header header-light"></header>;
  264 +* desc : 默认为深色主题, 通过 .header-light 来引用浅色主题;
  265 +* feedback : 此处填入 issue, 并请附带以下信息[os_version, browser_version, page_path, issue_description]
  266 +* - demo => [windows 7, IE 8, http://diligrp.com/icon.html, 在不定height下未能垂直居中];
  267 +****************************************************/
  268 +.m-header {
  269 + z-index: 5;
  270 + color: #FFF;
  271 + color: #ffffff;
  272 + background-color: #23AC38;
  273 + position: relative;
  274 +}
  275 +.m-header .head {
  276 + padding: 0 50px;
  277 + box-sizing: border-box;
  278 + height: 44px;
  279 + text-align: center;
  280 +}
  281 +.m-header .head h1 {
  282 + display: inline-block;
  283 + vertical-align: middle;
  284 + line-height: 44px;
  285 + font-weight: normal;
  286 + font-size: 18px;
  287 + white-space: nowrap;
  288 + text-overflow: ellipsis;
  289 + overflow: hidden;
  290 +}
  291 +.m-header .lt-bar,
  292 +.m-header .rt-bar {
  293 + position: absolute;
  294 + left: 0;
  295 + top: 0;
  296 + bottom: 0;
  297 + min-width: 44px;
  298 + line-height: 44px;
  299 + height: 100%;
  300 + text-align: center;
  301 + cursor: pointer;
  302 + z-index: 1;
  303 +}
  304 +.m-header .lt-bar {
  305 + float: left;
  306 +}
  307 +.m-header .lt-bar.text {
  308 + padding-left: 10px;
  309 + text-align: left;
  310 +}
  311 +.m-header .rt-bar {
  312 + float: right;
  313 + left: auto;
  314 + right: 0;
  315 +}
  316 +.m-header .rt-bar.text {
  317 + padding-right: 10px;
  318 + text-align: right;
  319 +}
  320 +.m-header .text {
  321 + text-align: center;
  322 + line-height: 44px;
  323 + font-size: 15px;
  324 + color: #FFF;
  325 +}
  326 +.m-header.header-light {
  327 + background-color: #FFF;
  328 + color: #666;
  329 +}
  330 +.m-header.header-light .text {
  331 + color: #666;
  332 +}
  333 +.m-header.header-light .m-input {
  334 + color: #333;
  335 +}
  336 +.m-header.header-light .m-input::-webkit-input-placeholder {
  337 + color: #999;
  338 +}
  339 +/*
  340 + * Swiper 2.7.0
  341 + * Mobile touch slider and framework with hardware accelerated transitions
  342 + *
  343 + * http://www.idangero.us/sliders/swiper/
  344 + *
  345 + * Copyright 2010-2014, Vladimir Kharlampidi
  346 + * The iDangero.us
  347 + * http://www.idangero.us/
  348 + *
  349 + * Licensed under GPL & MIT
  350 + *
  351 + * Released on: August 30, 2014
  352 +*/
  353 +/* ===============================================================
  354 +Basic Swiper Styles
  355 +================================================================*/
  356 +.swiper-container {
  357 + margin: 0 auto;
  358 + position: relative;
  359 + overflow: hidden;
  360 + -webkit-backface-visibility: hidden;
  361 + -moz-backface-visibility: hidden;
  362 + -ms-backface-visibility: hidden;
  363 + -o-backface-visibility: hidden;
  364 + backface-visibility: hidden;
  365 + /* Fix of Webkit flickering */
  366 + z-index: 1;
  367 +}
  368 +.swiper-wrapper {
  369 + position: relative;
  370 + width: 100%;
  371 + -webkit-transition-property: -webkit-transform, left, top;
  372 + -webkit-transition-duration: 0s;
  373 + -webkit-transform: translate3d(0px, 0, 0);
  374 + -webkit-transition-timing-function: ease;
  375 + -moz-transition-property: -moz-transform, left, top;
  376 + -moz-transition-duration: 0s;
  377 + -moz-transform: translate3d(0px, 0, 0);
  378 + -moz-transition-timing-function: ease;
  379 + -o-transition-property: -o-transform, left, top;
  380 + -o-transition-duration: 0s;
  381 + -o-transform: translate3d(0px, 0, 0);
  382 + -o-transition-timing-function: ease;
  383 + -o-transform: translate(0px, 0px);
  384 + -ms-transition-property: -ms-transform, left, top;
  385 + -ms-transition-duration: 0s;
  386 + -ms-transform: translate3d(0px, 0, 0);
  387 + -ms-transition-timing-function: ease;
  388 + transition-property: transform, left, top;
  389 + transition-duration: 0s;
  390 + transform: translate3d(0px, 0, 0);
  391 + transition-timing-function: ease;
  392 + -webkit-box-sizing: content-box;
  393 + -moz-box-sizing: content-box;
  394 + box-sizing: content-box;
  395 +}
  396 +.swiper-free-mode > .swiper-wrapper {
  397 + -webkit-transition-timing-function: ease-out;
  398 + -moz-transition-timing-function: ease-out;
  399 + -ms-transition-timing-function: ease-out;
  400 + -o-transition-timing-function: ease-out;
  401 + transition-timing-function: ease-out;
  402 + margin: 0 auto;
  403 +}
  404 +.swiper-slide {
  405 + float: left;
  406 + -webkit-box-sizing: content-box;
  407 + -moz-box-sizing: content-box;
  408 + box-sizing: content-box;
  409 +}
  410 +/* IE10 Windows Phone 8 Fixes */
  411 +.swiper-wp8-horizontal {
  412 + -ms-touch-action: pan-y;
  413 +}
  414 +.swiper-wp8-vertical {
  415 + -ms-touch-action: pan-x;
  416 +}
  417 +/* ===============================================================
  418 +Your custom styles, here you need to specify container's and slide's
  419 +sizes, pagination, etc.
  420 +================================================================*/
  421 +.swiper-container {
  422 + /* Specify Swiper's Size: */
  423 + /*width:200px;
  424 + height: 100px;*/
  425 +}
  426 +.swiper-slide {
  427 + /* Specify Slides's Size: */
  428 + /*width: 100%;
  429 + height: 100%;*/
  430 +}
  431 +.swiper-slide-active {
  432 + /* Specific active slide styling: */
  433 +}
  434 +.swiper-slide-visible {
  435 + /* Specific visible slide styling: */
  436 +}
  437 +/* ===============================================================
  438 +Pagination Styles
  439 +================================================================*/
  440 +.swiper-pagination-switch {
  441 + /* Stylize pagination button: */
  442 +}
  443 +.swiper-active-switch {
  444 + /* Specific active button style: */
  445 +}
  446 +.swiper-visible-switch {
  447 + /* Specific visible button style: */
  448 +}
  449 +.swiper-pagination {
  450 + position: absolute;
  451 + text-align: center;
  452 + -webkit-transition: 300ms;
  453 + -moz-transition: 300ms;
  454 + -o-transition: 300ms;
  455 + transition: 300ms;
  456 + -webkit-transform: translate3d(0, 0, 0);
  457 + -ms-transform: translate3d(0, 0, 0);
  458 + -o-transform: translate3d(0, 0, 0);
  459 + transform: translate3d(0, 0, 0);
  460 + z-index: 10;
  461 +}
  462 +.swiper-pagination {
  463 + bottom: 10px;
  464 + left: 0;
  465 + width: 100%;
  466 +}
  467 +.swiper-pagination .swiper-pagination-switch {
  468 + margin: 0 5px;
  469 +}
  470 +.swiper-pagination-switch {
  471 + width: 8px;
  472 + height: 8px;
  473 + display: inline-block;
  474 + /*background: #FFF;*/
  475 + background: none;
  476 + -webkit-box-shadow: inset 0 0 0 2px #ddd;
  477 + box-shadow: inset 0 0 0 2px #ddd;
  478 + -webkit-box-shadow: inset hoff voff blur color;
  479 + box-shadow: inset hoff voff blur color;
  480 + border-radius: 100%;
  481 + /* -webkit-transition: all ease-in-out .15s;
  482 + -o-transition: all ease-in-out .15s;
  483 + transition: all ease-in-out .15s;*/
  484 +}
  485 +.swiper-active-switch {
  486 + opacity: 1;
  487 + -webkit-box-shadow: inset 0 0 0 4px #23AC38;
  488 + box-shadow: inset 0 0 0 4px #23AC38;
  489 + /*background: #23AC38;*/
  490 + /*-webkit-box-shadow: none;*/
  491 + /*box-shadow: none;*/
  492 +}
  493 +.m-slider {
  494 + height: 120px;
  495 + position: relative;
  496 + overflow: hidden;
  497 + font-size: 0;
  498 +}
  499 +.m-slider a {
  500 + display: block;
  501 + width: 100%;
  502 + height: 100%;
  503 +}
  504 +.m-slider img {
  505 + display: inline-block;
  506 + width: 100%;
  507 + height: 100%;
  508 + float: left;
  509 +}
  510 +.m-slider .swiper-container {
  511 + height: 100%;
  512 +}
  513 +.m-slider .swiper-wrapper {
  514 + height: 100%;
  515 +}
  516 +.m-section .section-head {
  517 + line-height: 45px;
  518 + padding: 0 10px;
  519 + background-color: #fff;
  520 + font-size: 14px;
  521 + color: #666;
  522 + text-align: left;
  523 + font-weight: bold;
  524 + margin-bottom: 10px;
  525 +}
  526 +.m-section .section-head:first-letter {
  527 + font-size: 18px;
  528 + color: #23ac38;
  529 +}
  530 +.section-items {
  531 + margin-bottom: 10px;
  532 +}
  533 +.section-items .section-item {
  534 + display: block;
  535 + margin-bottom: 5px;
  536 + width: 100%;
  537 +}
  538 +.section-items .section-item img {
  539 + width: 100%;
  540 + max-width: 100%;
  541 +}
  542 +.product-items {
  543 + background-color: #FFF;
  544 + margin-bottom: 10px;
  545 +}
  546 +.product-items .items .item {
  547 + width: 33.33%;
  548 + float: left;
  549 + font-size: 13px;
  550 + text-align: center;
  551 + padding: 8px 0;
  552 +}
  553 +.product-items .items .item a {
  554 + display: block;
  555 + position: relative;
  556 + z-index: 2;
  557 +}
  558 +.product-items .items .item h3 {
  559 + font-size: 13px;
  560 + padding: 0 5px;
  561 + font-weight: 700;
  562 + color: #333;
  563 + line-height: 16px;
  564 + padding: 0 10px;
  565 + text-align: left;
  566 + text-overflow: ellipsis;
  567 + overflow: hidden;
  568 + white-space: nowrap;
  569 +}
  570 +.product-items .items .item p {
  571 + padding: 0 10px;
  572 + text-align: left;
  573 +}
  574 +.product-items .items .item em {
  575 + text-align: left;
  576 + display: block;
  577 + font-size: 13px;
  578 + font-weight: 700;
  579 + font-style: normal;
  580 + color: #FA4535;
  581 + text-overflow: ellipsis;
  582 + overflow: hidden;
  583 + white-space: nowrap;
  584 +}
  585 +.product-items .items .item span {
  586 + display: block;
  587 + text-align: center;
  588 + overflow: hidden;
  589 + white-space: nowrap;
  590 + text-overflow: ellipsis;
  591 +}
  592 +.product-items .items .item .pic {
  593 + max-width: 100%;
  594 + height: 60px;
  595 + display: inline-block;
  596 + vertical-align: middle;
  597 +}
  598 +.product-items .items .item:after {
  599 + border-left: none;
  600 + border-top: none;
  601 +}
  602 +.m-list-view {
  603 + margin-bottom: 10px;
  604 +}
  605 +.m-list-view .cell {
  606 + font-size: 14px;
  607 + padding: 0 0 0 15px;
  608 + background-color: #FFF;
  609 + overflow: hidden;
  610 + position: relative;
  611 + text-align: left;
  612 +}
  613 +.m-list-view .cell-header {
  614 + background-color: #f8f8f8;
  615 + padding: 0 10px;
  616 +}
  617 +.m-list-view .cell-header .title {
  618 + font-size: 13px;
  619 + color: #333;
  620 + line-height: 35px;
  621 + width: auto;
  622 +}
  623 +.m-list-view .cell-header .text {
  624 + font-size: 13px;
  625 + line-height: 35px;
  626 + float: right;
  627 + color: #9e9e9e;
  628 + text-align: right;
  629 + margin: 0;
  630 +}
  631 +.m-list-view .cell-basic {
  632 + padding: 11px 10px;
  633 +}
  634 +.m-list-view .cell-basic .title,
  635 +.m-list-view .cell-basic .text {
  636 + float: none;
  637 + display: inline-block;
  638 + vertical-align: middle;
  639 + margin: 0 10px 0 0;
  640 + line-height: 1.5;
  641 +}
  642 +.m-list-view .cell-basic .sub-title {
  643 + padding-top: 10px;
  644 + font-size: 13px;
  645 + color: #999;
  646 +}
  647 +.m-list-view .cell-radio {
  648 + text-align: right;
  649 + padding: 0 10px;
  650 + margin-bottom: 10px;
  651 + background-color: #eee;
  652 +}
  653 +.m-list-view .cell-radio .title {
  654 + color: #333;
  655 + width: auto;
  656 + text-align: left;
  657 +}
  658 +.m-list-view .cell-radio .text {
  659 + float: none;
  660 + text-align: right;
  661 +}
  662 +.m-list-view .cell-radio .m-radio {
  663 + margin-left: 8px;
  664 +}
  665 +.m-list-view .cell-radio .m-table-view {
  666 + margin: 0 -10px;
  667 +}
  668 +.m-list-view .cell-radio .m-table-view .cell-radio {
  669 + margin: 0;
  670 + background-color: #FFF;
  671 +}
  672 +.m-list-view .cell-block {
  673 + padding: 8px 10px;
  674 +}
  675 +.m-list-view .cell-block h3 {
  676 + font-size: 16px;
  677 + font-weight: normal;
  678 + padding-right: 60px;
  679 + white-space: nowrap;
  680 + text-overflow: ellipsis;
  681 + overflow: hidden;
  682 +}
  683 +.m-list-view .cell-block p {
  684 + font-size: 14px;
  685 + color: #666;
  686 +}
  687 +.m-list-view .cell-block .bottom {
  688 + margin-top: 10px;
  689 + padding-top: 8px;
  690 + line-height: 30px;
  691 +}
  692 +.m-list-view .cell-extend .m-table-view {
  693 + margin: 0 0 0 45px;
  694 +}
  695 +.m-list-view .cell-extend .m-table-view .cell {
  696 + padding: 0;
  697 +}
  698 +.m-list-view .cell-extend .m-table-view .text {
  699 + margin-left: 0;
  700 +}
  701 +.m-list-view .cell-pic {
  702 + padding: 15px;
  703 +}
  704 +.m-list-view .cell-pic .pic {
  705 + float: left;
  706 +}
  707 +.m-list-view .cell-pic .cont {
  708 + margin-left: 90px;
  709 +}
  710 +.m-list-view .cell-pic h3 {
  711 + font-size: 14px;
  712 + font-weight: normal;
  713 +}
  714 +.m-list-view .cell-pic em {
  715 + font-size: 16px;
  716 + font-weight: normal;
  717 +}
  718 +.m-list-view .cell-pic p {
  719 + color: #9b9b9b;
  720 + font-size: 12px;
  721 +}
  722 +.m-list-view .acc-icon {
  723 + position: relative;
  724 + padding-right: 30px;
  725 +}
  726 +.m-list-view .acc-icon .acc {
  727 + position: absolute;
  728 + right: 0;
  729 + top: 0;
  730 + min-width: 30px;
  731 + height: 100%;
  732 + line-height: 44px;
  733 + text-align: left;
  734 + color: #999;
  735 + text-align: right;
  736 +}
  737 +.m-list-view .acc-icon .acc .m-icon {
  738 + margin-right: 4px;
  739 +}
  740 +.m-list-view .title {
  741 + font-size: 15px;
  742 + color: #999;
  743 + float: left;
  744 + font-weight: 400;
  745 + line-height: 44px;
  746 +}
  747 +.m-list-view .text {
  748 + display: block;
  749 + font-size: 15px;
  750 + color: #333;
  751 + line-height: 44px;
  752 + position: relative;
  753 + white-space: nowrap;
  754 + word-break: break-all;
  755 + text-overflow: ellipsis;
  756 + overflow: hidden;
  757 +}
  758 +.m-list-view .text .m-input {
  759 + font-size: 15px;
  760 +}
  761 +.m-goods-items {
  762 + padding: 0 5px 5px;
  763 + overflow-x: scroll;
  764 + overflow-y: hidden;
  765 + -webkit-overflow-scrolling: touch;
  766 +}
  767 +.m-goods-items li {
  768 + float: left;
  769 + width: 110px;
  770 + padding: 0 5px 10px;
  771 + box-sizing: border-box;
  772 +}
  773 +.m-goods-items a {
  774 + display: block;
  775 + background-color: #fff;
  776 + padding-bottom: 5px;
  777 + position: relative;
  778 +}
  779 +.m-goods-items .hot {
  780 + position: absolute;
  781 + top: -1px;
  782 + right: 10px;
  783 + width: 20px;
  784 + height: 56px;
  785 + background: url(../images/icon_mark.png) 0 0 no-repeat;
  786 + background-size: 100%;
  787 + font-size: 0;
  788 + overflow: hidden;
  789 +}
  790 +.m-goods-items .pic {
  791 + display: block;
  792 + width: 100%;
  793 + height: 110px;
  794 + margin: 0 auto 5px;
  795 + background-position: center center;
  796 + background-repeat: no-repeat;
  797 + background-size: cover;
  798 +}
  799 +.m-goods-items h3 {
  800 + font-size: 13px;
  801 + padding: 0 5px;
  802 + font-weight: 700;
  803 + color: #333;
  804 + text-align: left;
  805 + line-height: 16px;
  806 + height: 32px;
  807 + overflow: hidden;
  808 +}
  809 +.m-goods-items em {
  810 + text-align: left;
  811 + display: block;
  812 + padding: 0 5px;
  813 + font-size: 13px;
  814 + font-weight: 700;
  815 + font-style: normal;
  816 + color: #FA4535;
  817 +}
  818 +.m-goods-items .origin-price {
  819 + font-size: 12px;
  820 + color: #bbb;
  821 + text-decoration: line-through;
  822 +}
  823 +.photo-wall {
  824 + width: 100%;
  825 + padding-left: 5px;
  826 + box-sizing: border-box;
  827 +}
  828 +.photo-wall .photo-item {
  829 + float: left;
  830 + box-sizing: border-box;
  831 + padding: 0 5px 5px 0;
  832 + height: 105px;
  833 +}
  834 +.photo-wall .photo-item img {
  835 + width: 100%;
  836 + height: 100%;
  837 + max-width: 100%;
  838 + max-height: 100%;
  839 +}
  840 +.photo-wall .photo-1p {
  841 + width: 33.33%;
  842 +}
  843 +.photo-wall .photo-2p {
  844 + width: 66.66%;
  845 +}
  846 +.m-nav {
  847 + width: 100%;
  848 + background-color: #444;
  849 + font-size: 14px;
  850 + color: #999;
  851 + overflow: hidden;
  852 + box-sizing: border-box;
  853 +}
  854 +.m-nav a {
  855 + color: #999;
  856 + padding: 0 10px;
  857 + min-width: 70px;
  858 +}
  859 +.m-nav li {
  860 + float: left;
  861 + line-height: 40px;
  862 + text-align: center;
  863 + position: relative;
  864 +}
  865 +.m-nav li:last-child {
  866 + padding-right: 0;
  867 +}
  868 +.m-nav .on a {
  869 + color: #FFF;
  870 + background-color: #23ac38;
  871 + display: block;
  872 + position: relative;
  873 +}
  874 +.m-tab {
  875 + width: 100%;
  876 + background-color: #FFF;
  877 + font-size: 14px;
  878 + color: #999;
  879 + border-width: 1px 0;
  880 + overflow: hidden;
  881 + box-sizing: border-box;
  882 + margin-bottom: 10px;
  883 +}
  884 +.m-tab a {
  885 + color: #999;
  886 +}
  887 +.m-tab li {
  888 + float: left;
  889 + min-width: 32px;
  890 + padding-right: 18px;
  891 + line-height: 40px;
  892 + text-align: center;
  893 + position: relative;
  894 +}
  895 +.m-tab li:last-child {
  896 + padding-right: 0;
  897 +}
  898 +.m-tab .on a {
  899 + color: #23ac38;
  900 + display: block;
  901 + position: relative;
  902 +}
  903 +.m-tab .on a:after {
  904 + content: '';
  905 + position: absolute;
  906 + bottom: 0;
  907 + left: 0;
  908 + right: 0;
  909 + height: 2px;
  910 + background-color: #23ac38;
  911 +}
  912 +.m-tab.tab-col-2 li {
  913 + width: 50% !important;
  914 +}
  915 +.m-tab.tab-col-3 li {
  916 + width: 33.33% !important;
  917 + padding-right: 0 ;
  918 +}
  919 +.m-tab.tab-col-4 li {
  920 + padding-right: 0;
  921 + width: 25% !important;
  922 +}
  923 +.m-tab.tab-col-5 li {
  924 + padding-right: 0;
  925 + width: 20% !important;
  926 +}
  927 +/***************************************************
  928 +* feature : 工具类class,提供浮动清除、文本对齐、显示隐藏等;
  929 +* update : 2015/02/03;
  930 +* use : 按需使用对应class即可;
  931 +* desc : ;
  932 +* feedback : 此处填入 issue, 并请附带以下信息[os_version, browser_version, page_path, issue_description]
  933 +* - demo => [windows 7, IE 8, http://diligrp.com/icon.html, 在不定height下未能垂直居中];
  934 +****************************************************/
  935 +.text-left {
  936 + text-align: left !important;
  937 +}
  938 +.text-center {
  939 + text-align: center !important;
  940 +}
  941 +.text-right {
  942 + text-align: right !important;
  943 +}
  944 +.text-nowrap {
  945 + white-space: nowrap !important;
  946 +}
  947 +.text-overflow {
  948 + overflow: hidden;
  949 + text-overflow: ellipsis;
  950 +}
  951 +.text-lowercase {
  952 + text-transform: lowercase;
  953 +}
  954 +.text-uppercase {
  955 + text-transform: uppercase;
  956 +}
  957 +.text-capitalize {
  958 + text-transform: capitalize;
  959 +}
  960 +.text-indent {
  961 + text-indent: -999em;
  962 +}
  963 +.float-left {
  964 + float: left !important;
  965 +}
  966 +.float-right {
  967 + float: right !important;
  968 +}
  969 +.float-none {
  970 + float: none !important;
  971 +}
  972 +.display-block {
  973 + display: block !important;
  974 +}
  975 +.clearfix:after {
  976 + content: '';
  977 + display: block;
  978 + height: 0;
  979 + overflow: hidden;
  980 + font-size: 0;
  981 + clear: both;
  982 +}
  983 +.m-hide {
  984 + display: none !important;
  985 + visibility: hidden;
  986 + opacity: 0;
  987 + z-index: -1;
  988 +}
  989 +.m-hidden {
  990 + visibility: hidden;
  991 + opacity: 0;
  992 + z-index: -1;
  993 +}
  994 +.m-show {
  995 + display: block !important;
  996 + visibility: visible;
  997 +}
  998 +.m-separate {
  999 + position: relative;
  1000 + width: 100%;
  1001 + line-height: 50px;
  1002 + text-align: center;
  1003 + font-size: 12px;
  1004 + color: #666;
  1005 + overflow: visible;
  1006 +}
  1007 +.m-more,
  1008 +a.m-more {
  1009 + display: block;
  1010 + font-size: 12px;
  1011 + text-align: center;
  1012 + color: #999;
  1013 + line-height: 45px;
  1014 + background-color: #FFF;
  1015 +}
  1016 +.m-animate-hide {
  1017 + -webkit-transform: translate(0, 100%) translateZ(0) !important;
  1018 + -ms-transform: translate(0, 100%) translateZ(0) !important;
  1019 + -o-transform: translate(0, 100%) translateZ(0) !important;
  1020 + transform: translate(0, 100%) translateZ(0) !important;
  1021 +}
  1022 +.m-animate-show {
  1023 + -webkit-transform: translate(0, 0) translateZ(0) !important;
  1024 + -ms-transform: translate(0, 0) translateZ(0) !important;
  1025 + -o-transform: translate(0, 0) translateZ(0) !important;
  1026 + transform: translate(0, 0) translateZ(0) !important;
  1027 +}
  1028 +.hidden {
  1029 + opacity: 0;
  1030 + z-index: -1;
  1031 +}
  1032 +.mask-hidden {
  1033 + opacity: 0;
  1034 +}
  1035 +.font-white {
  1036 + color: #FFF !important;
  1037 +}
  1038 +.font-white-opacity {
  1039 + color: rgba(255, 255, 255, 0.8) !important;
  1040 +}
  1041 +.font-deep {
  1042 + color: #333 !important;
  1043 +}
  1044 +.font-gray {
  1045 + color: #666 !important;
  1046 +}
  1047 +.font-light {
  1048 + color: #999 !important;
  1049 +}
  1050 +.font-yellow {
  1051 + color: #FF9D2C !important;
  1052 +}
  1053 +.font-orange {
  1054 + color: #FF6B00 !important;
  1055 +}
  1056 +.font-red {
  1057 + color: #fa4535 !important;
  1058 +}
  1059 +.font-green {
  1060 + color: #23ac38 !important;
  1061 +}
  1062 +.background-gray {
  1063 + background-color: #666 !important;
  1064 +}
  1065 +.background-yellow {
  1066 + background-color: #FF9D2C !important;
  1067 +}
  1068 +.background-orange {
  1069 + background-color: #FF6B00 !important;
  1070 +}
  1071 +.background-red {
  1072 + background-color: #fa4535 !important;
  1073 +}
  1074 +.background-green {
  1075 + background-color: #23ac38 !important;
  1076 +}
  1077 +.position-relative {
  1078 + position: relative;
  1079 +}
  1080 +.z-index2 {
  1081 + z-index: 2;
  1082 +}
  1083 +.width-auto {
  1084 + width: auto !important;
  1085 +}
  1086 +.width-200p {
  1087 + width: 200%;
  1088 +}
  1089 +.m-col-1 {
  1090 + width: 100% !important;
  1091 +}
  1092 +.m-col-2 {
  1093 + width: 50% !important;
  1094 +}
  1095 +.m-col-3 {
  1096 + width: 33.33% !important;
  1097 +}
  1098 +.m-col-4 {
  1099 + width: 25% !important;
  1100 +}
  1101 +/*
  1102 +LESS variables are information about icon's compiled state, stored under its original file name
  1103 +
  1104 +.icon-home {
  1105 + width: @icon-home-width;
  1106 +}
  1107 +
  1108 +The large array-like variables contain all information about a single icon
  1109 +@icon-home: x y offset_x offset_y width height total_width total_height image_path name;
  1110 +
  1111 +At the bottom of this section, we provide information about the spritesheet itself
  1112 +@spritesheet: width height image @spritesheet-sprites;
  1113 +*/
  1114 +/*
  1115 +The provided classes are intended to be used with the array-like variables
  1116 +
  1117 +.icon-home {
  1118 + .sprite-width(@icon-home);
  1119 +}
  1120 +.icon-email {
  1121 + .sprite(@icon-email);
  1122 +}
  1123 +*/
  1124 +/*
  1125 +The `.sprites` mixin generates identical output to the CSS template
  1126 + but can be overridden inside of LESS
  1127 +
  1128 +This must be run when you have at least 2 sprites.
  1129 + If run with a single sprite, then there will be reference errors.
  1130 +
  1131 +.sprites(@spritesheet-sprites);
  1132 +*/
  1133 +.m-icon {
  1134 + display: inline-block;
  1135 + vertical-align: middle;
  1136 +}
  1137 +.icon-back-to {
  1138 + background-image: url(../images/dist/sprite.png);
  1139 + background-position: 0px 0px;
  1140 + width: 22px;
  1141 + width: 11px;
  1142 + height: 38px;
  1143 + height: 19px;
  1144 + background-size: 25px;
  1145 +}
  1146 +.icon-back {
  1147 + background-image: url(../images/dist/sprite.png);
  1148 + background-position: -28px 0px;
  1149 + background-position: -14px 0px;
  1150 + width: 22px;
  1151 + width: 11px;
  1152 + height: 38px;
  1153 + height: 19px;
  1154 + background-size: 25px;
  1155 +}
css/common.less 0 → 100644
  1 +@import "reset";
  2 +@import "one-border";
  3 +@import "header";
  4 +@import "slider";
  5 +@import "section";
  6 +@import "list-view";
  7 +@import "goods-items";
  8 +@import "photo-wall";
  9 +@import "tab";
  10 +@import "util";
  11 +@import "icon";
css/goods-items.css 0 → 100644
  1 +.m-goods-items {
  2 + padding: 0 5px 10px;
  3 +}
  4 +.m-goods-items li {
  5 + float: left;
  6 + width: 50%;
  7 + padding: 0 5px 10px;
  8 + box-sizing: border-box;
  9 +}
  10 +.m-goods-items a {
  11 + display: block;
  12 + background-color: #fff;
  13 + padding-bottom: 5px;
  14 + position: relative;
  15 +}
  16 +.m-goods-items .hot {
  17 + position: absolute;
  18 + top: -1px;
  19 + right: 10px;
  20 + width: 20px;
  21 + height: 56px;
  22 + background: url(../images/icon_mark.png) 0 0 no-repeat;
  23 + background-size: 100%;
  24 + font-size: 0;
  25 + overflow: hidden;
  26 +}
  27 +.m-goods-items img {
  28 + display: block;
  29 + width: 100%;
  30 + height: 90px;
  31 + margin: 0 auto 5px;
  32 +}
  33 +.m-goods-items .pic {
  34 + display: block;
  35 + width: 100%;
  36 + height: 90px;
  37 + margin: 0 auto 5px;
  38 + background: url(../images/upload/p_1.jpg) center center no-repeat;
  39 + background-size: cover;
  40 +}
  41 +.m-goods-items h3 {
  42 + font-size: 12px;
  43 + padding: 0 5px;
  44 + font-weight: 700;
  45 + color: #5d6065;
  46 + text-align: left;
  47 + line-height: 16px;
  48 + height: 32px;
  49 + overflow: hidden;
  50 +}
  51 +.m-goods-items em {
  52 + text-align: left;
  53 + display: block;
  54 + padding: 0 5px;
  55 + font-size: 14px;
  56 + font-weight: 700;
  57 + font-style: normal;
  58 + color: #fe4442;
  59 +}
  60 +.m-goods-items .origin-price {
  61 + font-size: 12px;
  62 + text-align: center;
  63 + color: #9c9c9c;
  64 + text-decoration: line-through;
  65 +}
css/goods-items.less 0 → 100644
  1 +.m-goods-items {
  2 + padding: 0 5px 5px;
  3 + overflow-x: scroll;
  4 + overflow-y: hidden;
  5 + -webkit-overflow-scrolling: touch;
  6 + li {
  7 + float: left;
  8 + width: 110px;
  9 + padding: 0 5px 10px;
  10 + box-sizing: border-box;
  11 + }
  12 + a {
  13 + display: block;
  14 + background-color: #fff;
  15 + padding-bottom: 5px;
  16 + position: relative;
  17 + }
  18 + .hot {
  19 + position: absolute;
  20 + top: -1px;
  21 + right: 10px;
  22 + width: 20px;
  23 + height: 56px;
  24 + background: url(../images/icon_mark.png) 0 0 no-repeat;
  25 + background-size: 100%;
  26 + font-size: 0;
  27 + overflow: hidden;
  28 + }
  29 + .pic {
  30 + display: block;
  31 + width: 100%;
  32 + height: 110px;
  33 + margin: 0 auto 5px;
  34 + background-position: center center;
  35 + background-repeat: no-repeat;
  36 + background-size: cover;
  37 + }
  38 + h3 {
  39 + font-size: 13px;
  40 + padding: 0 5px;
  41 + font-weight: 700;
  42 + color: #333;
  43 + text-align: left;
  44 + line-height: 16px;
  45 + height: 32px;
  46 + overflow: hidden;
  47 + }
  48 + em {
  49 + text-align: left;
  50 + display: block;
  51 + padding: 0 5px;
  52 + font-size: 13px;
  53 + font-weight: 700;
  54 + font-style: normal;
  55 + color: #FA4535;
  56 + }
  57 + .origin-price {
  58 + font-size: 12px;
  59 + color: #bbb;
  60 + text-decoration: line-through;
  61 + }
  62 +}
css/header.css 0 → 100644
  1 +.m-header{z-index:5;color:#FFF;color:#fff;background-color:#23AC38;position:relative}.m-header .head{padding:0 50px;box-sizing:border-box;height:44px;text-align:center}.m-header .head h1{display:inline-block;vertical-align:middle;line-height:44px;font-weight:400;font-size:18px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.m-header .lt-bar,.m-header .rt-bar{position:absolute;left:0;top:0;bottom:0;min-width:44px;line-height:44px;height:100%;text-align:center;cursor:pointer;z-index:1}.m-header .lt-bar{float:left}.m-header .lt-bar.text{padding-left:10px;text-align:left}.m-header .rt-bar{float:right;left:auto;right:0}.m-header .rt-bar.text{padding-right:10px;text-align:right}.m-header .text{text-align:center;line-height:44px;font-size:15px;color:#FFF}.m-header.header-light{background-color:#FFF;color:#666}.m-header.header-light .text{color:#666}.m-header.header-light .m-input{color:#333}.m-header.header-light .m-input::-webkit-input-placeholder{color:#999}
0 \ No newline at end of file 2 \ No newline at end of file
css/header.less 0 → 100644
  1 +/***************************************************
  2 +* feature : 全局头部,提供默认 深色(绿底白字) & 浅色(白底黑字)主题;
  3 +* update : 2015/02/03;
  4 +* use : .m-header;
  5 +* extend : .header-*;
  6 +* example : <header class="m-header header-light"></header>;
  7 +* desc : 默认为深色主题, 通过 .header-light 来引用浅色主题;
  8 +* feedback : 此处填入 issue, 并请附带以下信息[os_version, browser_version, page_path, issue_description]
  9 +* - demo => [windows 7, IE 8, http://diligrp.com/icon.html, 在不定height下未能垂直居中];
  10 +****************************************************/
  11 +.m-header {
  12 + // position: absolute;
  13 + // position: fixed; //fixed header 到顶部
  14 + z-index: 5;
  15 + color: #FFF;
  16 + color: rgba(255, 255, 255, 80);
  17 + background-color: #23AC38; //默认是绿底白字
  18 + position: relative;
  19 + .head {
  20 + padding: 0 50px;
  21 + box-sizing: border-box;
  22 + height: 44px;
  23 + text-align: center;
  24 + h1 {
  25 + display: inline-block;
  26 + vertical-align: middle;
  27 + line-height: 44px;
  28 + font-weight: normal;
  29 + font-size: 18px;
  30 + white-space: nowrap;
  31 + text-overflow: ellipsis;
  32 + overflow: hidden;
  33 + }
  34 + }
  35 + .lt-bar,
  36 + .rt-bar {
  37 + //左右两端区域,用于放置 icon | text
  38 + position: absolute;
  39 + left: 0;
  40 + top: 0;
  41 + bottom: 0;
  42 + min-width: 44px;
  43 + line-height: 44px;
  44 + height: 100%;
  45 + text-align: center;
  46 + cursor: pointer;
  47 + z-index: 1;
  48 + }
  49 + .lt-bar {
  50 + float: left;
  51 + &.text {
  52 + padding-left: 10px;
  53 + text-align: left;
  54 + }
  55 + }
  56 + .rt-bar {
  57 + float: right;
  58 + left: auto;
  59 + right: 0;
  60 + &.text {
  61 + padding-right: 10px;
  62 + text-align: right;
  63 + }
  64 + }
  65 + .text {
  66 + text-align: center;
  67 + line-height: 44px;
  68 + font-size: 15px;
  69 + color: #FFF;
  70 + }
  71 + &.header-light {
  72 + //浅色模式
  73 + background-color: #FFF;
  74 + color: #666;
  75 + .text {
  76 + color: #666;
  77 + }
  78 + .m-input {
  79 + color: #333;
  80 + &::-webkit-input-placeholder {
  81 + color: #999;
  82 + }
  83 + }
  84 + }
  85 +}
css/icon.css 0 → 100644
  1 +/*
  2 +LESS variables are information about icon's compiled state, stored under its original file name
  3 +
  4 +.icon-home {
  5 + width: @icon-home-width;
  6 +}
  7 +
  8 +The large array-like variables contain all information about a single icon
  9 +@icon-home: x y offset_x offset_y width height total_width total_height image_path name;
  10 +
  11 +At the bottom of this section, we provide information about the spritesheet itself
  12 +@spritesheet: width height image @spritesheet-sprites;
  13 +*/
  14 +/*
  15 +The provided classes are intended to be used with the array-like variables
  16 +
  17 +.icon-home {
  18 + .sprite-width(@icon-home);
  19 +}
  20 +.icon-email {
  21 + .sprite(@icon-email);
  22 +}
  23 +*/
  24 +/*
  25 +The `.sprites` mixin generates identical output to the CSS template
  26 + but can be overridden inside of LESS
  27 +
  28 +This must be run when you have at least 2 sprites.
  29 + If run with a single sprite, then there will be reference errors.
  30 +
  31 +.sprites(@spritesheet-sprites);
  32 +*/
  33 +.m-icon {
  34 + display: inline-block;
  35 + vertical-align: middle;
  36 +}
  37 +.icon-back-to {
  38 + background-image: url(../images/dist/sprite.png);
  39 + background-position: 0px 0px;
  40 + width: 22px;
  41 + width: 11px;
  42 + height: 38px;
  43 + height: 19px;
  44 + background-size: 25px;
  45 +}
  46 +.icon-back {
  47 + background-image: url(../images/dist/sprite.png);
  48 + background-position: -28px 0px;
  49 + background-position: -14px 0px;
  50 + width: 22px;
  51 + width: 11px;
  52 + height: 38px;
  53 + height: 19px;
  54 + background-size: 25px;
  55 +}
css/icon.less 0 → 100644
  1 +@import "sprite";
  2 +//retina @2x
  3 +.sprite-width(@sprite) {
  4 + width: extract(@sprite, 5)/2;
  5 +}
  6 +
  7 +.sprite-height(@sprite) {
  8 + height: extract(@sprite, 6)/2;
  9 +}
  10 +
  11 +.sprite-position(@sprite) {
  12 + @sprite-offset-x: extract(@sprite, 3)/2;
  13 + @sprite-offset-y: extract(@sprite, 4)/2;
  14 + background-position: @sprite-offset-x @sprite-offset-y;
  15 +}
  16 +
  17 +.sprite-background-size(@spritesheet-width) {
  18 + background-size: @spritesheet-width/2;
  19 +}
  20 +
  21 +.sprite-image(@sprite) {
  22 + @sprite-image: extract(@sprite, 9);
  23 + @sprite-image-bare: ~`"@{sprite-image}".slice(1, -1)`;
  24 + background-image: url(@sprite-image-bare);
  25 +}
  26 +
  27 +.sprite(@sprite) {
  28 + .sprite-image(@sprite);
  29 + .sprite-position(@sprite);
  30 + .sprite-width(@sprite);
  31 + .sprite-height(@sprite);
  32 + .sprite-background-size(@spritesheet-width);
  33 +}
  34 +
  35 +//合并图
  36 +.m-icon {
  37 + display: inline-block;
  38 + vertical-align: middle;
  39 +}
  40 +
  41 +.sprites(@spritesheet-sprites);
  42 +//自定义 非合并图
css/list-view.less 0 → 100644
  1 +.m-list-view{
  2 + margin-bottom: 10px;
  3 + .cell{
  4 + font-size: 14px;
  5 + padding: 0 0 0 15px;
  6 + // border-bottom: 1px solid #ddd;
  7 + background-color: #FFF;
  8 + overflow: hidden;
  9 + position: relative;
  10 + text-align: left;
  11 + }
  12 + .cell-header{
  13 + background-color: #f8f8f8;
  14 + padding: 0 10px;
  15 + .title{
  16 + font-size: 13px;
  17 + color: #333;
  18 + line-height: 35px;
  19 + width: auto;
  20 + }
  21 + .text{
  22 + font-size: 13px;
  23 + line-height: 35px;
  24 + float: right;
  25 + color: #9e9e9e;
  26 + text-align: right;
  27 + margin: 0;
  28 + }
  29 + }
  30 + .cell-basic{
  31 + padding: 11px 10px;
  32 + .title, .text{
  33 + float: none;
  34 + display: inline-block;
  35 + vertical-align: middle;
  36 + margin: 0 10px 0 0;
  37 + line-height: 1.5;
  38 + }
  39 + .sub-title{
  40 + padding-top: 10px;
  41 + font-size: 13px;
  42 + color: #999;
  43 + }
  44 + }
  45 + .cell-radio{
  46 + text-align: right;
  47 + padding: 0 10px;
  48 + margin-bottom: 10px;
  49 + background-color: #eee;
  50 + .title{
  51 + color: #333;
  52 + width: auto;
  53 + text-align: left;
  54 + }
  55 + .text{
  56 + float: none;
  57 + text-align: right;
  58 + }
  59 + .m-radio{
  60 + margin-left: 8px;
  61 + }
  62 + .m-table-view{
  63 + margin: 0 -10px;
  64 + .cell-radio{
  65 + margin: 0;
  66 + background-color: #FFF;
  67 + }
  68 + }
  69 + }
  70 +
  71 + .cell-block{
  72 + padding: 8px 10px;
  73 + h3{
  74 + font-size: 16px;
  75 + font-weight: normal;
  76 + padding-right: 60px;
  77 + white-space: nowrap;
  78 + text-overflow: ellipsis;
  79 + overflow: hidden;
  80 + }
  81 + p{
  82 + font-size: 14px;
  83 + color: #666;
  84 + }
  85 + .bottom{
  86 + margin-top: 10px;
  87 + padding-top: 8px;
  88 + line-height: 30px;
  89 + }
  90 + }
  91 +
  92 + .cell-extend{
  93 + .m-table-view{
  94 + margin:0 0 0 45px;
  95 + .cell{
  96 + padding: 0;
  97 + }
  98 + .text{
  99 + margin-left: 0;
  100 + }
  101 + }
  102 + }
  103 +
  104 + .cell-pic{
  105 + padding: 15px;
  106 + .pic{
  107 + float: left;
  108 + }
  109 + .cont{
  110 + margin-left: 90px;
  111 + }
  112 + h3{
  113 + font-size: 14px;
  114 + font-weight: normal;
  115 + }
  116 + em{
  117 + font-size: 16px;
  118 + font-weight: normal;
  119 + }
  120 + p{
  121 + color: #9b9b9b;
  122 + font-size: 12px;
  123 + }
  124 + }
  125 +
  126 + .acc-icon{
  127 + position: relative;
  128 + padding-right: 30px;
  129 + .acc{
  130 + text-align: right;
  131 + position: absolute;
  132 + right: 0;
  133 + top: 0;
  134 + min-width: 30px;
  135 + height: 100%;
  136 + line-height: 44px;
  137 + text-align: left;
  138 + color: #999;
  139 + text-align: right;
  140 + .m-icon{
  141 + margin-right: 4px;
  142 + }
  143 + }
  144 + }
  145 + .title{
  146 + font-size: 15px;
  147 + color: #999;
  148 + float: left;
  149 + font-weight: 400;
  150 + line-height: 44px;
  151 + // width: 75px;
  152 + }
  153 + .text{
  154 + // margin-left: 75px;
  155 + display: block;
  156 + font-size: 15px;
  157 + color: #333;
  158 + line-height: 44px;
  159 + position: relative;
  160 + white-space: nowrap;
  161 + word-break:break-all;
  162 + text-overflow: ellipsis;
  163 + overflow: hidden;
  164 + .m-input{
  165 + font-size: 15px;
  166 + }
  167 + }
  168 +}
css/one-border.less 0 → 100644
  1 +.border-1px{
  2 + position: relative;
  3 + &:before, &:after{
  4 + border-top: 1px solid #e2e2e2;
  5 + content: '';
  6 + display: block;
  7 + width: 100%;
  8 + position: absolute;
  9 + left: 0;
  10 + z-index: 1;
  11 + }
  12 + &:before{
  13 + top: 0;
  14 + }
  15 + &:after{
  16 + bottom: 0;
  17 + }
  18 + &.border-top{
  19 + &:after{
  20 + display: none;
  21 + }
  22 + }
  23 + &.border-bottom{
  24 + &:before{
  25 + display: none;
  26 + }
  27 + }
  28 +
  29 + // &.border-right{
  30 + // &:before{
  31 + // display: block;
  32 + // border-right: 1px solid #e2e2e2;
  33 + // height: 100%;
  34 + // top: 0;
  35 + // left: auto;
  36 + // width: 0;
  37 + // right: 0;
  38 + // }
  39 + // }
  40 +}
  41 +
  42 +.border-1px-full{
  43 + position: relative;
  44 + &:after {
  45 + content: '';
  46 + position: absolute;
  47 + top: 0;
  48 + left: 0;
  49 + z-index: 1;
  50 + border: 1px solid #e2e2e2;
  51 + -webkit-box-sizing: border-box;
  52 + box-sizing: border-box;
  53 + width: 200%;
  54 + height: 200%;
  55 + -webkit-transform: scale(0.5);
  56 + transform: scale(0.5);
  57 + -webkit-transform-origin: left top;
  58 + transform-origin: left top;
  59 + // border-radius: 3px;
  60 + // -webkit-border-radius: 3px;
  61 + // -moz-border-radius: 3px;
  62 + }
  63 +}
  64 +// .border-1px-x{
  65 +// position: relative;
  66 +// &:before, &:after{
  67 +// border-left: 1px solid #aaa;
  68 +// content: ' ';
  69 +// display: block;
  70 +// height: 100%;
  71 +// position: absolute;
  72 +// top: 0;
  73 +// z-index: 1;
  74 +// }
  75 +// &:before{
  76 +// left: 0;
  77 +// }
  78 +// &:after{
  79 +// right: -1px;
  80 +// }
  81 +// &.border-left{
  82 +// &:after{
  83 +// display: none;
  84 +// }
  85 +// }
  86 +// &.border-right{
  87 +// &:before{
  88 +// display: none;
  89 +// }
  90 +// }
  91 +// }
  92 +
  93 +@media (-webkit-min-device-pixel-ratio:1.5), (min-device-pixel-ratio: 1.5){
  94 + .border-1px{
  95 + &::after, &::before{
  96 + -webkit-transform: scaleY(.7);
  97 + -webkit-transform-origin: 0 0;
  98 + transform: scaleY(.7);
  99 + }
  100 + &::after{
  101 + -webkit-transform-origin: left bottom;
  102 + }
  103 + }
  104 +
  105 + // .border-1px-x{
  106 + // &::after, &::before{
  107 + // -webkit-transform: scaleX(.7);
  108 + // -webkit-transform-origin: 0 0;
  109 + // transform: scaleX(.7);
  110 + // }
  111 + // &::after{
  112 + // -webkit-transform-origin: left bottom;
  113 + // }
  114 + // }
  115 +}
  116 +
  117 +@media (-webkit-min-device-pixel-ratio:2), (min-device-pixel-ratio: 2){
  118 + .border-1px{
  119 + &::after, &::before{
  120 + -webkit-transform: scaleY(.5);
  121 + transform: scaleY(.5);
  122 + }
  123 + }
  124 +
  125 + // .border-1px-x{
  126 + // &::after, &::before{
  127 + // -webkit-transform: scaleX(.5);
  128 + // transform: scaleX(.5);
  129 + // }
  130 + // }
  131 +}
css/photo-wall.css 0 → 100644
  1 +.photo-wall {
  2 + width: 100%;
  3 +}
  4 +.photo-wall .photo-item {
  5 + float: left;
  6 + box-sizing: border-box;
  7 + padding: 0 5px 5px;
  8 + height: 105px;
  9 +}
  10 +.photo-wall .photo-item img {
  11 + width: 100%;
  12 + max-width: 100%;
  13 +}
  14 +.photo-wall .photo-1p {
  15 + width: 33.33%;
  16 +}
  17 +.photo-wall .photo-2p {
  18 + width: 66.66%;
  19 +}
css/photo-wall.less 0 → 100644
  1 +.photo-wall{
  2 + width: 100%;
  3 + padding-left: 5px;
  4 + box-sizing: border-box;
  5 + .photo-item{
  6 + float: left;
  7 + box-sizing: border-box;
  8 + padding: 0 5px 5px 0;
  9 + height: 105px;
  10 + img{
  11 + width: 100%;
  12 + height: 100%;
  13 + max-width: 100%;
  14 + max-height: 100%;
  15 + }
  16 + }
  17 + .photo-1p{
  18 + width: 33.33%;
  19 + }
  20 + .photo-2p{
  21 + width: 66.66%;
  22 + }
  23 +}
css/reset.css 0 → 100644
  1 +*{-moz-tap-highlight-color:transparent;-o-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}html{height:100%}abbr,address,article,aside,audio,b,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,samp,section,small,span,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,ul,var,video{margin:0;padding:0;border:0;outline:0;vertical-align:baseline;background:0 0}body{font:12px/1.5 sans-serif;background-color:#F5F5F5;position:relative;color:#333;min-height:100%;overflow-x:hidden}article,aside,details,figcaption,figure,footer,header,menu,nav,section{display:block}nav ul{list-style:none}li{list-style:none}em{font-style:normal}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:700}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:0;padding:0}input,select{vertical-align:middle}button:focus,input:focus{outline:0}a{color:#333;text-decoration:none;margin:0;padding:0;vertical-align:baseline;background:0 0}a:active,a:visited{color:#333}img,input{border:0;vertical-align:middle}a,input,textarea{-webkit-tap-highlight-color:transparent}.clear,.clearfix{display:inline-table;zoom:1}* html .clear,* html .clearfix{height:1%}* html .clear,* html .clearfix{zoom:1}.clear,.clearfix{display:block}.clear{clear:both}.clear:after,.clearfix:after{content:" ";display:block;height:0;clear:both;visibility:hidden;line-height:0}
0 \ No newline at end of file 2 \ No newline at end of file
css/reset.less 0 → 100644
  1 +*{
  2 + -moz-tap-highlight-color: rgba(0,0,0,0);
  3 + -o-tap-highlight-color: rgba(0,0,0,0);
  4 + -webkit-tap-highlight-color: rgba(0,0,0,0);
  5 +}
  6 +html{
  7 + height: 100%;
  8 +}
  9 +html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, figcaption, figure, footer, header, menu, nav, section, summary, time, mark, audio, video {
  10 + margin: 0;
  11 + padding: 0;
  12 + border: 0;
  13 + outline: 0;
  14 + vertical-align: baseline;
  15 + background: transparent;
  16 +}
  17 +body {
  18 + // font: 13px/18px "SimHei", "Microsoft YaHei", "Simson";
  19 + font: 12px/1.5 sans-serif;
  20 + background-color: #F5F5F5;
  21 + position: relative;
  22 + color: #333;
  23 + min-height: 100%;
  24 + overflow-x: hidden;
  25 +}
  26 +article, aside, details, figcaption, figure, footer, header, menu, nav, section {
  27 + display: block;
  28 +}
  29 +nav ul {
  30 + list-style: none;
  31 +}
  32 +li {
  33 + list-style: none;
  34 +}
  35 +em{
  36 + font-style: normal;
  37 +}
  38 +ins {
  39 + background-color: #ff9;
  40 + color: #000;
  41 + text-decoration: none;
  42 +}
  43 +mark {
  44 + background-color: #ff9;
  45 + color: #000;
  46 + font-style: italic;
  47 + font-weight: bold;
  48 +}
  49 +table {
  50 + border-collapse: collapse;
  51 + border-spacing: 0;
  52 +}
  53 +hr {
  54 + display: block;
  55 + height: 1px;
  56 + border: 0;
  57 + border-top: 1px solid #cccccc;
  58 + margin: 0;
  59 + padding: 0;
  60 +}
  61 +input, select {
  62 + vertical-align: middle;
  63 +}
  64 +input:focus, button:focus {
  65 + outline: none;
  66 +}
  67 +a {
  68 + color: #333;
  69 + text-decoration: none;
  70 + margin: 0;
  71 + padding: 0;
  72 + vertical-align: baseline;
  73 + background: transparent;
  74 +}
  75 +a:active, a:visited {
  76 + color: #333;
  77 +}
  78 +input, img {
  79 + border: 0;
  80 + vertical-align: middle;
  81 +}
  82 +
  83 +textarea, input, a{
  84 + -webkit-tap-highlight-color: transparent;
  85 +}
  86 +/* 清除浮动 */
  87 +
  88 +.clearfix, .clear {
  89 + display: inline-table;
  90 + zoom: 1;
  91 +}
  92 +* html .clearfix, * html .clear {
  93 + height: 1%;
  94 +}
  95 +* html .clearfix, * html .clear {
  96 + zoom: 1;
  97 +}
  98 +.clearfix, .clear {
  99 + display: block;
  100 +}
  101 +.clear {
  102 + clear: both;
  103 +}
  104 +.clearfix:after, .clear:after {
  105 + content: " ";
  106 + display: block;
  107 + height: 0;
  108 + clear: both;
  109 + visibility: hidden;
  110 + line-height: 0px;
  111 +}
css/section.css 0 → 100644
css/section.less 0 → 100644
  1 +.m-section {
  2 + .section-head {
  3 + line-height: 45px;
  4 + padding: 0 10px;
  5 + background-color: #fff;
  6 + font-size: 14px;
  7 + color: #666;
  8 + text-align: left;
  9 + font-weight: bold;
  10 + margin-bottom: 10px;
  11 + &:first-letter {
  12 + font-size: 18px;
  13 + color: #23ac38;
  14 + }
  15 + }
  16 +}
  17 +.section-items {
  18 + margin-bottom: 10px;
  19 + .section-item {
  20 + display: block;
  21 + margin-bottom: 5px;
  22 + width: 100%;
  23 + img {
  24 + width: 100%;
  25 + max-width: 100%;
  26 + }
  27 + }
  28 +}
  29 +.product-items {
  30 + background-color: #FFF;
  31 + margin-bottom: 10px;
  32 + .items {
  33 + .item {
  34 + width: 33.33%;
  35 + float: left;
  36 + font-size: 13px;
  37 + text-align: center;
  38 + padding: 8px 0;
  39 + a {
  40 + display: block;
  41 + position: relative;
  42 + z-index: 2;
  43 + }
  44 + h3 {
  45 + font-size: 13px;
  46 + padding: 0 5px;
  47 + font-weight: 700;
  48 + color: #333;
  49 + text-align: left;
  50 + line-height: 16px;
  51 + overflow: hidden;
  52 + padding: 0 10px;
  53 + text-align: left;
  54 + text-overflow: ellipsis;
  55 + overflow: hidden;
  56 + white-space: nowrap;
  57 + }
  58 + p{
  59 + padding: 0 10px;
  60 + text-align: left;
  61 + }
  62 + em {
  63 + text-align: left;
  64 + display: block;
  65 + font-size: 13px;
  66 + font-weight: 700;
  67 + font-style: normal;
  68 + color: #FA4535;
  69 + text-overflow: ellipsis;
  70 + overflow: hidden;
  71 + white-space: nowrap;
  72 + }
  73 + span {
  74 + display: block;
  75 + text-align: center;
  76 + overflow: hidden;
  77 + white-space: nowrap;
  78 + text-overflow: ellipsis;
  79 + }
  80 + .pic {
  81 + max-width: 100%;
  82 + height: 60px;
  83 + display: inline-block;
  84 + vertical-align: middle;
  85 + }
  86 + &:after {
  87 + border-left: none;
  88 + border-top: none;
  89 + }
  90 + }
  91 + }
  92 +}
css/slider.css 0 → 100644
css/slider.less 0 → 100644
  1 +/*
  2 + * Swiper 2.7.0
  3 + * Mobile touch slider and framework with hardware accelerated transitions
  4 + *
  5 + * http://www.idangero.us/sliders/swiper/
  6 + *
  7 + * Copyright 2010-2014, Vladimir Kharlampidi
  8 + * The iDangero.us
  9 + * http://www.idangero.us/
  10 + *
  11 + * Licensed under GPL & MIT
  12 + *
  13 + * Released on: August 30, 2014
  14 +*/
  15 +/* ===============================================================
  16 +Basic Swiper Styles
  17 +================================================================*/
  18 +.swiper-container {
  19 + margin: 0 auto;
  20 + position: relative;
  21 + overflow: hidden;
  22 + -webkit-backface-visibility: hidden;
  23 + -moz-backface-visibility: hidden;
  24 + -ms-backface-visibility: hidden;
  25 + -o-backface-visibility: hidden;
  26 + backface-visibility: hidden;
  27 + /* Fix of Webkit flickering */
  28 + z-index: 1;
  29 +}
  30 +.swiper-wrapper {
  31 + position: relative;
  32 + width: 100%;
  33 + -webkit-transition-property: -webkit-transform, left, top;
  34 + -webkit-transition-duration: 0s;
  35 + -webkit-transform: translate3d(0px,0,0);
  36 + -webkit-transition-timing-function: ease;
  37 + -moz-transition-property: -moz-transform, left, top;
  38 + -moz-transition-duration: 0s;
  39 + -moz-transform: translate3d(0px,0,0);
  40 + -moz-transition-timing-function: ease;
  41 + -o-transition-property: -o-transform, left, top;
  42 + -o-transition-duration: 0s;
  43 + -o-transform: translate3d(0px,0,0);
  44 + -o-transition-timing-function: ease;
  45 + -o-transform: translate(0px,0px);
  46 + -ms-transition-property: -ms-transform, left, top;
  47 + -ms-transition-duration: 0s;
  48 + -ms-transform: translate3d(0px,0,0);
  49 + -ms-transition-timing-function: ease;
  50 + transition-property: transform, left, top;
  51 + transition-duration: 0s;
  52 + transform: translate3d(0px,0,0);
  53 + transition-timing-function: ease;
  54 + -webkit-box-sizing: content-box;
  55 + -moz-box-sizing: content-box;
  56 + box-sizing: content-box;
  57 +}
  58 +.swiper-free-mode > .swiper-wrapper {
  59 + -webkit-transition-timing-function: ease-out;
  60 + -moz-transition-timing-function: ease-out;
  61 + -ms-transition-timing-function: ease-out;
  62 + -o-transition-timing-function: ease-out;
  63 + transition-timing-function: ease-out;
  64 + margin: 0 auto;
  65 +}
  66 +.swiper-slide {
  67 + float: left;
  68 + -webkit-box-sizing: content-box;
  69 + -moz-box-sizing: content-box;
  70 + box-sizing: content-box;
  71 +}
  72 +/* IE10 Windows Phone 8 Fixes */
  73 +.swiper-wp8-horizontal {
  74 + -ms-touch-action: pan-y;
  75 +}
  76 +.swiper-wp8-vertical {
  77 + -ms-touch-action: pan-x;
  78 +}
  79 +/* ===============================================================
  80 +Your custom styles, here you need to specify container's and slide's
  81 +sizes, pagination, etc.
  82 +================================================================*/
  83 +.swiper-container {
  84 + /* Specify Swiper's Size: */
  85 + /*width:200px;
  86 + height: 100px;*/
  87 +}
  88 +.swiper-slide {
  89 + /* Specify Slides's Size: */
  90 + /*width: 100%;
  91 + height: 100%;*/
  92 +}
  93 +.swiper-slide-active {
  94 + /* Specific active slide styling: */
  95 +}
  96 +.swiper-slide-visible {
  97 + /* Specific visible slide styling: */
  98 +}
  99 +/* ===============================================================
  100 +Pagination Styles
  101 +================================================================*/
  102 +.swiper-pagination-switch {
  103 + /* Stylize pagination button: */
  104 +}
  105 +.swiper-active-switch {
  106 + /* Specific active button style: */
  107 +}
  108 +.swiper-visible-switch {
  109 + /* Specific visible button style: */
  110 +}
  111 +.swiper-pagination {
  112 + position: absolute;
  113 + text-align: center;
  114 + -webkit-transition: 300ms;
  115 + -moz-transition: 300ms;
  116 + -o-transition: 300ms;
  117 + transition: 300ms;
  118 + -webkit-transform: translate3d(0, 0, 0);
  119 + -ms-transform: translate3d(0, 0, 0);
  120 + -o-transform: translate3d(0, 0, 0);
  121 + transform: translate3d(0, 0, 0);
  122 + z-index: 10;
  123 +}
  124 +.swiper-pagination {
  125 + bottom: 10px;
  126 + left: 0;
  127 + width: 100%;
  128 +}
  129 +.swiper-pagination .swiper-pagination-switch {
  130 + margin: 0 5px;
  131 +}
  132 +.swiper-pagination-switch {
  133 + width: 8px;
  134 + height: 8px;
  135 + display: inline-block;
  136 + /*background: #FFF;*/
  137 + background: none;
  138 + -webkit-box-shadow: inset 0 0 0 2px #ddd;
  139 + box-shadow: inset 0 0 0 2px #ddd;
  140 + -webkit-box-shadow: inset hoff voff blur color;
  141 + box-shadow: inset hoff voff blur color;
  142 + border-radius: 100%;
  143 + /* -webkit-transition: all ease-in-out .15s;
  144 + -o-transition: all ease-in-out .15s;
  145 + transition: all ease-in-out .15s;*/
  146 +}
  147 +.swiper-active-switch {
  148 + opacity: 1;
  149 + -webkit-box-shadow: inset 0 0 0 4px #23AC38;
  150 + box-shadow: inset 0 0 0 4px #23AC38;
  151 + /*background: #23AC38;*/
  152 + /*-webkit-box-shadow: none;*/
  153 + /*box-shadow: none;*/
  154 +}
  155 +.m-slider {
  156 + height: 120px;
  157 + position: relative;
  158 + overflow: hidden;
  159 + font-size: 0;
  160 + a {
  161 + display: block;
  162 + width: 100%;
  163 + height: 100%;
  164 + }
  165 + img {
  166 + display: inline-block;
  167 + width: 100%;
  168 + height: 100%;
  169 + float: left;
  170 + }
  171 + .swiper-container {
  172 + height: 100%;
  173 + }
  174 + .swiper-wrapper {
  175 + height: 100%;
  176 + }
  177 +}
css/sprite.css 0 → 100644
  1 +/*
  2 +LESS variables are information about icon's compiled state, stored under its original file name
  3 +
  4 +.icon-home {
  5 + width: @icon-home-width;
  6 +}
  7 +
  8 +The large array-like variables contain all information about a single icon
  9 +@icon-home: x y offset_x offset_y width height total_width total_height image_path name;
  10 +
  11 +At the bottom of this section, we provide information about the spritesheet itself
  12 +@spritesheet: width height image @spritesheet-sprites;
  13 +*/
  14 +/*
  15 +The provided classes are intended to be used with the array-like variables
  16 +
  17 +.icon-home {
  18 + .sprite-width(@icon-home);
  19 +}
  20 +.icon-email {
  21 + .sprite(@icon-email);
  22 +}
  23 +*/
  24 +/*
  25 +The `.sprites` mixin generates identical output to the CSS template
  26 + but can be overridden inside of LESS
  27 +
  28 +This must be run when you have at least 2 sprites.
  29 + If run with a single sprite, then there will be reference errors.
  30 +
  31 +.sprites(@spritesheet-sprites);
  32 +*/
css/sprite.less 0 → 100644
  1 +/*
  2 +LESS variables are information about icon's compiled state, stored under its original file name
  3 +
  4 +.icon-home {
  5 + width: @icon-home-width;
  6 +}
  7 +
  8 +The large array-like variables contain all information about a single icon
  9 +@icon-home: x y offset_x offset_y width height total_width total_height image_path name;
  10 +
  11 +At the bottom of this section, we provide information about the spritesheet itself
  12 +@spritesheet: width height image @spritesheet-sprites;
  13 +*/
  14 +@icon-back-to-name: icon-back-to;
  15 +@icon-back-to-x: 0px;
  16 +@icon-back-to-y: 0px;
  17 +@icon-back-to-offset-x: 0px;
  18 +@icon-back-to-offset-y: 0px;
  19 +@icon-back-to-width: 22px;
  20 +@icon-back-to-height: 38px;
  21 +@icon-back-to-total-width: 50px;
  22 +@icon-back-to-total-height: 38px;
  23 +@icon-back-to-image: '../images/dist/sprite.png';
  24 +@icon-back-to: 0px 0px 0px 0px 22px 38px 50px 38px '../images/dist/sprite.png' icon-back-to;
  25 +@icon-back-name: icon-back;
  26 +@icon-back-x: 28px;
  27 +@icon-back-y: 0px;
  28 +@icon-back-offset-x: -28px;
  29 +@icon-back-offset-y: 0px;
  30 +@icon-back-width: 22px;
  31 +@icon-back-height: 38px;
  32 +@icon-back-total-width: 50px;
  33 +@icon-back-total-height: 38px;
  34 +@icon-back-image: '../images/dist/sprite.png';
  35 +@icon-back: 28px 0px -28px 0px 22px 38px 50px 38px '../images/dist/sprite.png' icon-back;
  36 +@spritesheet-width: 50px;
  37 +@spritesheet-height: 38px;
  38 +@spritesheet-image: '../images/dist/sprite.png';
  39 +@spritesheet-sprites: @icon-back-to @icon-back;
  40 +@spritesheet: 50px 38px '../images/dist/sprite.png' @spritesheet-sprites;
  41 +
  42 +/*
  43 +The provided classes are intended to be used with the array-like variables
  44 +
  45 +.icon-home {
  46 + .sprite-width(@icon-home);
  47 +}
  48 +.icon-email {
  49 + .sprite(@icon-email);
  50 +}
  51 +*/
  52 +.sprite-width(@sprite) {
  53 + width: extract(@sprite, 5);
  54 +}
  55 +
  56 +.sprite-height(@sprite) {
  57 + height: extract(@sprite, 6);
  58 +}
  59 +
  60 +.sprite-position(@sprite) {
  61 + @sprite-offset-x: extract(@sprite, 3);
  62 + @sprite-offset-y: extract(@sprite, 4);
  63 + background-position: @sprite-offset-x @sprite-offset-y;
  64 +}
  65 +
  66 +.sprite-image(@sprite) {
  67 + @sprite-image: extract(@sprite, 9);
  68 + @sprite-image-bare: ~`"@{sprite-image}".slice(1, -1)`;
  69 + background-image: url(@sprite-image-bare);
  70 +}
  71 +
  72 +.sprite(@sprite) {
  73 + .sprite-image(@sprite);
  74 + .sprite-position(@sprite);
  75 + .sprite-width(@sprite);
  76 + .sprite-height(@sprite);
  77 +}
  78 +
  79 +/*
  80 +The `.sprites` mixin generates identical output to the CSS template
  81 + but can be overridden inside of LESS
  82 +
  83 +This must be run when you have at least 2 sprites.
  84 + If run with a single sprite, then there will be reference errors.
  85 +
  86 +.sprites(@spritesheet-sprites);
  87 +*/
  88 +.sprites(@sprites, @i: 1) when (@i <= length(@sprites)) {
  89 + @sprite: extract(@sprites, @i);
  90 + @sprite-name: extract(@sprite, 10);
  91 + .@{sprite-name} {
  92 + .sprite(@sprite);
  93 + }
  94 + .sprites(@sprites, @i + 1);
  95 +}
css/tab.css 0 → 100644
  1 +.m-tab {
  2 + width: 100%;
  3 + background-color: #FFF;
  4 + font-size: 14px;
  5 + color: #999;
  6 + border-width: 1px 0;
  7 + overflow: hidden;
  8 + box-sizing: border-box;
  9 + padding: 0 15px;
  10 +}
  11 +.m-tab a {
  12 + color: #999;
  13 +}
  14 +.m-tab li {
  15 + float: left;
  16 + min-width: 32px;
  17 + padding-right: 18px;
  18 + line-height: 40px;
  19 + text-align: center;
  20 + position: relative;
  21 +}
  22 +.m-tab li:last-child {
  23 + padding-right: 0;
  24 +}
  25 +.m-tab .on a {
  26 + color: #2caa3f;
  27 + display: block;
  28 + position: relative;
  29 +}
  30 +.m-tab .on a:after {
  31 + content: '';
  32 + position: absolute;
  33 + bottom: 0;
  34 + left: 0;
  35 + right: 0;
  36 + height: 2px;
  37 + background-color: #23AC38;
  38 +}
  39 +.m-tab.tab-col-2 li {
  40 + width: 50% !important;
  41 +}
  42 +.m-tab.tab-col-3 li {
  43 + width: 33.33% !important;
  44 + padding-right: 0 ;
  45 +}
  46 +.m-tab.tab-col-4 li {
  47 + padding-right: 0;
  48 + width: 25% !important;
  49 +}
  50 +.m-tab.tab-col-5 li {
  51 + padding-right: 0;
  52 + width: 20% !important;
  53 +}
css/tab.less 0 → 100644
  1 +.m-nav{
  2 + width: 100%;
  3 + background-color: #444;
  4 + font-size: 14px;
  5 + color: #999;
  6 + overflow: hidden;
  7 + box-sizing: border-box;
  8 + a{
  9 + color: #999;
  10 + padding: 0 10px;
  11 + min-width: 70px;
  12 + }
  13 + li{
  14 + float: left;
  15 + line-height: 40px;
  16 + text-align: center;
  17 + position: relative;
  18 + &:last-child{
  19 + padding-right: 0;
  20 + }
  21 + }
  22 + .on{
  23 + a{
  24 + color: #FFF;
  25 + background-color: #23ac38;
  26 + display: block;
  27 + position: relative;
  28 + }
  29 + }
  30 +}
  31 +
  32 +
  33 +.m-tab{
  34 + width: 100%;
  35 + background-color: #FFF;
  36 + font-size: 14px;
  37 + color: #999;
  38 + // border: 1px solid #ddd;
  39 + border-width: 1px 0;
  40 + overflow: hidden;
  41 + box-sizing: border-box;
  42 + margin-bottom: 10px;
  43 + a{
  44 + color: #999;
  45 + }
  46 + li{
  47 + float: left;
  48 + min-width: 32px;
  49 + padding-right: 18px;
  50 + line-height: 40px;
  51 + text-align: center;
  52 + position: relative;
  53 + &:last-child{
  54 + padding-right: 0;
  55 + }
  56 + }
  57 + .on{
  58 + a{
  59 + color: #23ac38;
  60 + display: block;
  61 + position: relative;
  62 + &:after{
  63 + content: '';
  64 + position: absolute;
  65 + bottom: 0;
  66 + left: 0;
  67 + right: 0;
  68 + height: 2px;
  69 + background-color: #23ac38;
  70 + }
  71 + }
  72 + }
  73 + &.tab-col-2{
  74 + li{
  75 + width: 50% !important;
  76 + }
  77 + }
  78 + &.tab-col-3{
  79 + li{
  80 + width: 33.33% !important;
  81 + padding-right:0 ;
  82 + }
  83 + }
  84 + &.tab-col-4{
  85 + li{
  86 + padding-right: 0;
  87 + width: 25% !important;
  88 + }
  89 + }
  90 + &.tab-col-5{
  91 + li{
  92 + padding-right: 0;
  93 + width: 20% !important;
  94 + }
  95 + }
  96 +}
css/util.css 0 → 100644
  1 +/***************************************************
  2 +* feature : 工具类class,提供浮动清除、文本对齐、显示隐藏等;
  3 +* update : 2015/02/03;
  4 +* use : 按需使用对应class即可;
  5 +* desc : ;
  6 +* feedback : 此处填入 issue, 并请附带以下信息[os_version, browser_version, page_path, issue_description]
  7 +* - demo => [windows 7, IE 8, http://diligrp.com/icon.html, 在不定height下未能垂直居中];
  8 +****************************************************/
  9 +.text-left {
  10 + text-align: left !important;
  11 +}
  12 +.text-center {
  13 + text-align: center !important;
  14 +}
  15 +.text-right {
  16 + text-align: right !important;
  17 +}
  18 +.text-nowrap {
  19 + white-space: nowrap !important;
  20 +}
  21 +.text-overflow {
  22 + overflow: hidden;
  23 + text-overflow: ellipsis;
  24 +}
  25 +.text-lowercase {
  26 + text-transform: lowercase;
  27 +}
  28 +.text-uppercase {
  29 + text-transform: uppercase;
  30 +}
  31 +.text-capitalize {
  32 + text-transform: capitalize;
  33 +}
  34 +.text-indent {
  35 + text-indent: -999em;
  36 +}
  37 +.float-left {
  38 + float: left !important;
  39 +}
  40 +.float-right {
  41 + float: right !important;
  42 +}
  43 +.float-none {
  44 + float: none !important;
  45 +}
  46 +.display-block {
  47 + display: block !important;
  48 +}
  49 +.clearfix:after {
  50 + content: '';
  51 + display: block;
  52 + height: 0;
  53 + overflow: hidden;
  54 + font-size: 0;
  55 + clear: both;
  56 +}
  57 +.m-hide {
  58 + display: none !important;
  59 + visibility: hidden;
  60 + opacity: 0;
  61 + z-index: -1;
  62 +}
  63 +.m-hidden {
  64 + visibility: hidden;
  65 + opacity: 0;
  66 + z-index: -1;
  67 +}
  68 +.m-show {
  69 + display: block !important;
  70 + visibility: visible;
  71 +}
  72 +.m-separate {
  73 + position: relative;
  74 + width: 100%;
  75 + line-height: 50px;
  76 + text-align: center;
  77 + font-size: 12px;
  78 + color: #666;
  79 + overflow: visible;
  80 +}
  81 +.m-more,
  82 +a.m-more {
  83 + display: block;
  84 + font-size: 12px;
  85 + text-align: center;
  86 + color: #999;
  87 + line-height: 45px;
  88 + background-color: #FFF;
  89 +}
  90 +.m-animate-hide {
  91 + -webkit-transform: translate(0, 100%) translateZ(0) !important;
  92 + -ms-transform: translate(0, 100%) translateZ(0) !important;
  93 + -o-transform: translate(0, 100%) translateZ(0) !important;
  94 + transform: translate(0, 100%) translateZ(0) !important;
  95 +}
  96 +.m-animate-show {
  97 + -webkit-transform: translate(0, 0) translateZ(0) !important;
  98 + -ms-transform: translate(0, 0) translateZ(0) !important;
  99 + -o-transform: translate(0, 0) translateZ(0) !important;
  100 + transform: translate(0, 0) translateZ(0) !important;
  101 +}
  102 +.hidden {
  103 + opacity: 0;
  104 + z-index: -1;
  105 +}
  106 +.mask-hidden {
  107 + opacity: 0;
  108 +}
  109 +.font-white {
  110 + color: #FFF !important;
  111 +}
  112 +.font-white-opacity {
  113 + color: rgba(255, 255, 255, 0.8) !important;
  114 +}
  115 +.font-deep {
  116 + color: #333 !important;
  117 +}
  118 +.font-gray {
  119 + color: #666 !important;
  120 +}
  121 +.font-light {
  122 + color: #999 !important;
  123 +}
  124 +.font-yellow {
  125 + color: #FF9D2C !important;
  126 +}
  127 +.font-orange {
  128 + color: #FF6B00 !important;
  129 +}
  130 +.font-red {
  131 + color: #fa4535 !important;
  132 +}
  133 +.font-green {
  134 + color: #23ac38 !important;
  135 +}
  136 +.background-gray {
  137 + background-color: #666 !important;
  138 +}
  139 +.background-yellow {
  140 + background-color: #FF9D2C !important;
  141 +}
  142 +.background-orange {
  143 + background-color: #FF6B00 !important;
  144 +}
  145 +.background-red {
  146 + background-color: #fa4535 !important;
  147 +}
  148 +.background-green {
  149 + background-color: #23ac38 !important;
  150 +}
  151 +.position-relative {
  152 + position: relative;
  153 +}
  154 +.z-index2 {
  155 + z-index: 2;
  156 +}
  157 +.width-auto {
  158 + width: auto !important;
  159 +}
  160 +.width-200p {
  161 + width: 200%;
  162 +}
  163 +.m-col-1 {
  164 + width: 100% !important;
  165 +}
  166 +.m-col-2 {
  167 + width: 50% !important;
  168 +}
  169 +.m-col-3 {
  170 + width: 33.33% !important;
  171 +}
  172 +.m-col-4 {
  173 + width: 25% !important;
  174 +}
css/util.less 0 → 100644
  1 +/***************************************************
  2 +* feature : 工具类class,提供浮动清除、文本对齐、显示隐藏等;
  3 +* update : 2015/02/03;
  4 +* use : 按需使用对应class即可;
  5 +* desc : ;
  6 +* feedback : 此处填入 issue, 并请附带以下信息[os_version, browser_version, page_path, issue_description]
  7 +* - demo => [windows 7, IE 8, http://diligrp.com/icon.html, 在不定height下未能垂直居中];
  8 +****************************************************/
  9 +
  10 +//文本
  11 +.text-left{
  12 + text-align: left !important;
  13 +}
  14 +
  15 +.text-center{
  16 + text-align: center !important;
  17 +}
  18 +
  19 +.text-right{
  20 + text-align: right !important;
  21 +}
  22 +
  23 +.text-nowrap{
  24 + white-space: nowrap !important;
  25 +}
  26 +.text-overflow{
  27 + overflow: hidden;
  28 + text-overflow: ellipsis;
  29 +}
  30 +
  31 +//改变大小写
  32 +.text-lowercase{
  33 + text-transform: lowercase;
  34 +}
  35 +
  36 +.text-uppercase{
  37 + text-transform: uppercase;
  38 +}
  39 +
  40 +.text-capitalize{
  41 + text-transform: capitalize;
  42 +}
  43 +
  44 +//缩进
  45 +.text-indent{
  46 + text-indent: -999em;
  47 +}
  48 +
  49 +//浮动
  50 +.float-left{
  51 + float: left !important;
  52 +}
  53 +
  54 +.float-right{
  55 + float: right !important;
  56 +}
  57 +
  58 +.float-none{
  59 + float: none !important;
  60 +}
  61 +
  62 +.display-block{
  63 + display: block !important;
  64 +}
  65 +
  66 +//浮动清除
  67 +.clearfix:after{
  68 + content: '';
  69 + display: block;
  70 + height: 0;
  71 + overflow: hidden;
  72 + font-size: 0;
  73 + clear: both;
  74 +}
  75 +
  76 +//可见性
  77 +.m-hide{
  78 + display: none !important;
  79 + visibility: hidden;
  80 + opacity: 0;
  81 + z-index: -1;
  82 +}
  83 +
  84 +.m-hidden{
  85 + visibility: hidden;
  86 + opacity: 0;
  87 + z-index: -1;
  88 +}
  89 +
  90 +.m-show{
  91 + display: block !important;
  92 + visibility: visible;
  93 +}
  94 +
  95 +
  96 +//分割线
  97 +.m-separate{
  98 + position: relative;
  99 + width: 100%;
  100 + line-height: 50px;
  101 + text-align: center;
  102 + font-size: 12px;
  103 + color: #666;
  104 + overflow: visible;
  105 +}
  106 +
  107 +//more text
  108 +.m-more, a.m-more{
  109 + display: block;
  110 + font-size: 12px;
  111 + text-align: center;
  112 + color: #999;
  113 + line-height: 45px;
  114 + background-color: #FFF;
  115 +}
  116 +
  117 +.m-animate-hide {
  118 + // -webkit-transform: translate3d(0, 100%, 0);
  119 + // -ms-transform: translate3d(0, 100%, 0);
  120 + // -o-transform: translate3d(0, 100%, 0);
  121 + // transform: translate3d(0, 100%, 0);
  122 + -webkit-transform: translate(0, 100%) translateZ(0) !important;
  123 + -ms-transform: translate(0, 100%) translateZ(0) !important;
  124 + -o-transform: translate(0, 100%) translateZ(0) !important;
  125 + transform: translate(0, 100%) translateZ(0) !important;
  126 + // visibility: hidden;
  127 +}
  128 +
  129 +.m-animate-show {
  130 + -webkit-transform: translate(0, 0) translateZ(0) !important;
  131 + -ms-transform: translate(0, 0) translateZ(0) !important;
  132 + -o-transform: translate(0, 0) translateZ(0) !important;
  133 + transform: translate(0, 0) translateZ(0) !important;
  134 +
  135 + // visibility: hidden;
  136 +}
  137 +
  138 +.hidden{
  139 + // visibility: hidden;
  140 + opacity: 0;
  141 + z-index: -1;
  142 +}
  143 +.mask-hidden{
  144 + opacity: 0;
  145 +}
  146 +
  147 +.font-white{
  148 + color: #FFF !important;
  149 +}
  150 +
  151 +.font-white-opacity{
  152 + color: rgba(255, 255, 255, .8) !important;
  153 +}
  154 +.font-deep{
  155 + color: #333 !important;
  156 +}
  157 +.font-gray{
  158 + color: #666 !important;
  159 +}
  160 +.font-light{
  161 + color: #999 !important;
  162 +}
  163 +.font-yellow{
  164 + color: #FF9D2C !important;
  165 +}
  166 +.font-orange{
  167 + color: #FF6B00 !important;
  168 +}
  169 +.font-red{
  170 + color: #fa4535 !important;
  171 +}
  172 +.font-green{
  173 + color: #23ac38 !important;
  174 +}
  175 +
  176 +.background-gray{
  177 + background-color: #666 !important;
  178 +}
  179 +.background-yellow{
  180 + background-color: #FF9D2C !important;
  181 +}
  182 +.background-orange{
  183 + background-color: #FF6B00 !important;
  184 +}
  185 +.background-red{
  186 + background-color: #fa4535 !important;
  187 +}
  188 +.background-green{
  189 + background-color: #23ac38 !important;
  190 +}
  191 +.position-relative{
  192 + position: relative;
  193 +}
  194 +.z-index2{
  195 + z-index: 2;
  196 +}
  197 +.width-auto{
  198 + width: auto !important;
  199 +}
  200 +.width-200p{
  201 + width: 200%;
  202 +}
  203 +
  204 +.m-col-1{
  205 + width: 100% !important;
  206 +}
  207 +.m-col-2{
  208 + width: 50% !important;
  209 +}
  210 +.m-col-3{
  211 + width: 33.33% !important;
  212 +}
  213 +.m-col-4{
  214 + width: 25% !important;
  215 +}
html/index.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +
  4 +<head>
  5 + <meta name="viewport" content="user-scalable=0, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
  6 + <meta content="telephone=no" name="format-detection" />
  7 + <meta content="black" name="apple-mobile-web-app-status-bar-style" />
  8 + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9 + <title>七巧板</title>
  10 + <link rel="stylesheet" href="../css/common.css">
  11 +</head>
  12 +
  13 +<body>
  14 +
  15 + <!-- header for wap -->
  16 + <header class="m-header header-light">
  17 + <div class="head">
  18 + <a href="#" class="lt-bar"><i class="m-icon icon-back"></i></a>
  19 + <h1 class="font-deep">名古屋的美食店</h1>
  20 + </div>
  21 + </header>
  22 +
  23 +
  24 + <!-- tab -->
  25 + <ul class="m-nav border-1px border-bottom">
  26 + <li class="on"><a href="#">秒杀专区</a></li>
  27 + <li><a href="#">活动专区</a></li>
  28 + <li><a href="#">最低专区</a></li>
  29 + <li><a href="#">精品专区</a></li>
  30 + </ul>
  31 +
  32 +
  33 + <!-- slider -->
  34 + <div class="m-slider">
  35 + <!-- Swiper -->
  36 + <div class="swiper-container">
  37 + <div class="swiper-wrapper">
  38 + <a class="swiper-slide" href="#" style="background:url(../temp/pic_320.png) center center no-repeat; background-size:100% 100%;"></a>
  39 + </div>
  40 + <!-- Add Pagination -->
  41 + <div class="swiper-pagination"></div>
  42 + </div>
  43 + </div>
  44 +
  45 + <!-- section -->
  46 + <div class="m-section">
  47 + <h3 class="section-head">秒杀专区</h3>
  48 + </div>
  49 +
  50 + <!-- goods -->
  51 +
  52 + <ul class="m-goods-items width-200p clearfix">
  53 + <li>
  54 + <a href="#">
  55 + <div class="pic" style="background-image:url(../temp/pic_220.png); background-size:cover;"></div>
  56 + <h3> 丝瓜 产地山东潍坊市 产地山东潍坊市</h3>
  57 + <p>
  58 + <em>0.8-0.9元/斤</em>
  59 + </p>
  60 + <p>
  61 + <em class="origin-price">1.5元/斤</em>
  62 + </p>
  63 + </a>
  64 + </li>
  65 + <li>
  66 + <a href="#">
  67 + <div class="pic" style="background-image:url(../temp/pic_220.png); background-size:cover;"></div>
  68 + <h3> 丝瓜 产地山东潍坊市 产地山东潍坊市</h3>
  69 + <p>
  70 + <em>0.8-0.9元/斤</em>
  71 + </p>
  72 + <p>
  73 + <em class="origin-price">1.5元/斤</em>
  74 + </p>
  75 + </a>
  76 + </li>
  77 + <li>
  78 + <a href="#">
  79 + <div class="pic" style="background-image:url(../temp/pic_220.png); background-size:cover;"></div>
  80 + <h3> 丝瓜 产地山东潍坊市 产地山东潍坊市</h3>
  81 + <p>
  82 + <em>0.8-0.9元/斤</em>
  83 + </p>
  84 + <p>
  85 + <em class="origin-price">1.5元/斤</em>
  86 + </p>
  87 + </a>
  88 + </li>
  89 + </ul>
  90 +
  91 +
  92 + <!-- section -->
  93 + <div class="m-section">
  94 + <h3 class="section-head">活动专区</h3>
  95 + </div>
  96 + <div class="section-items">
  97 + <a href="#" class="section-item">
  98 + <img src="../temp/p_1.jpg" alt="">
  99 + </a>
  100 + <a href="#" class="section-item">
  101 + <img src="../temp/p_2.jpg" alt="">
  102 + </a>
  103 + <a href="#" class="section-item">
  104 + <img src="../temp/p_3.jpg" alt="">
  105 + </a>
  106 + </div>
  107 +
  108 + <!-- section -->
  109 + <div class="m-section">
  110 + <h3 class="section-head">最低专区</h3>
  111 + </div>
  112 + <div class="product-items clearfix">
  113 + <ul class="items border-1px border-top">
  114 + <li class="item border-1px-full">
  115 + <a href="#">
  116 + <h3>新鲜花菜</h3>
  117 + <p>
  118 + <em>0.8-0.9元/斤</em>
  119 + </p>
  120 + <img src="../temp/pic_220.png" class="pic" alt="">
  121 + </a>
  122 + </li>
  123 + <li class="item border-1px-full">
  124 + <a href="#">
  125 + <h3>新鲜花菜</h3>
  126 + <p>
  127 + <em>0.8-0.9元/斤</em>
  128 + </p>
  129 + <img src="../temp/pic_220.png" class="pic" alt="">
  130 + </a>
  131 + </li>
  132 + <li class="item border-1px-full">
  133 + <a href="#">
  134 + <h3>新鲜花菜</h3>
  135 + <p>
  136 + <em>0.8-0.9元/斤</em>
  137 + </p>
  138 + <img src="../temp/pic_220.png" class="pic" alt="">
  139 + </a>
  140 + </li>
  141 + <li class="item border-1px-full">
  142 + <a href="#">
  143 + <h3>新鲜花菜</h3>
  144 + <p>
  145 + <em>0.8-0.9元/斤</em>
  146 + </p>
  147 + <img src="../temp/pic_220.png" class="pic" alt="">
  148 + </a>
  149 + </li>
  150 + <li class="item border-1px-full">
  151 + <a href="#">
  152 + <h3>新鲜花菜</h3>
  153 + <p>
  154 + <em>0.8-0.9元/斤</em>
  155 + </p>
  156 + <img src="../temp/pic_220.png" class="pic" alt="">
  157 + </a>
  158 + </li>
  159 + <li class="item border-1px-full">
  160 + <a href="#">
  161 + <h3>新鲜花菜</h3>
  162 + <p>
  163 + <em>0.8-0.9元/斤</em>
  164 + </p>
  165 + <img src="../temp/pic_220.png" class="pic" alt="">
  166 + </a>
  167 + </li>
  168 + <li class="item border-1px-full">
  169 + <a href="#">
  170 + <h3>新鲜花菜</h3>
  171 + <p>
  172 + <em>0.8-0.9元/斤</em>
  173 + </p>
  174 + <img src="../temp/pic_220.png" class="pic" alt="">
  175 + </a>
  176 + </li>
  177 + <li class="item border-1px-full">
  178 + <a href="#">
  179 + <h3>新鲜花菜</h3>
  180 + <p>
  181 + <em>0.8-0.9元/斤</em>
  182 + </p>
  183 + <img src="../temp/pic_220.png" class="pic" alt="">
  184 + </a>
  185 + </li>
  186 + <li class="item border-1px-full">
  187 + <a href="#">
  188 + <h3>新鲜花菜</h3>
  189 + <p>
  190 + <em>0.8-0.9元/斤</em>
  191 + </p>
  192 + <img src="../temp/pic_220.png" class="pic" alt="">
  193 + </a>
  194 + </li>
  195 + </ul>
  196 + </div>
  197 +
  198 +
  199 + <!-- section -->
  200 + <div class="m-section">
  201 + <h3 class="section-head">精品专区</h3>
  202 + </div>
  203 +
  204 + <div class="photo-wall clearfix">
  205 + <a href="#" class="photo-item photo-2p">
  206 + <img src="../temp/wall_1.jpg" alt="">
  207 + </a>
  208 + <a href="#" class="photo-item photo-1p">
  209 + <img src="../temp/wall_2.jpg" alt="">
  210 + </a>
  211 + <a href="#" class="photo-item photo-1p">
  212 + <img src="../temp/wall_3.jpg" alt="">
  213 + </a>
  214 + <a href="#" class="photo-item photo-1p">
  215 + <img src="../temp/wall_4.jpg" alt="">
  216 + </a>
  217 + <a href="#" class="photo-item photo-1p">
  218 + <img src="../temp/wall_5.jpg" alt="">
  219 + </a>
  220 + </div>
  221 +
  222 +
  223 + <!-- section -->
  224 + <div class="m-section">
  225 + <h3 class="section-head">推荐专区</h3>
  226 + </div>
  227 +
  228 +
  229 + <ul class="m-list-view border-1px border-top">
  230 + <li class="cell cell-pic border-1px border-bottom">
  231 + <a href="#">
  232 + <img src="../temp/pic_80.png" width="80" height="80" alt="" class="pic">
  233 + <div class="cont">
  234 + <h3>白石榴 产地韩国</h3>
  235 +
  236 + <em class="font-red">0.8~0.9元/斤</em>
  237 +
  238 + <p class="desc">
  239 + <span class="name font-gray">王大大大大</span>
  240 + <span class="float-right category font-gray">主营:根茎类</span>
  241 + </p>
  242 + <p>广西柳州市城中区第三方斯蒂芬是</p>
  243 + </div>
  244 + </a>
  245 + </li>
  246 +
  247 + <li class="cell cell-pic border-1px border-bottom">
  248 + <a href="#">
  249 + <img src="../temp/pic_80.png" width="80" height="80" alt="" class="pic">
  250 + <div class="cont">
  251 + <h3>白石榴 产地韩国</h3>
  252 +
  253 + <em class="font-red">0.8~0.9元/斤</em>
  254 +
  255 + <p class="desc">
  256 + <span class="name font-gray">王大大大大</span>
  257 + <span class="float-right category font-gray">主营:根茎类</span>
  258 + </p>
  259 + <p>广西柳州市城中区第三方斯蒂芬是</p>
  260 + </div>
  261 + </a>
  262 + </li>
  263 +
  264 + <li class="cell cell-pic border-1px border-bottom">
  265 + <a href="#">
  266 + <img src="../temp/pic_80.png" width="80" height="80" alt="" class="pic">
  267 + <div class="cont">
  268 + <h3>白石榴 产地韩国</h3>
  269 +
  270 + <em class="font-red">0.8~0.9元/斤</em>
  271 +
  272 + <p class="desc">
  273 + <span class="name font-gray">王大大大大</span>
  274 + <span class="float-right category font-gray">主营:根茎类</span>
  275 + </p>
  276 + <p>广西柳州市城中区第三方斯蒂芬是</p>
  277 + </div>
  278 + </a>
  279 + </li>
  280 + </ul>
  281 +
  282 + <!-- tab -->
  283 + <ul class="m-tab tab-col-4 border-1px border-bottom">
  284 + <li class="on"><a href="#">今日必抢</a></li>
  285 + <li><a href="#">名古屋</a></li>
  286 + <li><a href="#">我是吃货</a></li>
  287 + <li><a href="#">我是吃货</a></li>
  288 + </ul>
  289 +
  290 + <ul class="m-goods-items clearfix">
  291 + <li class="m-col-2">
  292 + <a href="#">
  293 + <div class="pic" style="background-image:url(../temp/pic_220.png); background-size:cover;"></div>
  294 + <h3> 丝瓜 产地山东潍坊市 产地山东潍坊市</h3>
  295 + <p>
  296 + <em>0.8-0.9元/斤</em>
  297 + </p>
  298 + </a>
  299 + </li>
  300 + <li class="m-col-2">
  301 + <a href="#">
  302 + <div class="pic" style="background-image:url(../temp/pic_220.png); background-size:cover;"></div>
  303 + <h3> 丝瓜 产地山东潍坊市 产地山东潍坊市</h3>
  304 + <p>
  305 + <em>0.8-0.9元/斤</em>
  306 + </p>
  307 + </a>
  308 + </li>
  309 + <li class="m-col-2">
  310 + <a href="#">
  311 + <div class="pic" style="background-image:url(../temp/pic_220.png); background-size:cover;"></div>
  312 + <h3> 丝瓜 产地山东潍坊市 产地山东潍坊市</h3>
  313 + <p>
  314 + <em>0.8-0.9元/斤</em>
  315 + </p>
  316 + </a>
  317 + </li>
  318 + <li class="m-col-2">
  319 + <a href="#">
  320 + <div class="pic" style="background-image:url(../temp/pic_220.png); background-size:cover;"></div>
  321 + <h3> 丝瓜 产地山东潍坊市 产地山东潍坊市</h3>
  322 + <p>
  323 + <em>0.8-0.9元/斤</em>
  324 + </p>
  325 + </a>
  326 + </li>
  327 + </ul>
  328 +
  329 +</body>
  330 +
  331 +</html>
images/Gruntfile.js 0 → 100644
  1 +'use strict';
  2 +
  3 +module.exports = function(grunt) {
  4 + grunt.initConfig({
  5 + pkg: grunt.file.readJSON('package.json'),
  6 + sprite: {
  7 + all: {
  8 + // 待合并的文件
  9 + src: 'src/*.png',
  10 + // 合并后输出的文件
  11 + dest: 'dist/sprite.png',
  12 + // 输出对应雪碧图的样式
  13 + destCss: '../css/sprite.less',
  14 + // 可选: 手动指定样式里引用图片的路径
  15 + imgPath: '../images/dist/sprite.png',
  16 + cssVarMap: function(sprite) {
  17 + sprite.name = sprite.name.replace(/^\s{1}/, ''); //去除文件名前空白
  18 + //sprite.name = sprite.name.replace('@2x', '');
  19 + sprite.name = 'icon-' + sprite.name;
  20 + sprite.name = sprite.name;
  21 + },
  22 + padding: 6,
  23 + // 可选: 指定算法 (top-down, left-right, diagonal,alt-diagonal, binary-tree )等
  24 + // 默认是top-down,二叉树合并出来的图体积最小
  25 + algorithm: 'binary-tree',
  26 + // 可选: 指定CSS格式 (默认根据destCSS中的后缀设置格式)
  27 + // (stylus, scss, scss_maps, sass, less, json, json_array, css)
  28 + cssFormat: 'less'
  29 + }
  30 + }
  31 + });
  32 +
  33 + grunt.loadNpmTasks('grunt-spritesmith');
  34 + grunt.registerTask('default', [
  35 + 'sprite'
  36 + ]);
  37 +};
images/dist/sprite.png 0 → 100644

1.23 KB

images/gulpfile.js 0 → 100644
  1 +var gulp = require('gulp');
  2 +var spritesmith = require('gulp.spritesmith');
  3 +
  4 +gulp.task('sprite', function() {
  5 + var spriteData = gulp.src('src/*.png').pipe(spritesmith({
  6 + imgName: 'sprite.png',
  7 + // cssName: 'sprite.less',
  8 + // 输出对应雪碧图的样式
  9 + destCss: '../../2.3.0/sp-sprite.less',
  10 + imgPath: '../images/2.3.0/dist/sprite.png',
  11 + cssVarMap: function(sprite) {
  12 + sprite.name = sprite.name.replace(/^\s{1}/, ''); //去除文件名前空白
  13 + //sprite.name = sprite.name.replace('@2x', '');
  14 + sprite.name = 'icon-' + sprite.name;
  15 + sprite.name = sprite.name;
  16 + },
  17 + padding: 6,
  18 + // 可选: 指定算法 (top-down, left-right, diagonal,alt-diagonal, binary-tree )等
  19 + // 默认是top-down,二叉树合并出来的图体积最小
  20 + algorithm: 'binary-tree',
  21 + // 可选: 指定CSS格式 (默认根据destCSS中的后缀设置格式)
  22 + // (stylus, scss, scss_maps, sass, less, json, json_array, css)
  23 + cssFormat: 'less'
  24 + }));
  25 + return spriteData.pipe(gulp.dest('dest'));
  26 +});
images/node_modules/.bin/cake 0 → 120000
  1 +../coffee-script/bin/cake
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/coffee 0 → 120000
  1 +../coffee-script/bin/coffee
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/esparse 0 → 120000
  1 +../esprima/bin/esparse.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/esvalidate 0 → 120000
  1 +../esprima/bin/esvalidate.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/grunt-glue 0 → 120000
  1 +../grunt-glue/bin/grunt-glue
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/gulp 0 → 120000
  1 +../gulp/bin/gulp.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/js-yaml 0 → 120000
  1 +../js-yaml/bin/js-yaml.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/mkdirp 0 → 120000
  1 +../mkdirp/bin/cmd.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/nopt 0 → 120000
  1 +../nopt/bin/nopt.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/rimraf 0 → 120000
  1 +../rimraf/bin.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/semver 0 → 120000
  1 +../semver/bin/semver
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/strip-indent 0 → 120000
  1 +../strip-indent/cli.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/user-home 0 → 120000
  1 +../user-home/cli.js
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/.bin/which 0 → 120000
  1 +../which/bin/which
0 \ No newline at end of file 2 \ No newline at end of file
images/node_modules/abbrev/.npmignore 0 → 100644
  1 +.nyc_output
  2 +nyc_output
  3 +node_modules
  4 +coverage
images/node_modules/abbrev/.travis.yml 0 → 100644
  1 +language: node_js
  2 +node_js:
  3 + - '0.10'
  4 + - '0.12'
  5 + - 'iojs'
images/node_modules/abbrev/CONTRIBUTING.md 0 → 100644
  1 + To get started, <a
  2 + href="http://www.clahub.com/agreements/isaacs/abbrev-js">sign the
  3 + Contributor License Agreement</a>.
images/node_modules/abbrev/LICENSE 0 → 100644
  1 +The ISC License
  2 +
  3 +Copyright (c) Isaac Z. Schlueter and Contributors
  4 +
  5 +Permission to use, copy, modify, and/or distribute this software for any
  6 +purpose with or without fee is hereby granted, provided that the above
  7 +copyright notice and this permission notice appear in all copies.
  8 +
  9 +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  10 +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  11 +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  12 +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  13 +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  14 +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
  15 +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
images/node_modules/abbrev/README.md 0 → 100644
  1 +# abbrev-js
  2 +
  3 +Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).
  4 +
  5 +Usage:
  6 +
  7 + var abbrev = require("abbrev");
  8 + abbrev("foo", "fool", "folding", "flop");
  9 +
  10 + // returns:
  11 + { fl: 'flop'
  12 + , flo: 'flop'
  13 + , flop: 'flop'
  14 + , fol: 'folding'
  15 + , fold: 'folding'
  16 + , foldi: 'folding'
  17 + , foldin: 'folding'
  18 + , folding: 'folding'
  19 + , foo: 'foo'
  20 + , fool: 'fool'
  21 + }
  22 +
  23 +This is handy for command-line scripts, or other cases where you want to be able to accept shorthands.
images/node_modules/abbrev/abbrev.js 0 → 100644
  1 +
  2 +module.exports = exports = abbrev.abbrev = abbrev
  3 +
  4 +abbrev.monkeyPatch = monkeyPatch
  5 +
  6 +function monkeyPatch () {
  7 + Object.defineProperty(Array.prototype, 'abbrev', {
  8 + value: function () { return abbrev(this) },
  9 + enumerable: false, configurable: true, writable: true
  10 + })
  11 +
  12 + Object.defineProperty(Object.prototype, 'abbrev', {
  13 + value: function () { return abbrev(Object.keys(this)) },
  14 + enumerable: false, configurable: true, writable: true
  15 + })
  16 +}
  17 +
  18 +function abbrev (list) {
  19 + if (arguments.length !== 1 || !Array.isArray(list)) {
  20 + list = Array.prototype.slice.call(arguments, 0)
  21 + }
  22 + for (var i = 0, l = list.length, args = [] ; i < l ; i ++) {
  23 + args[i] = typeof list[i] === "string" ? list[i] : String(list[i])
  24 + }
  25 +
  26 + // sort them lexicographically, so that they're next to their nearest kin
  27 + args = args.sort(lexSort)
  28 +
  29 + // walk through each, seeing how much it has in common with the next and previous
  30 + var abbrevs = {}
  31 + , prev = ""
  32 + for (var i = 0, l = args.length ; i < l ; i ++) {
  33 + var current = args[i]
  34 + , next = args[i + 1] || ""
  35 + , nextMatches = true
  36 + , prevMatches = true
  37 + if (current === next) continue
  38 + for (var j = 0, cl = current.length ; j < cl ; j ++) {
  39 + var curChar = current.charAt(j)
  40 + nextMatches = nextMatches && curChar === next.charAt(j)
  41 + prevMatches = prevMatches && curChar === prev.charAt(j)
  42 + if (!nextMatches && !prevMatches) {
  43 + j ++
  44 + break
  45 + }
  46 + }
  47 + prev = current
  48 + if (j === cl) {
  49 + abbrevs[current] = current
  50 + continue
  51 + }
  52 + for (var a = current.substr(0, j) ; j <= cl ; j ++) {
  53 + abbrevs[a] = current
  54 + a += current.charAt(j)
  55 + }
  56 + }
  57 + return abbrevs
  58 +}
  59 +
  60 +function lexSort (a, b) {
  61 + return a === b ? 0 : a > b ? 1 : -1
  62 +}
images/node_modules/abbrev/package.json 0 → 100644
  1 +{
  2 + "_args": [
  3 + [
  4 + "abbrev@1",
  5 + "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/nopt"
  6 + ]
  7 + ],
  8 + "_from": "abbrev@>=1.0.0 <2.0.0",
  9 + "_id": "abbrev@1.0.7",
  10 + "_inCache": true,
  11 + "_installable": true,
  12 + "_location": "/abbrev",
  13 + "_nodeVersion": "2.0.1",
  14 + "_npmUser": {
  15 + "email": "isaacs@npmjs.com",
  16 + "name": "isaacs"
  17 + },
  18 + "_npmVersion": "2.10.1",
  19 + "_phantomChildren": {},
  20 + "_requested": {
  21 + "name": "abbrev",
  22 + "raw": "abbrev@1",
  23 + "rawSpec": "1",
  24 + "scope": null,
  25 + "spec": ">=1.0.0 <2.0.0",
  26 + "type": "range"
  27 + },
  28 + "_requiredBy": [
  29 + "/nopt"
  30 + ],
  31 + "_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz",
  32 + "_shasum": "5b6035b2ee9d4fb5cf859f08a9be81b208491843",
  33 + "_shrinkwrap": null,
  34 + "_spec": "abbrev@1",
  35 + "_where": "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/nopt",
  36 + "author": {
  37 + "email": "i@izs.me",
  38 + "name": "Isaac Z. Schlueter"
  39 + },
  40 + "bugs": {
  41 + "url": "https://github.com/isaacs/abbrev-js/issues"
  42 + },
  43 + "dependencies": {},
  44 + "description": "Like ruby's abbrev module, but in js",
  45 + "devDependencies": {
  46 + "tap": "^1.2.0"
  47 + },
  48 + "directories": {},
  49 + "dist": {
  50 + "shasum": "5b6035b2ee9d4fb5cf859f08a9be81b208491843",
  51 + "tarball": "http://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
  52 + },
  53 + "gitHead": "821d09ce7da33627f91bbd8ed631497ed6f760c2",
  54 + "homepage": "https://github.com/isaacs/abbrev-js#readme",
  55 + "license": "ISC",
  56 + "main": "abbrev.js",
  57 + "maintainers": [
  58 + {
  59 + "name": "isaacs",
  60 + "email": "i@izs.me"
  61 + }
  62 + ],
  63 + "name": "abbrev",
  64 + "optionalDependencies": {},
  65 + "readme": "ERROR: No README data found!",
  66 + "repository": {
  67 + "type": "git",
  68 + "url": "git+ssh://git@github.com/isaacs/abbrev-js.git"
  69 + },
  70 + "scripts": {
  71 + "test": "tap test.js --cov"
  72 + },
  73 + "version": "1.0.7"
  74 +}
images/node_modules/abbrev/test.js 0 → 100644
  1 +var abbrev = require('./abbrev.js')
  2 +var assert = require("assert")
  3 +var util = require("util")
  4 +
  5 +console.log("TAP version 13")
  6 +var count = 0
  7 +
  8 +function test (list, expect) {
  9 + count++
  10 + var actual = abbrev(list)
  11 + assert.deepEqual(actual, expect,
  12 + "abbrev("+util.inspect(list)+") === " + util.inspect(expect) + "\n"+
  13 + "actual: "+util.inspect(actual))
  14 + actual = abbrev.apply(exports, list)
  15 + assert.deepEqual(abbrev.apply(exports, list), expect,
  16 + "abbrev("+list.map(JSON.stringify).join(",")+") === " + util.inspect(expect) + "\n"+
  17 + "actual: "+util.inspect(actual))
  18 + console.log('ok - ' + list.join(' '))
  19 +}
  20 +
  21 +test([ "ruby", "ruby", "rules", "rules", "rules" ],
  22 +{ rub: 'ruby'
  23 +, ruby: 'ruby'
  24 +, rul: 'rules'
  25 +, rule: 'rules'
  26 +, rules: 'rules'
  27 +})
  28 +test(["fool", "foom", "pool", "pope"],
  29 +{ fool: 'fool'
  30 +, foom: 'foom'
  31 +, poo: 'pool'
  32 +, pool: 'pool'
  33 +, pop: 'pope'
  34 +, pope: 'pope'
  35 +})
  36 +test(["a", "ab", "abc", "abcd", "abcde", "acde"],
  37 +{ a: 'a'
  38 +, ab: 'ab'
  39 +, abc: 'abc'
  40 +, abcd: 'abcd'
  41 +, abcde: 'abcde'
  42 +, ac: 'acde'
  43 +, acd: 'acde'
  44 +, acde: 'acde'
  45 +})
  46 +
  47 +console.log("1..%d", count)
images/node_modules/ansi-regex/index.js 0 → 100644
  1 +'use strict';
  2 +module.exports = function () {
  3 + return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
  4 +};
images/node_modules/ansi-regex/license 0 → 100644
  1 +The MIT License (MIT)
  2 +
  3 +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining a copy
  6 +of this software and associated documentation files (the "Software"), to deal
  7 +in the Software without restriction, including without limitation the rights
  8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9 +copies of the Software, and to permit persons to whom the Software is
  10 +furnished to do so, subject to the following conditions:
  11 +
  12 +The above copyright notice and this permission notice shall be included in
  13 +all copies or substantial portions of the Software.
  14 +
  15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21 +THE SOFTWARE.
images/node_modules/ansi-regex/package.json 0 → 100644
  1 +{
  2 + "_args": [
  3 + [
  4 + "ansi-regex@^2.0.0",
  5 + "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/has-ansi"
  6 + ]
  7 + ],
  8 + "_from": "ansi-regex@>=2.0.0 <3.0.0",
  9 + "_id": "ansi-regex@2.0.0",
  10 + "_inCache": true,
  11 + "_installable": true,
  12 + "_location": "/ansi-regex",
  13 + "_nodeVersion": "0.12.5",
  14 + "_npmUser": {
  15 + "email": "sindresorhus@gmail.com",
  16 + "name": "sindresorhus"
  17 + },
  18 + "_npmVersion": "2.11.2",
  19 + "_phantomChildren": {},
  20 + "_requested": {
  21 + "name": "ansi-regex",
  22 + "raw": "ansi-regex@^2.0.0",
  23 + "rawSpec": "^2.0.0",
  24 + "scope": null,
  25 + "spec": ">=2.0.0 <3.0.0",
  26 + "type": "range"
  27 + },
  28 + "_requiredBy": [
  29 + "/has-ansi",
  30 + "/strip-ansi"
  31 + ],
  32 + "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
  33 + "_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
  34 + "_shrinkwrap": null,
  35 + "_spec": "ansi-regex@^2.0.0",
  36 + "_where": "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/has-ansi",
  37 + "author": {
  38 + "email": "sindresorhus@gmail.com",
  39 + "name": "Sindre Sorhus",
  40 + "url": "sindresorhus.com"
  41 + },
  42 + "bugs": {
  43 + "url": "https://github.com/sindresorhus/ansi-regex/issues"
  44 + },
  45 + "dependencies": {},
  46 + "description": "Regular expression for matching ANSI escape codes",
  47 + "devDependencies": {
  48 + "mocha": "*"
  49 + },
  50 + "directories": {},
  51 + "dist": {
  52 + "shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
  53 + "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
  54 + },
  55 + "engines": {
  56 + "node": ">=0.10.0"
  57 + },
  58 + "files": [
  59 + "index.js"
  60 + ],
  61 + "gitHead": "57c3f2941a73079fa8b081e02a522e3d29913e2f",
  62 + "homepage": "https://github.com/sindresorhus/ansi-regex",
  63 + "keywords": [
  64 + "256",
  65 + "ansi",
  66 + "cli",
  67 + "color",
  68 + "colors",
  69 + "colour",
  70 + "command-line",
  71 + "console",
  72 + "escape",
  73 + "find",
  74 + "formatting",
  75 + "match",
  76 + "pattern",
  77 + "re",
  78 + "regex",
  79 + "regexp",
  80 + "rgb",
  81 + "shell",
  82 + "string",
  83 + "styles",
  84 + "terminal",
  85 + "test",
  86 + "text",
  87 + "tty",
  88 + "xterm"
  89 + ],
  90 + "license": "MIT",
  91 + "maintainers": [
  92 + {
  93 + "name": "sindresorhus",
  94 + "email": "sindresorhus@gmail.com"
  95 + },
  96 + {
  97 + "name": "jbnicolai",
  98 + "email": "jappelman@xebia.com"
  99 + }
  100 + ],
  101 + "name": "ansi-regex",
  102 + "optionalDependencies": {},
  103 + "readme": "ERROR: No README data found!",
  104 + "repository": {
  105 + "type": "git",
  106 + "url": "git+https://github.com/sindresorhus/ansi-regex.git"
  107 + },
  108 + "scripts": {
  109 + "test": "mocha test/test.js",
  110 + "view-supported": "node test/viewCodes.js"
  111 + },
  112 + "version": "2.0.0"
  113 +}
images/node_modules/ansi-regex/readme.md 0 → 100644
  1 +# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex)
  2 +
  3 +> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
  4 +
  5 +
  6 +## Install
  7 +
  8 +```
  9 +$ npm install --save ansi-regex
  10 +```
  11 +
  12 +
  13 +## Usage
  14 +
  15 +```js
  16 +var ansiRegex = require('ansi-regex');
  17 +
  18 +ansiRegex().test('\u001b[4mcake\u001b[0m');
  19 +//=> true
  20 +
  21 +ansiRegex().test('cake');
  22 +//=> false
  23 +
  24 +'\u001b[4mcake\u001b[0m'.match(ansiRegex());
  25 +//=> ['\u001b[4m', '\u001b[0m']
  26 +```
  27 +
  28 +
  29 +## License
  30 +
  31 +MIT © [Sindre Sorhus](http://sindresorhus.com)
images/node_modules/ansi-styles/index.js 0 → 100644
  1 +'use strict';
  2 +
  3 +function assembleStyles () {
  4 + var styles = {
  5 + modifiers: {
  6 + reset: [0, 0],
  7 + bold: [1, 22], // 21 isn't widely supported and 22 does the same thing
  8 + dim: [2, 22],
  9 + italic: [3, 23],
  10 + underline: [4, 24],
  11 + inverse: [7, 27],
  12 + hidden: [8, 28],
  13 + strikethrough: [9, 29]
  14 + },
  15 + colors: {
  16 + black: [30, 39],
  17 + red: [31, 39],
  18 + green: [32, 39],
  19 + yellow: [33, 39],
  20 + blue: [34, 39],
  21 + magenta: [35, 39],
  22 + cyan: [36, 39],
  23 + white: [37, 39],
  24 + gray: [90, 39]
  25 + },
  26 + bgColors: {
  27 + bgBlack: [40, 49],
  28 + bgRed: [41, 49],
  29 + bgGreen: [42, 49],
  30 + bgYellow: [43, 49],
  31 + bgBlue: [44, 49],
  32 + bgMagenta: [45, 49],
  33 + bgCyan: [46, 49],
  34 + bgWhite: [47, 49]
  35 + }
  36 + };
  37 +
  38 + // fix humans
  39 + styles.colors.grey = styles.colors.gray;
  40 +
  41 + Object.keys(styles).forEach(function (groupName) {
  42 + var group = styles[groupName];
  43 +
  44 + Object.keys(group).forEach(function (styleName) {
  45 + var style = group[styleName];
  46 +
  47 + styles[styleName] = group[styleName] = {
  48 + open: '\u001b[' + style[0] + 'm',
  49 + close: '\u001b[' + style[1] + 'm'
  50 + };
  51 + });
  52 +
  53 + Object.defineProperty(styles, groupName, {
  54 + value: group,
  55 + enumerable: false
  56 + });
  57 + });
  58 +
  59 + return styles;
  60 +}
  61 +
  62 +Object.defineProperty(module, 'exports', {
  63 + enumerable: true,
  64 + get: assembleStyles
  65 +});
images/node_modules/ansi-styles/license 0 → 100644
  1 +The MIT License (MIT)
  2 +
  3 +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining a copy
  6 +of this software and associated documentation files (the "Software"), to deal
  7 +in the Software without restriction, including without limitation the rights
  8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9 +copies of the Software, and to permit persons to whom the Software is
  10 +furnished to do so, subject to the following conditions:
  11 +
  12 +The above copyright notice and this permission notice shall be included in
  13 +all copies or substantial portions of the Software.
  14 +
  15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21 +THE SOFTWARE.
images/node_modules/ansi-styles/package.json 0 → 100644
  1 +{
  2 + "_args": [
  3 + [
  4 + "ansi-styles@^2.1.0",
  5 + "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/chalk"
  6 + ]
  7 + ],
  8 + "_from": "ansi-styles@>=2.1.0 <3.0.0",
  9 + "_id": "ansi-styles@2.1.0",
  10 + "_inCache": true,
  11 + "_installable": true,
  12 + "_location": "/ansi-styles",
  13 + "_nodeVersion": "0.12.4",
  14 + "_npmUser": {
  15 + "email": "jappelman@xebia.com",
  16 + "name": "jbnicolai"
  17 + },
  18 + "_npmVersion": "2.10.1",
  19 + "_phantomChildren": {},
  20 + "_requested": {
  21 + "name": "ansi-styles",
  22 + "raw": "ansi-styles@^2.1.0",
  23 + "rawSpec": "^2.1.0",
  24 + "scope": null,
  25 + "spec": ">=2.1.0 <3.0.0",
  26 + "type": "range"
  27 + },
  28 + "_requiredBy": [
  29 + "/chalk"
  30 + ],
  31 + "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz",
  32 + "_shasum": "990f747146927b559a932bf92959163d60c0d0e2",
  33 + "_shrinkwrap": null,
  34 + "_spec": "ansi-styles@^2.1.0",
  35 + "_where": "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/chalk",
  36 + "author": {
  37 + "email": "sindresorhus@gmail.com",
  38 + "name": "Sindre Sorhus",
  39 + "url": "sindresorhus.com"
  40 + },
  41 + "bugs": {
  42 + "url": "https://github.com/chalk/ansi-styles/issues"
  43 + },
  44 + "dependencies": {},
  45 + "description": "ANSI escape codes for styling strings in the terminal",
  46 + "devDependencies": {
  47 + "mocha": "*"
  48 + },
  49 + "directories": {},
  50 + "dist": {
  51 + "shasum": "990f747146927b559a932bf92959163d60c0d0e2",
  52 + "tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz"
  53 + },
  54 + "engines": {
  55 + "node": ">=0.10.0"
  56 + },
  57 + "files": [
  58 + "index.js"
  59 + ],
  60 + "gitHead": "18421cbe4a2d93359ec2599a894f704be126d066",
  61 + "homepage": "https://github.com/chalk/ansi-styles",
  62 + "keywords": [
  63 + "256",
  64 + "ansi",
  65 + "cli",
  66 + "color",
  67 + "colors",
  68 + "colour",
  69 + "command-line",
  70 + "console",
  71 + "escape",
  72 + "formatting",
  73 + "log",
  74 + "logging",
  75 + "rgb",
  76 + "shell",
  77 + "string",
  78 + "styles",
  79 + "terminal",
  80 + "text",
  81 + "tty",
  82 + "xterm"
  83 + ],
  84 + "license": "MIT",
  85 + "maintainers": [
  86 + {
  87 + "name": "sindresorhus",
  88 + "email": "sindresorhus@gmail.com"
  89 + },
  90 + {
  91 + "name": "jbnicolai",
  92 + "email": "jappelman@xebia.com"
  93 + }
  94 + ],
  95 + "name": "ansi-styles",
  96 + "optionalDependencies": {},
  97 + "readme": "ERROR: No README data found!",
  98 + "repository": {
  99 + "type": "git",
  100 + "url": "git+https://github.com/chalk/ansi-styles.git"
  101 + },
  102 + "scripts": {
  103 + "test": "mocha"
  104 + },
  105 + "version": "2.1.0"
  106 +}
images/node_modules/ansi-styles/readme.md 0 → 100644
  1 +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
  2 +
  3 +> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
  4 +
  5 +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
  6 +
  7 +![](screenshot.png)
  8 +
  9 +
  10 +## Install
  11 +
  12 +```
  13 +$ npm install --save ansi-styles
  14 +```
  15 +
  16 +
  17 +## Usage
  18 +
  19 +```js
  20 +var ansi = require('ansi-styles');
  21 +
  22 +console.log(ansi.green.open + 'Hello world!' + ansi.green.close);
  23 +```
  24 +
  25 +
  26 +## API
  27 +
  28 +Each style has an `open` and `close` property.
  29 +
  30 +
  31 +## Styles
  32 +
  33 +### Modifiers
  34 +
  35 +- `reset`
  36 +- `bold`
  37 +- `dim`
  38 +- `italic` *(not widely supported)*
  39 +- `underline`
  40 +- `inverse`
  41 +- `hidden`
  42 +- `strikethrough` *(not widely supported)*
  43 +
  44 +### Colors
  45 +
  46 +- `black`
  47 +- `red`
  48 +- `green`
  49 +- `yellow`
  50 +- `blue`
  51 +- `magenta`
  52 +- `cyan`
  53 +- `white`
  54 +- `gray`
  55 +
  56 +### Background colors
  57 +
  58 +- `bgBlack`
  59 +- `bgRed`
  60 +- `bgGreen`
  61 +- `bgYellow`
  62 +- `bgBlue`
  63 +- `bgMagenta`
  64 +- `bgCyan`
  65 +- `bgWhite`
  66 +
  67 +
  68 +## Advanced usage
  69 +
  70 +By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
  71 +
  72 +- `ansi.modifiers`
  73 +- `ansi.colors`
  74 +- `ansi.bgColors`
  75 +
  76 +
  77 +###### Example
  78 +
  79 +```js
  80 +console.log(ansi.colors.green.open);
  81 +```
  82 +
  83 +
  84 +## License
  85 +
  86 +MIT © [Sindre Sorhus](http://sindresorhus.com)
images/node_modules/archy/.travis.yml 0 → 100644
  1 +language: node_js
  2 +node_js:
  3 + - 0.6
  4 + - 0.8
images/node_modules/archy/LICENSE 0 → 100644
  1 +This software is released under the MIT license:
  2 +
  3 +Permission is hereby granted, free of charge, to any person obtaining a copy of
  4 +this software and associated documentation files (the "Software"), to deal in
  5 +the Software without restriction, including without limitation the rights to
  6 +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  7 +the Software, and to permit persons to whom the Software is furnished to do so,
  8 +subject to the following conditions:
  9 +
  10 +The above copyright notice and this permission notice shall be included in all
  11 +copies or substantial portions of the Software.
  12 +
  13 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  15 +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  16 +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  17 +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  18 +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
images/node_modules/archy/examples/beep.js 0 → 100644
  1 +var archy = require('../');
  2 +var s = archy({
  3 + label : 'beep',
  4 + nodes : [
  5 + 'ity',
  6 + {
  7 + label : 'boop',
  8 + nodes : [
  9 + {
  10 + label : 'o_O',
  11 + nodes : [
  12 + {
  13 + label : 'oh',
  14 + nodes : [ 'hello', 'puny' ]
  15 + },
  16 + 'human'
  17 + ]
  18 + },
  19 + 'party\ntime!'
  20 + ]
  21 + }
  22 + ]
  23 +});
  24 +console.log(s);
images/node_modules/archy/examples/multi_line.js 0 → 100644
  1 +var archy = require('../');
  2 +
  3 +var s = archy({
  4 + label : 'beep\none\ntwo',
  5 + nodes : [
  6 + 'ity',
  7 + {
  8 + label : 'boop',
  9 + nodes : [
  10 + {
  11 + label : 'o_O\nwheee',
  12 + nodes : [
  13 + {
  14 + label : 'oh',
  15 + nodes : [ 'hello', 'puny\nmeat' ]
  16 + },
  17 + 'creature'
  18 + ]
  19 + },
  20 + 'party\ntime!'
  21 + ]
  22 + }
  23 + ]
  24 +});
  25 +console.log(s);
images/node_modules/archy/index.js 0 → 100644
  1 +module.exports = function archy (obj, prefix, opts) {
  2 + if (prefix === undefined) prefix = '';
  3 + if (!opts) opts = {};
  4 + var chr = function (s) {
  5 + var chars = {
  6 + '│' : '|',
  7 + '└' : '`',
  8 + '├' : '+',
  9 + '─' : '-',
  10 + '┬' : '-'
  11 + };
  12 + return opts.unicode === false ? chars[s] : s;
  13 + };
  14 +
  15 + if (typeof obj === 'string') obj = { label : obj };
  16 +
  17 + var nodes = obj.nodes || [];
  18 + var lines = (obj.label || '').split('\n');
  19 + var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' ';
  20 +
  21 + return prefix
  22 + + lines.join(splitter) + '\n'
  23 + + nodes.map(function (node, ix) {
  24 + var last = ix === nodes.length - 1;
  25 + var more = node.nodes && node.nodes.length;
  26 + var prefix_ = prefix + (last ? ' ' : chr('│')) + ' ';
  27 +
  28 + return prefix
  29 + + (last ? chr('└') : chr('├')) + chr('─')
  30 + + (more ? chr('┬') : chr('─')) + ' '
  31 + + archy(node, prefix_, opts).slice(prefix.length + 2)
  32 + ;
  33 + }).join('')
  34 + ;
  35 +};
images/node_modules/archy/package.json 0 → 100644
  1 +{
  2 + "_args": [
  3 + [
  4 + "archy@^1.0.0",
  5 + "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/gulp"
  6 + ]
  7 + ],
  8 + "_from": "archy@>=1.0.0 <2.0.0",
  9 + "_id": "archy@1.0.0",
  10 + "_inCache": true,
  11 + "_installable": true,
  12 + "_location": "/archy",
  13 + "_npmUser": {
  14 + "email": "mail@substack.net",
  15 + "name": "substack"
  16 + },
  17 + "_npmVersion": "1.4.25",
  18 + "_phantomChildren": {},
  19 + "_requested": {
  20 + "name": "archy",
  21 + "raw": "archy@^1.0.0",
  22 + "rawSpec": "^1.0.0",
  23 + "scope": null,
  24 + "spec": ">=1.0.0 <2.0.0",
  25 + "type": "range"
  26 + },
  27 + "_requiredBy": [
  28 + "/gulp"
  29 + ],
  30 + "_resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
  31 + "_shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
  32 + "_shrinkwrap": null,
  33 + "_spec": "archy@^1.0.0",
  34 + "_where": "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/gulp",
  35 + "author": {
  36 + "email": "mail@substack.net",
  37 + "name": "James Halliday",
  38 + "url": "http://substack.net"
  39 + },
  40 + "bugs": {
  41 + "url": "https://github.com/substack/node-archy/issues"
  42 + },
  43 + "dependencies": {},
  44 + "description": "render nested hierarchies `npm ls` style with unicode pipes",
  45 + "devDependencies": {
  46 + "tap": "~0.3.3",
  47 + "tape": "~0.1.1"
  48 + },
  49 + "directories": {},
  50 + "dist": {
  51 + "shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
  52 + "tarball": "http://registry.npmjs.org/archy/-/archy-1.0.0.tgz"
  53 + },
  54 + "gitHead": "30223c16191e877bf027b15b12daf077b9b55b84",
  55 + "homepage": "https://github.com/substack/node-archy",
  56 + "keywords": [
  57 + "hierarchy",
  58 + "npm ls",
  59 + "pretty",
  60 + "print",
  61 + "unicode"
  62 + ],
  63 + "license": "MIT",
  64 + "main": "index.js",
  65 + "maintainers": [
  66 + {
  67 + "name": "substack",
  68 + "email": "mail@substack.net"
  69 + }
  70 + ],
  71 + "name": "archy",
  72 + "optionalDependencies": {},
  73 + "readme": "ERROR: No README data found!",
  74 + "repository": {
  75 + "type": "git",
  76 + "url": "git+ssh://git@github.com/substack/node-archy.git"
  77 + },
  78 + "scripts": {
  79 + "test": "tap test"
  80 + },
  81 + "testling": {
  82 + "browsers": {
  83 + "chrome": [
  84 + "20.0"
  85 + ],
  86 + "firefox": [
  87 + "10.0",
  88 + "15.0"
  89 + ],
  90 + "iexplore": [
  91 + "6.0",
  92 + "7.0",
  93 + "8.0",
  94 + "9.0"
  95 + ],
  96 + "opera": [
  97 + "12.0"
  98 + ],
  99 + "safari": [
  100 + "5.1"
  101 + ]
  102 + },
  103 + "files": "test/*.js"
  104 + },
  105 + "version": "1.0.0"
  106 +}
images/node_modules/archy/readme.markdown 0 → 100644
  1 +# archy
  2 +
  3 +Render nested hierarchies `npm ls` style with unicode pipes.
  4 +
  5 +[![browser support](http://ci.testling.com/substack/node-archy.png)](http://ci.testling.com/substack/node-archy)
  6 +
  7 +[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy)
  8 +
  9 +# example
  10 +
  11 +``` js
  12 +var archy = require('archy');
  13 +var s = archy({
  14 + label : 'beep',
  15 + nodes : [
  16 + 'ity',
  17 + {
  18 + label : 'boop',
  19 + nodes : [
  20 + {
  21 + label : 'o_O',
  22 + nodes : [
  23 + {
  24 + label : 'oh',
  25 + nodes : [ 'hello', 'puny' ]
  26 + },
  27 + 'human'
  28 + ]
  29 + },
  30 + 'party\ntime!'
  31 + ]
  32 + }
  33 + ]
  34 +});
  35 +console.log(s);
  36 +```
  37 +
  38 +output
  39 +
  40 +```
  41 +beep
  42 +├── ity
  43 +└─┬ boop
  44 + ├─┬ o_O
  45 + │ ├─┬ oh
  46 + │ │ ├── hello
  47 + │ │ └── puny
  48 + │ └── human
  49 + └── party
  50 + time!
  51 +```
  52 +
  53 +# methods
  54 +
  55 +var archy = require('archy')
  56 +
  57 +## archy(obj, prefix='', opts={})
  58 +
  59 +Return a string representation of `obj` with unicode pipe characters like how
  60 +`npm ls` looks.
  61 +
  62 +`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields.
  63 +`'label'` is a string of text to display at a node level and `'nodes'` is an
  64 +array of the descendents of the current node.
  65 +
  66 +If a node is a string, that string will be used as the `'label'` and an empty
  67 +array of `'nodes'` will be used.
  68 +
  69 +`prefix` gets prepended to all the lines and is used by the algorithm to
  70 +recursively update.
  71 +
  72 +If `'label'` has newlines they will be indented at the present indentation level
  73 +with the current prefix.
  74 +
  75 +To disable unicode results in favor of all-ansi output set `opts.unicode` to
  76 +`false`.
  77 +
  78 +# install
  79 +
  80 +With [npm](http://npmjs.org) do:
  81 +
  82 +```
  83 +npm install archy
  84 +```
  85 +
  86 +# license
  87 +
  88 +MIT
images/node_modules/archy/test/beep.js 0 → 100644
  1 +var test = require('tape');
  2 +var archy = require('../');
  3 +
  4 +test('beep', function (t) {
  5 + var s = archy({
  6 + label : 'beep',
  7 + nodes : [
  8 + 'ity',
  9 + {
  10 + label : 'boop',
  11 + nodes : [
  12 + {
  13 + label : 'o_O',
  14 + nodes : [
  15 + {
  16 + label : 'oh',
  17 + nodes : [ 'hello', 'puny' ]
  18 + },
  19 + 'human'
  20 + ]
  21 + },
  22 + 'party!'
  23 + ]
  24 + }
  25 + ]
  26 + });
  27 + t.equal(s, [
  28 + 'beep',
  29 + '├── ity',
  30 + '└─┬ boop',
  31 + ' ├─┬ o_O',
  32 + ' │ ├─┬ oh',
  33 + ' │ │ ├── hello',
  34 + ' │ │ └── puny',
  35 + ' │ └── human',
  36 + ' └── party!',
  37 + ''
  38 + ].join('\n'));
  39 + t.end();
  40 +});
images/node_modules/archy/test/multi_line.js 0 → 100644
  1 +var test = require('tape');
  2 +var archy = require('../');
  3 +
  4 +test('multi-line', function (t) {
  5 + var s = archy({
  6 + label : 'beep\none\ntwo',
  7 + nodes : [
  8 + 'ity',
  9 + {
  10 + label : 'boop',
  11 + nodes : [
  12 + {
  13 + label : 'o_O\nwheee',
  14 + nodes : [
  15 + {
  16 + label : 'oh',
  17 + nodes : [ 'hello', 'puny\nmeat' ]
  18 + },
  19 + 'creature'
  20 + ]
  21 + },
  22 + 'party\ntime!'
  23 + ]
  24 + }
  25 + ]
  26 + });
  27 + t.equal(s, [
  28 + 'beep',
  29 + '│ one',
  30 + '│ two',
  31 + '├── ity',
  32 + '└─┬ boop',
  33 + ' ├─┬ o_O',
  34 + ' │ │ wheee',
  35 + ' │ ├─┬ oh',
  36 + ' │ │ ├── hello',
  37 + ' │ │ └── puny',
  38 + ' │ │ meat',
  39 + ' │ └── creature',
  40 + ' └── party',
  41 + ' time!',
  42 + ''
  43 + ].join('\n'));
  44 + t.end();
  45 +});
images/node_modules/archy/test/non_unicode.js 0 → 100644
  1 +var test = require('tape');
  2 +var archy = require('../');
  3 +
  4 +test('beep', function (t) {
  5 + var s = archy({
  6 + label : 'beep',
  7 + nodes : [
  8 + 'ity',
  9 + {
  10 + label : 'boop',
  11 + nodes : [
  12 + {
  13 + label : 'o_O',
  14 + nodes : [
  15 + {
  16 + label : 'oh',
  17 + nodes : [ 'hello', 'puny' ]
  18 + },
  19 + 'human'
  20 + ]
  21 + },
  22 + 'party!'
  23 + ]
  24 + }
  25 + ]
  26 + }, '', { unicode : false });
  27 + t.equal(s, [
  28 + 'beep',
  29 + '+-- ity',
  30 + '`-- boop',
  31 + ' +-- o_O',
  32 + ' | +-- oh',
  33 + ' | | +-- hello',
  34 + ' | | `-- puny',
  35 + ' | `-- human',
  36 + ' `-- party!',
  37 + ''
  38 + ].join('\n'));
  39 + t.end();
  40 +});
images/node_modules/argparse/HISTORY.md 0 → 100644
  1 +0.1.16 / 2013-12-01
  2 +-------------------
  3 +
  4 +* Maintenance release. Updated dependencies and docs.
  5 +
  6 +
  7 +0.1.15 / 2013-05-13
  8 +-------------------
  9 +
  10 +* Fixed #55, @trebor89
  11 +
  12 +
  13 +0.1.14 / 2013-05-12
  14 +-------------------
  15 +
  16 +* Fixed #62, @maxtaco
  17 +
  18 +
  19 +0.1.13 / 2013-04-08
  20 +-------------------
  21 +
  22 +* Added `.npmignore` to reduce package size
  23 +
  24 +
  25 +0.1.12 / 2013-02-10
  26 +-------------------
  27 +
  28 +* Fixed conflictHandler (#46), @hpaulj
  29 +
  30 +
  31 +0.1.11 / 2013-02-07
  32 +-------------------
  33 +
  34 +* Multiple bugfixes, @hpaulj
  35 +* Added 70+ tests (ported from python), @hpaulj
  36 +* Added conflictHandler, @applepicke
  37 +* Added fromfilePrefixChar, @hpaulj
  38 +
  39 +
  40 +0.1.10 / 2012-12-30
  41 +-------------------
  42 +
  43 +* Added [mutual exclusion](http://docs.python.org/dev/library/argparse.html#mutual-exclusion)
  44 + support, thanks to @hpaulj
  45 +* Fixed options check for `storeConst` & `appendConst` actions, thanks to @hpaulj
  46 +
  47 +
  48 +0.1.9 / 2012-12-27
  49 +------------------
  50 +
  51 +* Fixed option dest interferens with other options (issue #23), thanks to @hpaulj
  52 +* Fixed default value behavior with `*` positionals, thanks to @hpaulj
  53 +* Improve `getDefault()` behavior, thanks to @hpaulj
  54 +* Imrove negative argument parsing, thanks to @hpaulj
  55 +
  56 +
  57 +0.1.8 / 2012-12-01
  58 +------------------
  59 +
  60 +* Fixed parser parents (issue #19), thanks to @hpaulj
  61 +* Fixed negative argument parse (issue #20), thanks to @hpaulj
  62 +
  63 +
  64 +0.1.7 / 2012-10-14
  65 +------------------
  66 +
  67 +* Fixed 'choices' argument parse (issue #16)
  68 +* Fixed stderr output (issue #15)
  69 +
  70 +
  71 +0.1.6 / 2012-09-09
  72 +------------------
  73 +
  74 +* Fixed check for conflict of options (thanks to @tomxtobin)
  75 +
  76 +
  77 +0.1.5 / 2012-09-03
  78 +------------------
  79 +
  80 +* Fix parser #setDefaults method (thanks to @tomxtobin)
  81 +
  82 +
  83 +0.1.4 / 2012-07-30
  84 +------------------
  85 +
  86 +* Fixed pseudo-argument support (thanks to @CGamesPlay)
  87 +* Fixed addHelp default (should be true), if not set (thanks to @benblank)
  88 +
  89 +
  90 +0.1.3 / 2012-06-27
  91 +------------------
  92 +
  93 +* Fixed formatter api name: Formatter -> HelpFormatter
  94 +
  95 +
  96 +0.1.2 / 2012-05-29
  97 +------------------
  98 +
  99 +* Added basic tests
  100 +* Removed excess whitespace in help
  101 +* Fixed error reporting, when parcer with subcommands
  102 + called with empty arguments
  103 +
  104 +
  105 +0.1.1 / 2012-05-23
  106 +------------------
  107 +
  108 +* Fixed line wrapping in help formatter
  109 +* Added better error reporting on invalid arguments
  110 +
  111 +
  112 +0.1.0 / 2012-05-16
  113 +------------------
  114 +
  115 +* First release.
images/node_modules/argparse/LICENSE 0 → 100644
  1 +(The MIT License)
  2 +
  3 +Copyright (C) 2012 by Vitaly Puzrin
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining a copy
  6 +of this software and associated documentation files (the "Software"), to deal
  7 +in the Software without restriction, including without limitation the rights
  8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9 +copies of the Software, and to permit persons to whom the Software is
  10 +furnished to do so, subject to the following conditions:
  11 +
  12 +The above copyright notice and this permission notice shall be included in
  13 +all copies or substantial portions of the Software.
  14 +
  15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21 +THE SOFTWARE.
images/node_modules/argparse/README.md 0 → 100644
  1 +argparse
  2 +========
  3 +
  4 +[![Build Status](https://secure.travis-ci.org/nodeca/argparse.png?branch=master)](http://travis-ci.org/nodeca/argparse)
  5 +
  6 +CLI arguments parser for node.js. Javascript port of python's
  7 +[argparse](http://docs.python.org/dev/library/argparse.html) module
  8 +(original version 3.2). That's a full port, except some very rare options,
  9 +recorded in issue tracker.
  10 +
  11 +**NB.** Method names changed to camelCase. See [generated docs](http://nodeca.github.com/argparse/).
  12 +
  13 +
  14 +Example
  15 +=======
  16 +
  17 +test.js file:
  18 +
  19 +```javascript
  20 +#!/usr/bin/env node
  21 +'use strict';
  22 +
  23 +var ArgumentParser = require('../lib/argparse').ArgumentParser;
  24 +var parser = new ArgumentParser({
  25 + version: '0.0.1',
  26 + addHelp:true,
  27 + description: 'Argparse example'
  28 +});
  29 +parser.addArgument(
  30 + [ '-f', '--foo' ],
  31 + {
  32 + help: 'foo bar'
  33 + }
  34 +);
  35 +parser.addArgument(
  36 + [ '-b', '--bar' ],
  37 + {
  38 + help: 'bar foo'
  39 + }
  40 +);
  41 +var args = parser.parseArgs();
  42 +console.dir(args);
  43 +```
  44 +
  45 +Display help:
  46 +
  47 +```
  48 +$ ./test.js -h
  49 +usage: example.js [-h] [-v] [-f FOO] [-b BAR]
  50 +
  51 +Argparse example
  52 +
  53 +Optional arguments:
  54 + -h, --help Show this help message and exit.
  55 + -v, --version Show program's version number and exit.
  56 + -f FOO, --foo FOO foo bar
  57 + -b BAR, --bar BAR bar foo
  58 +```
  59 +
  60 +Parse arguments:
  61 +
  62 +```
  63 +$ ./test.js -f=3 --bar=4
  64 +{ foo: '3', bar: '4' }
  65 +```
  66 +
  67 +More [examples](https://github.com/nodeca/argparse/tree/master/examples).
  68 +
  69 +
  70 +ArgumentParser objects
  71 +======================
  72 +
  73 +```
  74 +new ArgumentParser({paramters hash});
  75 +```
  76 +
  77 +Creates a new ArgumentParser object.
  78 +
  79 +**Supported params:**
  80 +
  81 +- ```description``` - Text to display before the argument help.
  82 +- ```epilog``` - Text to display after the argument help.
  83 +- ```addHelp``` - Add a -h/–help option to the parser. (default: true)
  84 +- ```argumentDefault``` - Set the global default value for arguments. (default: null)
  85 +- ```parents``` - A list of ArgumentParser objects whose arguments should also be included.
  86 +- ```prefixChars``` - The set of characters that prefix optional arguments. (default: ‘-‘)
  87 +- ```formatterClass``` - A class for customizing the help output.
  88 +- ```prog``` - The name of the program (default: `path.basename(process.argv[1])`)
  89 +- ```usage``` - The string describing the program usage (default: generated)
  90 +- ```conflictHandler``` - Usually unnecessary, defines strategy for resolving conflicting optionals.
  91 +
  92 +**Not supportied yet**
  93 +
  94 +- ```fromfilePrefixChars``` - The set of characters that prefix files from which additional arguments should be read.
  95 +
  96 +
  97 +Details in [original ArgumentParser guide](http://docs.python.org/dev/library/argparse.html#argumentparser-objects)
  98 +
  99 +
  100 +addArgument() method
  101 +====================
  102 +
  103 +```
  104 +ArgumentParser.addArgument([names or flags], {options})
  105 +```
  106 +
  107 +Defines how a single command-line argument should be parsed.
  108 +
  109 +- ```name or flags``` - Either a name or a list of option strings, e.g. foo or -f, --foo.
  110 +
  111 +Options:
  112 +
  113 +- ```action``` - The basic type of action to be taken when this argument is encountered at the command line.
  114 +- ```nargs```- The number of command-line arguments that should be consumed.
  115 +- ```constant``` - A constant value required by some action and nargs selections.
  116 +- ```defaultValue``` - The value produced if the argument is absent from the command line.
  117 +- ```type``` - The type to which the command-line argument should be converted.
  118 +- ```choices``` - A container of the allowable values for the argument.
  119 +- ```required``` - Whether or not the command-line option may be omitted (optionals only).
  120 +- ```help``` - A brief description of what the argument does.
  121 +- ```metavar``` - A name for the argument in usage messages.
  122 +- ```dest``` - The name of the attribute to be added to the object returned by parseArgs().
  123 +
  124 +Details in [original add_argument guide](http://docs.python.org/dev/library/argparse.html#the-add-argument-method)
  125 +
  126 +
  127 +Action (some details)
  128 +================
  129 +
  130 +ArgumentParser objects associate command-line arguments with actions.
  131 +These actions can do just about anything with the command-line arguments associated
  132 +with them, though most actions simply add an attribute to the object returned by
  133 +parseArgs(). The action keyword argument specifies how the command-line arguments
  134 +should be handled. The supported actions are:
  135 +
  136 +- ```store``` - Just stores the argument’s value. This is the default action.
  137 +- ```storeConst``` - Stores value, specified by the const keyword argument.
  138 + (Note that the const keyword argument defaults to the rather unhelpful None.)
  139 + The 'storeConst' action is most commonly used with optional arguments, that
  140 + specify some sort of flag.
  141 +- ```storeTrue``` and ```storeFalse``` - Stores values True and False
  142 + respectively. These are special cases of 'storeConst'.
  143 +- ```append``` - Stores a list, and appends each argument value to the list.
  144 + This is useful to allow an option to be specified multiple times.
  145 +- ```appendConst``` - Stores a list, and appends value, specified by the
  146 + const keyword argument to the list. (Note, that the const keyword argument defaults
  147 + is None.) The 'appendConst' action is typically used when multiple arguments need
  148 + to store constants to the same list.
  149 +- ```count``` - Counts the number of times a keyword argument occurs. For example,
  150 + used for increasing verbosity levels.
  151 +- ```help``` - Prints a complete help message for all the options in the current
  152 + parser and then exits. By default a help action is automatically added to the parser.
  153 + See ArgumentParser for details of how the output is created.
  154 +- ```version``` - Prints version information and exit. Expects a `version=`
  155 + keyword argument in the addArgument() call.
  156 +
  157 +Details in [original action guide](http://docs.python.org/dev/library/argparse.html#action)
  158 +
  159 +
  160 +Sub-commands
  161 +============
  162 +
  163 +ArgumentParser.addSubparsers()
  164 +
  165 +Many programs split their functionality into a number of sub-commands, for
  166 +example, the svn program can invoke sub-commands like `svn checkout`, `svn update`,
  167 +and `svn commit`. Splitting up functionality this way can be a particularly good
  168 +idea when a program performs several different functions which require different
  169 +kinds of command-line arguments. `ArgumentParser` supports creation of such
  170 +sub-commands with `addSubparsers()` method. The `addSubparsers()` method is
  171 +normally called with no arguments and returns an special action object.
  172 +This object has a single method `addParser()`, which takes a command name and
  173 +any `ArgumentParser` constructor arguments, and returns an `ArgumentParser` object
  174 +that can be modified as usual.
  175 +
  176 +Example:
  177 +
  178 +sub_commands.js
  179 +```javascript
  180 +#!/usr/bin/env node
  181 +'use strict';
  182 +
  183 +var ArgumentParser = require('../lib/argparse').ArgumentParser;
  184 +var parser = new ArgumentParser({
  185 + version: '0.0.1',
  186 + addHelp:true,
  187 + description: 'Argparse examples: sub-commands',
  188 +});
  189 +
  190 +var subparsers = parser.addSubparsers({
  191 + title:'subcommands',
  192 + dest:"subcommand_name"
  193 +});
  194 +
  195 +var bar = subparsers.addParser('c1', {addHelp:true});
  196 +bar.addArgument(
  197 + [ '-f', '--foo' ],
  198 + {
  199 + action: 'store',
  200 + help: 'foo3 bar3'
  201 + }
  202 +);
  203 +var bar = subparsers.addParser(
  204 + 'c2',
  205 + {aliases:['co'], addHelp:true}
  206 +);
  207 +bar.addArgument(
  208 + [ '-b', '--bar' ],
  209 + {
  210 + action: 'store',
  211 + type: 'int',
  212 + help: 'foo3 bar3'
  213 + }
  214 +);
  215 +
  216 +var args = parser.parseArgs();
  217 +console.dir(args);
  218 +
  219 +```
  220 +
  221 +Details in [original sub-commands guide](http://docs.python.org/dev/library/argparse.html#sub-commands)
  222 +
  223 +
  224 +Contributors
  225 +============
  226 +
  227 +- [Eugene Shkuropat](https://github.com/shkuropat)
  228 +- [Paul Jacobson](https://github.com/hpaulj)
  229 +
  230 +[others](https://github.com/nodeca/argparse/graphs/contributors)
  231 +
  232 +License
  233 +=======
  234 +
  235 +Copyright (c) 2012 [Vitaly Puzrin](https://github.com/puzrin).
  236 +Released under the MIT license. See
  237 +[LICENSE](https://github.com/nodeca/argparse/blob/master/LICENSE) for details.
  238 +
  239 +