');
37 | if (typeof (IcarusThemeSettings) !== 'undefined' &&
38 | typeof (IcarusThemeSettings.article) !== 'undefined' &&
39 | typeof (IcarusThemeSettings.article.highlight) !== 'undefined') {
40 | if (typeof (ClipboardJS) !== 'undefined' && IcarusThemeSettings.article.highlight.clipboard) {
41 | $('figure.highlight').each(function () {
42 | var id = 'code-' + Date.now() + (Math.random() * 1000 | 0);
43 | var button = '
';
44 | $(this).attr('id', id);
45 | if ($(this).find('figcaption').length) {
46 | $(this).find('figcaption').prepend(button);
47 | } else {
48 | $(this).prepend('
');
49 | }
50 | });
51 | new ClipboardJS('.highlight .copy');
52 | }
53 | var fold = IcarusThemeSettings.article.highlight.fold;
54 | if (fold.trim()) {
55 | var button = '
';
56 | $('figure.highlight').each(function () {
57 | if ($(this).find('figcaption').length) {
58 | $(this).find('figcaption').prepend(button);
59 | } else {
60 | $(this).prepend('
');
61 | }
62 | });
63 |
64 | function toggleFold(codeBlock, isFolded) {
65 | var $toggle = $(codeBlock).find('.fold i');
66 | !isFolded ? $(codeBlock).removeClass('folded') : $(codeBlock).addClass('folded');
67 | !isFolded ? $toggle.removeClass('fa-angle-right') : $toggle.removeClass('fa-angle-down');
68 | !isFolded ? $toggle.addClass('fa-angle-down') : $toggle.addClass('fa-angle-right');
69 | }
70 |
71 | $('figure.highlight').each(function () {
72 | toggleFold(this, fold === 'folded');
73 | });
74 | $('figure.highlight figcaption .fold').click(function () {
75 | var $code = $(this).closest('figure.highlight');
76 | toggleFold($code.eq(0), !$code.hasClass('folded'));
77 | });
78 | }
79 | }
80 |
81 | var $toc = $('#toc');
82 | if ($toc.length > 0) {
83 | var $mask = $('
');
84 | $mask.attr('id', 'toc-mask');
85 |
86 | $('body').append($mask);
87 |
88 | function toggleToc() {
89 | $toc.toggleClass('is-active');
90 | $mask.toggleClass('is-active');
91 | }
92 |
93 | $toc.on('click', toggleToc);
94 | $mask.on('click', toggleToc);
95 | $('.navbar-main .catalogue').on('click', toggleToc);
96 | }
97 | })(jQuery);
98 |
--------------------------------------------------------------------------------
/sheet_links.ftl:
--------------------------------------------------------------------------------
1 | <#include "layout/layout.ftl">
2 | <#include "layout/comment/comment.ftl">
3 | <@layout title="${sheet.title!} | ${blog_title!} " canonical="${links_url!}">
4 |
41 |
82 |
83 |
106 |
107 |
108 |
109 |
评论
110 | <@comment post=sheet type="sheet" />
111 |
112 |
113 |
114 | @layout>
115 |
--------------------------------------------------------------------------------
/source/assets/css/fonts/linecons/css/linecons.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'linecons';
3 | src: url('../font/linecons.eot?24293614');
4 | src: url('../font/linecons.eot?24293614#iefix') format('embedded-opentype'),
5 | url('../font/linecons.woff?24293614') format('woff'),
6 | url('../font/linecons.ttf?24293614') format('truetype'),
7 | url('../font/linecons.svg?24293614#linecons') format('svg');
8 | font-weight: normal;
9 | font-style: normal;
10 | }
11 | /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
12 | /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
13 | /*
14 | @media screen and (-webkit-min-device-pixel-ratio:0) {
15 | @font-face {
16 | font-family: 'linecons';
17 | src: url('../font/linecons.svg?24293614#linecons') format('svg');
18 | }
19 | }
20 | */
21 |
22 | [class^="linecons-"]:before, [class*=" linecons-"]:before {
23 | font-family: "linecons";
24 | font-style: normal;
25 | font-weight: normal;
26 | speak: none;
27 |
28 | display: inline-block;
29 | text-decoration: inherit;
30 | width: 1em;
31 | margin-right: .2em;
32 | text-align: center;
33 | /* opacity: .8; */
34 |
35 | /* For safety - reset parent styles, that can break glyph codes*/
36 | font-variant: normal;
37 | text-transform: none;
38 |
39 | /* fix buttons height, for twitter bootstrap */
40 | line-height: 1em;
41 |
42 | /* Animation center compensation - margins should be symmetric */
43 | /* remove if not needed */
44 | margin-left: .2em;
45 |
46 | /* you can be more comfortable with increased icons size */
47 | /* font-size: 120%; */
48 |
49 | /* Uncomment for 3D effect */
50 | /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
51 | }
52 |
53 | .linecons-music:before { content: '\e800'; } /* '' */
54 | .linecons-search:before { content: '\e801'; } /* '' */
55 | .linecons-mail:before { content: '\e802'; } /* '' */
56 | .linecons-heart:before { content: '\e803'; } /* '' */
57 | .linecons-star:before { content: '\e804'; } /* '' */
58 | .linecons-user:before { content: '\e805'; } /* '' */
59 | .linecons-videocam:before { content: '\e806'; } /* '' */
60 | .linecons-camera:before { content: '\e807'; } /* '' */
61 | .linecons-photo:before { content: '\e808'; } /* '' */
62 | .linecons-attach:before { content: '\e809'; } /* '' */
63 | .linecons-lock:before { content: '\e80a'; } /* '' */
64 | .linecons-eye:before { content: '\e80b'; } /* '' */
65 | .linecons-tag:before { content: '\e80c'; } /* '' */
66 | .linecons-thumbs-up:before { content: '\e80d'; } /* '' */
67 | .linecons-pencil:before { content: '\e80e'; } /* '' */
68 | .linecons-comment:before { content: '\e80f'; } /* '' */
69 | .linecons-location:before { content: '\e810'; } /* '' */
70 | .linecons-cup:before { content: '\e811'; } /* '' */
71 | .linecons-trash:before { content: '\e812'; } /* '' */
72 | .linecons-doc:before { content: '\e813'; } /* '' */
73 | .linecons-note:before { content: '\e814'; } /* '' */
74 | .linecons-cog:before { content: '\e815'; } /* '' */
75 | .linecons-params:before { content: '\e816'; } /* '' */
76 | .linecons-calendar:before { content: '\e817'; } /* '' */
77 | .linecons-sound:before { content: '\e818'; } /* '' */
78 | .linecons-clock:before { content: '\e819'; } /* '' */
79 | .linecons-lightbulb:before { content: '\e81a'; } /* '' */
80 | .linecons-tv:before { content: '\e81b'; } /* '' */
81 | .linecons-desktop:before { content: '\e81c'; } /* '' */
82 | .linecons-mobile:before { content: '\e81d'; } /* '' */
83 | .linecons-cd:before { content: '\e81e'; } /* '' */
84 | .linecons-inbox:before { content: '\e81f'; } /* '' */
85 | .linecons-globe:before { content: '\e820'; } /* '' */
86 | .linecons-cloud:before { content: '\e821'; } /* '' */
87 | .linecons-paper-plane:before { content: '\e822'; } /* '' */
88 | .linecons-fire:before { content: '\e823'; } /* '' */
89 | .linecons-graduation-cap:before { content: '\e824'; } /* '' */
90 | .linecons-megaphone:before { content: '\e825'; } /* '' */
91 | .linecons-database:before { content: '\e826'; } /* '' */
92 | .linecons-key:before { content: '\e827'; } /* '' */
93 | .linecons-beaker:before { content: '\e828'; } /* '' */
94 | .linecons-truck:before { content: '\e829'; } /* '' */
95 | .linecons-money:before { content: '\e82a'; } /* '' */
96 | .linecons-food:before { content: '\e82b'; } /* '' */
97 | .linecons-shop:before { content: '\e82c'; } /* '' */
98 | .linecons-diamond:before { content: '\e82d'; } /* '' */
99 | .linecons-t-shirt:before { content: '\e82e'; } /* '' */
100 | .linecons-wallet:before { content: '\e82f'; } /* '' */
--------------------------------------------------------------------------------
/source/assets/css/fonts/meteocons/css/meteocons.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'meteocons';
3 | src: url('../font/meteocons.eot?24967826');
4 | src: url('../font/meteocons.eot?24967826#iefix') format('embedded-opentype'),
5 | url('../font/meteocons.woff?24967826') format('woff'),
6 | url('../font/meteocons.ttf?24967826') format('truetype'),
7 | url('../font/meteocons.svg?24967826#meteocons') format('svg');
8 | font-weight: normal;
9 | font-style: normal;
10 | }
11 | /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
12 | /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
13 | /*
14 | @media screen and (-webkit-min-device-pixel-ratio:0) {
15 | @font-face {
16 | font-family: 'meteocons';
17 | src: url('../font/meteocons.svg?24967826#meteocons') format('svg');
18 | }
19 | }
20 | */
21 |
22 | [class^="meteocons-"]:before, [class*=" meteocons-"]:before {
23 | font-family: "meteocons";
24 | font-style: normal;
25 | font-weight: normal;
26 | speak: none;
27 |
28 | display: inline-block;
29 | text-decoration: inherit;
30 | width: 1em;
31 | margin-right: .2em;
32 | text-align: center;
33 | /* opacity: .8; */
34 |
35 | /* For safety - reset parent styles, that can break glyph codes*/
36 | font-variant: normal;
37 | text-transform: none;
38 |
39 | /* fix buttons height, for twitter bootstrap */
40 | line-height: 1em;
41 |
42 | /* Animation center compensation - margins should be symmetric */
43 | /* remove if not needed */
44 | margin-left: .2em;
45 |
46 | /* you can be more comfortable with increased icons size */
47 | /* font-size: 120%; */
48 |
49 | /* Uncomment for 3D effect */
50 | /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
51 | }
52 |
53 | .meteocons-windy-rain-inv:before { content: '\e800'; } /* '' */
54 | .meteocons-snow-inv:before { content: '\e801'; } /* '' */
55 | .meteocons-snow-heavy-inv:before { content: '\e802'; } /* '' */
56 | .meteocons-hail-inv:before { content: '\e803'; } /* '' */
57 | .meteocons-clouds-inv:before { content: '\e804'; } /* '' */
58 | .meteocons-clouds-flash-inv:before { content: '\e805'; } /* '' */
59 | .meteocons-temperature:before { content: '\e806'; } /* '' */
60 | .meteocons-compass:before { content: '\e807'; } /* '' */
61 | .meteocons-na:before { content: '\e808'; } /* '' */
62 | .meteocons-celcius:before { content: '\e809'; } /* '' */
63 | .meteocons-fahrenheit:before { content: '\e80a'; } /* '' */
64 | .meteocons-clouds-flash-alt:before { content: '\e80b'; } /* '' */
65 | .meteocons-sun-inv:before { content: '\e80c'; } /* '' */
66 | .meteocons-moon-inv:before { content: '\e80d'; } /* '' */
67 | .meteocons-cloud-sun-inv:before { content: '\e80e'; } /* '' */
68 | .meteocons-cloud-moon-inv:before { content: '\e80f'; } /* '' */
69 | .meteocons-cloud-inv:before { content: '\e810'; } /* '' */
70 | .meteocons-cloud-flash-inv:before { content: '\e811'; } /* '' */
71 | .meteocons-drizzle-inv:before { content: '\e812'; } /* '' */
72 | .meteocons-rain-inv:before { content: '\e813'; } /* '' */
73 | .meteocons-windy-inv:before { content: '\e814'; } /* '' */
74 | .meteocons-sunrise:before { content: '\e815'; } /* '' */
75 | .meteocons-sun:before { content: '\e816'; } /* '' */
76 | .meteocons-moon:before { content: '\e817'; } /* '' */
77 | .meteocons-eclipse:before { content: '\e818'; } /* '' */
78 | .meteocons-mist:before { content: '\e819'; } /* '' */
79 | .meteocons-wind:before { content: '\e81a'; } /* '' */
80 | .meteocons-snowflake:before { content: '\e81b'; } /* '' */
81 | .meteocons-cloud-sun:before { content: '\e81c'; } /* '' */
82 | .meteocons-cloud-moon:before { content: '\e81d'; } /* '' */
83 | .meteocons-fog-sun:before { content: '\e81e'; } /* '' */
84 | .meteocons-fog-moon:before { content: '\e81f'; } /* '' */
85 | .meteocons-fog-cloud:before { content: '\e820'; } /* '' */
86 | .meteocons-fog:before { content: '\e821'; } /* '' */
87 | .meteocons-cloud:before { content: '\e822'; } /* '' */
88 | .meteocons-cloud-flash:before { content: '\e823'; } /* '' */
89 | .meteocons-cloud-flash-alt:before { content: '\e824'; } /* '' */
90 | .meteocons-drizzle:before { content: '\e825'; } /* '' */
91 | .meteocons-rain:before { content: '\e826'; } /* '' */
92 | .meteocons-windy:before { content: '\e827'; } /* '' */
93 | .meteocons-windy-rain:before { content: '\e828'; } /* '' */
94 | .meteocons-snow:before { content: '\e829'; } /* '' */
95 | .meteocons-snow-alt:before { content: '\e82a'; } /* '' */
96 | .meteocons-snow-heavy:before { content: '\e82b'; } /* '' */
97 | .meteocons-hail:before { content: '\e82c'; } /* '' */
98 | .meteocons-clouds:before { content: '\e82d'; } /* '' */
99 | .meteocons-clouds-flash:before { content: '\e82e'; } /* '' */
--------------------------------------------------------------------------------
/layout/search/local.ftl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
11 | <#--
-->
25 |
46 |
67 |
68 |
69 |
70 |
71 |
79 |
--------------------------------------------------------------------------------
/source/assets/css/fonts/linecons/css/linecons-ie7-codes.css:
--------------------------------------------------------------------------------
1 |
2 | .linecons-music { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
3 | .linecons-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
4 | .linecons-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
5 | .linecons-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
6 | .linecons-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
7 | .linecons-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
8 | .linecons-videocam { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
9 | .linecons-camera { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
10 | .linecons-photo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
11 | .linecons-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
12 | .linecons-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
13 | .linecons-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
14 | .linecons-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
15 | .linecons-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
16 | .linecons-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
17 | .linecons-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
18 | .linecons-location { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
19 | .linecons-cup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
20 | .linecons-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
21 | .linecons-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
22 | .linecons-note { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
23 | .linecons-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
24 | .linecons-params { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
25 | .linecons-calendar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
26 | .linecons-sound { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
27 | .linecons-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
28 | .linecons-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
29 | .linecons-tv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
30 | .linecons-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
31 | .linecons-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
32 | .linecons-cd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
33 | .linecons-inbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
34 | .linecons-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
35 | .linecons-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
36 | .linecons-paper-plane { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
37 | .linecons-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
38 | .linecons-graduation-cap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
39 | .linecons-megaphone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
40 | .linecons-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
41 | .linecons-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
42 | .linecons-beaker { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
43 | .linecons-truck { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
44 | .linecons-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
45 | .linecons-food { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
46 | .linecons-shop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
47 | .linecons-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
48 | .linecons-t-shirt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
49 | .linecons-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
--------------------------------------------------------------------------------
/source/assets/css/fonts/meteocons/css/meteocons-ie7-codes.css:
--------------------------------------------------------------------------------
1 |
2 | .meteocons-windy-rain-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
3 | .meteocons-snow-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
4 | .meteocons-snow-heavy-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
5 | .meteocons-hail-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
6 | .meteocons-clouds-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
7 | .meteocons-clouds-flash-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
8 | .meteocons-temperature { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
9 | .meteocons-compass { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
10 | .meteocons-na { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
11 | .meteocons-celcius { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
12 | .meteocons-fahrenheit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
13 | .meteocons-clouds-flash-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
14 | .meteocons-sun-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
15 | .meteocons-moon-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
16 | .meteocons-cloud-sun-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
17 | .meteocons-cloud-moon-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
18 | .meteocons-cloud-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
19 | .meteocons-cloud-flash-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
20 | .meteocons-drizzle-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
21 | .meteocons-rain-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
22 | .meteocons-windy-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
23 | .meteocons-sunrise { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
24 | .meteocons-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
25 | .meteocons-moon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
26 | .meteocons-eclipse { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
27 | .meteocons-mist { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
28 | .meteocons-wind { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
29 | .meteocons-snowflake { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
30 | .meteocons-cloud-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
31 | .meteocons-cloud-moon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
32 | .meteocons-fog-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
33 | .meteocons-fog-moon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
34 | .meteocons-fog-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
35 | .meteocons-fog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
36 | .meteocons-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
37 | .meteocons-cloud-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
38 | .meteocons-cloud-flash-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
39 | .meteocons-drizzle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
40 | .meteocons-rain { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
41 | .meteocons-windy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
42 | .meteocons-windy-rain { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
43 | .meteocons-snow { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
44 | .meteocons-snow-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
45 | .meteocons-snow-heavy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
46 | .meteocons-hail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
47 | .meteocons-clouds { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
48 | .meteocons-clouds-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
--------------------------------------------------------------------------------
/source/assets/css/fonts/linecons/css/linecons-ie7.css:
--------------------------------------------------------------------------------
1 | [class^="linecons-"], [class*=" linecons-"] {
2 | font-family: 'linecons';
3 | font-style: normal;
4 | font-weight: normal;
5 |
6 | /* fix buttons height */
7 | line-height: 1em;
8 |
9 | /* you can be more comfortable with increased icons size */
10 | /* font-size: 120%; */
11 | }
12 |
13 | .linecons-music { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
14 | .linecons-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
15 | .linecons-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
16 | .linecons-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
17 | .linecons-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
18 | .linecons-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
19 | .linecons-videocam { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
20 | .linecons-camera { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
21 | .linecons-photo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
22 | .linecons-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
23 | .linecons-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
24 | .linecons-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
25 | .linecons-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
26 | .linecons-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
27 | .linecons-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
28 | .linecons-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
29 | .linecons-location { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
30 | .linecons-cup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
31 | .linecons-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
32 | .linecons-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
33 | .linecons-note { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
34 | .linecons-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
35 | .linecons-params { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
36 | .linecons-calendar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
37 | .linecons-sound { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
38 | .linecons-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
39 | .linecons-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
40 | .linecons-tv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
41 | .linecons-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
42 | .linecons-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
43 | .linecons-cd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
44 | .linecons-inbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
45 | .linecons-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
46 | .linecons-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
47 | .linecons-paper-plane { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
48 | .linecons-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
49 | .linecons-graduation-cap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
50 | .linecons-megaphone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
51 | .linecons-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
52 | .linecons-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
53 | .linecons-beaker { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
54 | .linecons-truck { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
55 | .linecons-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
56 | .linecons-food { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
57 | .linecons-shop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
58 | .linecons-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
59 | .linecons-t-shirt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
60 | .linecons-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
--------------------------------------------------------------------------------
/source/js/back-to-top.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function () {
2 | var $button = $('#back-to-top');
3 | var $footer = $('footer.footer');
4 | var $mainColumn = $('.column-main');
5 | var $leftSidebar = $('.column-left');
6 | var $rightSidebar = $('.column-right');
7 | var lastScrollTop = 0;
8 | var rightMargin = 20;
9 | var bottomMargin = 20;
10 | var lastState = null;
11 | var state = {
12 | base: {
13 | classname: 'card has-text-centered',
14 | left: '',
15 | width: 64,
16 | bottom: bottomMargin,
17 | 'border-radius': 4
18 | }
19 | };
20 | state['desktop-hidden'] = Object.assign({}, state.base, {
21 | classname: state.base.classname + ' rise-up',
22 | });
23 | state['desktop-visible'] = Object.assign({}, state['desktop-hidden'], {
24 | classname: state['desktop-hidden'].classname + ' fade-in',
25 | });
26 | state['desktop-dock'] = Object.assign({}, state['desktop-visible'], {
27 | classname: state['desktop-visible'].classname + ' fade-in',
28 | width: 40,
29 | 'border-radius': '50%'
30 | });
31 | state['mobile-hidden'] = Object.assign({}, state.base, {
32 | classname: state.base.classname + ' fade-in',
33 | right: rightMargin
34 | });
35 | state['mobile-visible'] = Object.assign({}, state['mobile-hidden'], {
36 | classname: state['mobile-hidden'].classname + ' rise-up',
37 | });
38 |
39 | function isStateEquals(prev, next) {
40 | for (var prop in prev) {
41 | if (!next.hasOwnProperty(prop) || next[prop] !== prev[prop]) {
42 | return false;
43 | }
44 | }
45 | for (var prop in next) {
46 | if (!prev.hasOwnProperty(prop) || prev[prop] !== prev[prop]) {
47 | return false;
48 | }
49 | }
50 | return true;
51 | }
52 |
53 | function applyState(state) {
54 | if (lastState !== null && isStateEquals(lastState, state)) {
55 | return;
56 | }
57 | $button.attr('class', state.classname);
58 | for (let prop in state) {
59 | if (prop === 'classname') {
60 | continue;
61 | }
62 | $button.css(prop, state[prop]);
63 | }
64 | lastState = state;
65 | }
66 |
67 | function isDesktop() {
68 | return window.innerWidth >= 1078;
69 | }
70 |
71 | function isTablet() {
72 | return window.innerWidth >= 768 && !isDesktop();
73 | }
74 |
75 | function isScrollUp() {
76 | return $(window).scrollTop() < lastScrollTop && $(window).scrollTop() > 0;
77 | }
78 |
79 | function hasLeftSidebar() {
80 | return $leftSidebar.length > 0;
81 | }
82 |
83 | function hasRightSidebar() {
84 | return $rightSidebar.length > 0;
85 | }
86 |
87 | function getRightSidebarBottom() {
88 | if (!hasRightSidebar()) {
89 | return 0;
90 | }
91 | return Math.max.apply(null, $rightSidebar.find('.widget').map(function () {
92 | return $(this).offset().top + $(this).outerHeight(true);
93 | }));
94 | }
95 |
96 | function getScrollTop() {
97 | return $(window).scrollTop();
98 | }
99 |
100 | function getScrollBottom() {
101 | return $(window).scrollTop() + $(window).height();
102 | }
103 |
104 | function getButtonWidth() {
105 | return $button.outerWidth(true);
106 | }
107 |
108 | function getButtonHeight() {
109 | return $button.outerHeight(true);
110 | }
111 |
112 | function updateScrollTop() {
113 | lastScrollTop = $(window).scrollTop();
114 | }
115 |
116 | function update() {
117 | // desktop mode or tablet mode with only right sidebar enabled
118 | if (isDesktop() || (isTablet() && !hasLeftSidebar() && hasRightSidebar())) {
119 | var nextState;
120 | var padding = ($mainColumn.outerWidth() - $mainColumn.width()) / 2;
121 | var maxLeft = $(window).width() - getButtonWidth() - rightMargin;
122 | var maxBottom = $footer.offset().top + getButtonHeight() / 2 + bottomMargin;
123 | if (getScrollTop() == 0 || getScrollBottom() < getRightSidebarBottom() + padding + getButtonHeight()) {
124 | nextState = state['desktop-hidden'];
125 | } else if (getScrollBottom() < maxBottom) {
126 | nextState = state['desktop-visible'];
127 | } else {
128 | nextState = Object.assign({}, state['desktop-dock'], {
129 | bottom: getScrollBottom() - maxBottom + bottomMargin
130 | });
131 | }
132 |
133 | var left = $mainColumn.offset().left + $mainColumn.outerWidth() + padding;
134 | nextState = Object.assign({}, nextState, {
135 | left: Math.min(left, maxLeft)
136 | });
137 | applyState(nextState);
138 | } else {
139 | // mobile and tablet mode
140 | if (!isScrollUp()) {
141 | applyState(state['mobile-hidden']);
142 | } else {
143 | applyState(state['mobile-visible']);
144 | }
145 | updateScrollTop();
146 | }
147 | }
148 |
149 | update();
150 | $(window).resize(update);
151 | $(window).scroll(update);
152 |
153 | $('#back-to-top').on('click', function () {
154 | $('body, html').animate({ scrollTop: 0 }, 400);
155 | });
156 | });
157 |
--------------------------------------------------------------------------------
/source/assets/css/fonts/meteocons/css/meteocons-ie7.css:
--------------------------------------------------------------------------------
1 | [class^="meteocons-"], [class*=" meteocons-"] {
2 | font-family: 'meteocons';
3 | font-style: normal;
4 | font-weight: normal;
5 |
6 | /* fix buttons height */
7 | line-height: 1em;
8 |
9 | /* you can be more comfortable with increased icons size */
10 | /* font-size: 120%; */
11 | }
12 |
13 | .meteocons-windy-rain-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
14 | .meteocons-snow-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
15 | .meteocons-snow-heavy-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
16 | .meteocons-hail-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
17 | .meteocons-clouds-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
18 | .meteocons-clouds-flash-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
19 | .meteocons-temperature { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
20 | .meteocons-compass { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
21 | .meteocons-na { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
22 | .meteocons-celcius { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
23 | .meteocons-fahrenheit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
24 | .meteocons-clouds-flash-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
25 | .meteocons-sun-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
26 | .meteocons-moon-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
27 | .meteocons-cloud-sun-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
28 | .meteocons-cloud-moon-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
29 | .meteocons-cloud-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
30 | .meteocons-cloud-flash-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
31 | .meteocons-drizzle-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
32 | .meteocons-rain-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
33 | .meteocons-windy-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
34 | .meteocons-sunrise { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
35 | .meteocons-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
36 | .meteocons-moon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
37 | .meteocons-eclipse { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
38 | .meteocons-mist { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
39 | .meteocons-wind { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
40 | .meteocons-snowflake { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
41 | .meteocons-cloud-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
42 | .meteocons-cloud-moon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
43 | .meteocons-fog-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
44 | .meteocons-fog-moon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
45 | .meteocons-fog-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
46 | .meteocons-fog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
47 | .meteocons-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
48 | .meteocons-cloud-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
49 | .meteocons-cloud-flash-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
50 | .meteocons-drizzle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
51 | .meteocons-rain { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
52 | .meteocons-windy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
53 | .meteocons-windy-rain { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
54 | .meteocons-snow { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
55 | .meteocons-snow-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
56 | .meteocons-snow-heavy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
57 | .meteocons-hail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
58 | .meteocons-clouds { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
59 | .meteocons-clouds-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
--------------------------------------------------------------------------------
/source/assets/js/lozad.js:
--------------------------------------------------------------------------------
1 | /*! lozad.js - v1.14.0 - 2019-10-19
2 | * https://github.com/ApoorvSaxena/lozad.js
3 | * Copyright (c) 2019 Apoorv Saxena; Licensed MIT */
4 |
5 |
6 | (function (global, factory) {
7 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
8 | typeof define === 'function' && define.amd ? define(factory) :
9 | (global = global || self, global.lozad = factory());
10 | }(this, function () { 'use strict';
11 |
12 | /**
13 | * Detect IE browser
14 | * @const {boolean}
15 | * @private
16 | */
17 | var isIE = typeof document !== 'undefined' && document.documentMode;
18 |
19 | var defaultConfig = {
20 | rootMargin: '0px',
21 | threshold: 0,
22 | load: function load(element) {
23 | if (element.nodeName.toLowerCase() === 'picture') {
24 | var img = document.createElement('img');
25 | if (isIE && element.getAttribute('data-iesrc')) {
26 | img.src = element.getAttribute('data-iesrc');
27 | }
28 |
29 | if (element.getAttribute('data-alt')) {
30 | img.alt = element.getAttribute('data-alt');
31 | }
32 |
33 | element.append(img);
34 | }
35 |
36 | if (element.nodeName.toLowerCase() === 'video' && !element.getAttribute('data-src')) {
37 | if (element.children) {
38 | var childs = element.children;
39 | var childSrc = void 0;
40 | for (var i = 0; i <= childs.length - 1; i++) {
41 | childSrc = childs[i].getAttribute('data-src');
42 | if (childSrc) {
43 | childs[i].src = childSrc;
44 | }
45 | }
46 |
47 | element.load();
48 | }
49 | }
50 |
51 | if (element.getAttribute('data-src')) {
52 | element.src = element.getAttribute('data-src');
53 | }
54 |
55 | if (element.getAttribute('data-srcset')) {
56 | element.setAttribute('srcset', element.getAttribute('data-srcset'));
57 | }
58 |
59 | if (element.getAttribute('data-background-image')) {
60 | element.style.backgroundImage = 'url(\'' + element.getAttribute('data-background-image').split(',').join('\'),url(\'') + '\')';
61 | } else if (element.getAttribute('data-background-image-set')) {
62 | var imageSetLinks = element.getAttribute('data-background-image-set').split(',');
63 | var firstUrlLink = imageSetLinks[0].substr(0, imageSetLinks[0].indexOf(' ')) || imageSetLinks[0]; // Substring before ... 1x
64 | firstUrlLink = firstUrlLink.indexOf('url(') === -1 ? 'url(' + firstUrlLink + ')' : firstUrlLink;
65 | if (imageSetLinks.length === 1) {
66 | element.style.backgroundImage = firstUrlLink;
67 | } else {
68 | element.setAttribute('style', (element.getAttribute('style') || '') + ('background-image: ' + firstUrlLink + '; background-image: -webkit-image-set(' + imageSetLinks + '); background-image: image-set(' + imageSetLinks + ')'));
69 | }
70 | }
71 |
72 | if (element.getAttribute('data-toggle-class')) {
73 | element.classList.toggle(element.getAttribute('data-toggle-class'));
74 | }
75 | },
76 | loaded: function loaded() {}
77 | };
78 |
79 | function markAsLoaded(element) {
80 | element.setAttribute('data-loaded', true);
81 | }
82 |
83 | var isLoaded = function isLoaded(element) {
84 | return element.getAttribute('data-loaded') === 'true';
85 | };
86 |
87 | var onIntersection = function onIntersection(load, loaded) {
88 | return function (entries, observer) {
89 | entries.forEach(function (entry) {
90 | if (entry.intersectionRatio > 0 || entry.isIntersecting) {
91 | observer.unobserve(entry.target);
92 |
93 | if (!isLoaded(entry.target)) {
94 | load(entry.target);
95 | markAsLoaded(entry.target);
96 | loaded(entry.target);
97 | }
98 | }
99 | });
100 | };
101 | };
102 |
103 | var getElements = function getElements(selector) {
104 | var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
105 |
106 | if (selector instanceof Element) {
107 | return [selector];
108 | }
109 |
110 | if (selector instanceof NodeList) {
111 | return selector;
112 | }
113 |
114 | return root.querySelectorAll(selector);
115 | };
116 |
117 | function lozad () {
118 | var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.lozad';
119 | var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
120 |
121 | var _Object$assign = Object.assign({}, defaultConfig, options),
122 | root = _Object$assign.root,
123 | rootMargin = _Object$assign.rootMargin,
124 | threshold = _Object$assign.threshold,
125 | load = _Object$assign.load,
126 | loaded = _Object$assign.loaded;
127 |
128 | var observer = void 0;
129 |
130 | if (typeof window !== 'undefined' && window.IntersectionObserver) {
131 | observer = new IntersectionObserver(onIntersection(load, loaded), {
132 | root: root,
133 | rootMargin: rootMargin,
134 | threshold: threshold
135 | });
136 | }
137 |
138 | return {
139 | observe: function observe() {
140 | var elements = getElements(selector, root);
141 |
142 | for (var i = 0; i < elements.length; i++) {
143 | if (isLoaded(elements[i])) {
144 | continue;
145 | }
146 |
147 | if (observer) {
148 | observer.observe(elements[i]);
149 | continue;
150 | }
151 |
152 | load(elements[i]);
153 | markAsLoaded(elements[i]);
154 | loaded(elements[i]);
155 | }
156 | },
157 | triggerLoad: function triggerLoad(element) {
158 | if (isLoaded(element)) {
159 | return;
160 | }
161 |
162 | load(element);
163 | markAsLoaded(element);
164 | loaded(element);
165 | },
166 |
167 | observer: observer
168 | };
169 | }
170 |
171 | return lozad;
172 |
173 | }));
174 |
--------------------------------------------------------------------------------
/layout/widget/profile.ftl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/photos.ftl:
--------------------------------------------------------------------------------
1 | <#include "./layout/common/navbar.ftl">
2 | <#include "./layout/common/head.ftl">
3 |
4 |
5 |
6 |
7 |
8 |
${options.photos_title!} - ${blog_title!}
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | <@global.head />
28 |
29 |
30 |
31 | <#include "layout/plugin/style.theme.ftl">
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | <@navbar 'page' />
40 |
41 |
42 | <@photoTag method="listTeams">
43 | <#list teams as item>
44 |
${item.team!}
45 |
46 | <#list item.photos?sort_by('takeTime')?reverse as photo>
47 | <#if photo_index gte options.photos_page_size>
48 | <#break>
49 | #if>
50 |
51 |
52 |
53 |
54 |
55 |
58 |
59 |
60 | <#--
61 |
62 | ${photo.name}
63 |
64 |
-->
65 |
66 |
75 |
76 |
77 | #list>
78 |
79 | #list>
80 | @photoTag>
81 |
82 |
83 | <#include "./layout/common/footer.ftl">
84 | <#include "./layout/plugin/back-to-top.ftl">
85 |
86 |
87 |
88 |
89 |
90 |
91 |
127 |
164 |
165 |
--------------------------------------------------------------------------------
/source/css/bundle.css:
--------------------------------------------------------------------------------
1 | #back-to-top{position:fixed;padding:8px 0;transition:.4s ease opacity,.4s ease width,.4s ease transform,.4s ease border-radius;opacity:0;line-height:24px;outline:0;transform:translateY(120px)}#back-to-top.fade-in{opacity:1}#back-to-top.rise-up{transform:translateY(0)}.ins-section-container{position:relative;background:#f7f7f7}.ins-section{font-size:14px;line-height:16px}.ins-section .ins-search-item,.ins-section .ins-section-header{padding:8px 15px}.ins-section .ins-section-header{color:#9a9a9a;}.ins-section .ins-slug{margin-left:5px;color:#9a9a9a}.ins-section .ins-slug:before{content:'('}.ins-section .ins-slug:after{content:')'}.ins-section .ins-search-item .ins-search-preview,.ins-section .ins-search-item header{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ins-section .ins-search-item header .ins-title{margin-left:8px}.ins-section .ins-search-item .ins-search-preview{height:15px;font-size:12px;color:#9a9a9a;margin:5px 0 0 20px}.ins-section .ins-search-item.active,.ins-section .ins-search-item:hover{color:#fff;background:#3273dc}.ins-section .ins-search-item.active .ins-search-preview,.ins-section .ins-search-item.active .ins-slug,.ins-section .ins-search-item:hover .ins-search-preview,.ins-section .ins-search-item:hover .ins-slug{color:#fff}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#3273dc;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}.searchbox{display:none;perspective:50em;top:0;left:0;width:100%;height:100%;z-index:100;background:rgba(0,0,0,.7);transform-origin:0;perspective-origin:top center}.searchbox.show{display:block}.searchbox,.searchbox .searchbox-container{position:fixed}.searchbox .searchbox-container{overflow:hidden}.searchbox .searchbox-selectable{cursor:pointer}.searchbox .searchbox-input-wrapper{position:relative}.searchbox .searchbox-input-wrapper .searchbox-input{font-weight: 400 !important;width:100%;border:none;outline:0;font-size:16px;box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);font-weight:200;border-radius:0;background:#fff;line-height:20px;box-sizing:border-box;padding:12px 28px 12px 20px;border-bottom:1px solid #e2e2e2}.searchbox .searchbox-input-wrapper .searchbox-close{top:50%;right:6px;width:20px;height:20px;line-height:20px;font-size:16px;margin-top:-11px;position:absolute;text-align:center;display:inline-block}.searchbox .searchbox-input-wrapper .searchbox-close:hover{color:#3273dc}.searchbox .searchbox-result-wrapper{left:0;right:0;top:45px;bottom:0;overflow-y:auto;position:absolute}.searchbox .searchbox-container{border-radius:2px;left:50%;top:100px;width:540px;z-index:101;bottom:100px;margin-left:-270px;box-sizing:border-box}@media screen and (max-width:559px),screen and (max-height:479px){.searchbox .searchbox-container{top:0;left:0;margin:0;width:100%;height:100%;background:#f7f7f7}}
2 |
3 | .ant-tag {
4 | font-family: Chinese Quote, -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
5 | font-size: 14px;
6 | font-variant: tabular-nums;
7 | line-height: 1.5;
8 | color: rgba(0, 0, 0, .65);
9 | -webkit-box-sizing: border-box;
10 | box-sizing: border-box;
11 | margin: 0;
12 | padding: 5px 15px;
13 | list-style: none;
14 | display: inline-block;
15 | border-radius: 2px;
16 | border: 1px solid #d9d9d9;
17 | background: #fafafa;
18 | font-size: 12px;
19 | -webkit-transition: all .3s cubic-bezier(.215, .61, .355, 1);
20 | transition: all .3s cubic-bezier(.215, .61, .355, 1);
21 | opacity: 1;
22 | margin-right: 8px;
23 | cursor: pointer;
24 | white-space:nowrap;
25 | opacity: .8;
26 | font-weight: 400;
27 | text-transform: uppercase;
28 | }
29 |
30 | .ant-tag:hover {
31 | opacity:1;
32 | border-color:#91d5ff
33 | }
34 |
35 | .ant-tag, .ant-tag a, .ant-tag a:hover {
36 | color:rgba(0, 0, 0, .65)
37 | }
38 |
39 | .ant-tag-pink {
40 | color: #eb2f96;
41 | background: #fff0f6;
42 | border-color:#ffadd2
43 | }
44 |
45 | .ant-tag-pink-inverse {
46 | background: #eb2f96;
47 | border-color: #eb2f96;
48 | color:#fff
49 | }
50 |
51 | .ant-tag-magenta {
52 | color: #eb2f96;
53 | background: #fff0f6;
54 | border-color:#ffadd2
55 | }
56 |
57 | .ant-tag-magenta-inverse {
58 | background: #eb2f96;
59 | border-color: #eb2f96;
60 | color:#fff
61 | }
62 |
63 | .ant-tag-red {
64 | color: #f5222d;
65 | background: #fff1f0;
66 | border-color:#ffa39e
67 | }
68 |
69 | .ant-tag-red-inverse {
70 | background: #f5222d;
71 | border-color: #f5222d;
72 | color:#fff
73 | }
74 |
75 | .ant-tag-volcano {
76 | color: #fa541c;
77 | background: #fff2e8;
78 | border-color:#ffbb96
79 | }
80 |
81 | .ant-tag-volcano-inverse {
82 | background: #fa541c;
83 | border-color: #fa541c;
84 | color:#fff
85 | }
86 |
87 | .ant-tag-orange {
88 | color: #fa8c16;
89 | background: #fff7e6;
90 | border-color:#ffd591
91 | }
92 |
93 | .ant-tag-orange-inverse {
94 | background: #fa8c16;
95 | border-color: #fa8c16;
96 | color:#fff
97 | }
98 |
99 | .ant-tag-yellow {
100 | color: #fadb14;
101 | background: #feffe6;
102 | border-color:#fffb8f
103 | }
104 |
105 | .ant-tag-yellow-inverse {
106 | background: #fadb14;
107 | border-color: #fadb14;
108 | color:#fff
109 | }
110 |
111 | .ant-tag-gold {
112 | color: #faad14;
113 | background: #fffbe6;
114 | border-color:#ffe58f
115 | }
116 |
117 | .ant-tag-gold-inverse {
118 | background: #faad14;
119 | border-color: #faad14;
120 | color:#fff
121 | }
122 |
123 | .ant-tag-cyan {
124 | color: #13c2c2;
125 | background: #e6fffb;
126 | border-color:#87e8de
127 | }
128 |
129 | .ant-tag-cyan-inverse {
130 | background: #13c2c2;
131 | border-color: #13c2c2;
132 | color:#fff
133 | }
134 |
135 | .ant-tag-lime {
136 | color: #a0d911;
137 | background: #fcffe6;
138 | border-color:#eaff8f
139 | }
140 |
141 | .ant-tag-lime-inverse {
142 | background: #a0d911;
143 | border-color: #a0d911;
144 | color:#fff
145 | }
146 |
147 | .ant-tag-green {
148 | color: #52c41a;
149 | background: #f6ffed;
150 | border-color:#b7eb8f
151 | }
152 |
153 | .ant-tag-green-inverse {
154 | background: #52c41a;
155 | border-color: #52c41a;
156 | color:#fff
157 | }
158 |
159 | .ant-tag-blue {
160 | color: #1890ff;
161 | background: #e6f7ff;
162 | border-color:#91d5ff
163 | }
164 |
165 | .ant-tag-blue-inverse {
166 | background: #1890ff;
167 | border-color: #1890ff;
168 | color:#fff
169 | }
170 |
171 | .ant-tag-geekblue {
172 | color: #2f54eb;
173 | background: #f0f5ff;
174 | border-color:#adc6ff
175 | }
176 |
177 | .ant-tag-geekblue-inverse {
178 | background: #2f54eb;
179 | border-color: #2f54eb;
180 | color:#fff
181 | }
182 |
183 | .ant-tag-purple {
184 | color: #722ed1;
185 | background: #f9f0ff;
186 | border-color:#d3adf7
187 | }
188 |
189 | .ant-tag-purple-inverse {
190 | background: #722ed1;
191 | border-color: #722ed1;
192 | color:#fff
193 | }
194 |
--------------------------------------------------------------------------------
/source/js/bundle.js:
--------------------------------------------------------------------------------
1 | // main.js
2 | (function($){$('.article img:not(".not-gallery-item")').each(function(){if($(this).parent("a").length===0){$(this).wrap('
');if(this.alt){$(this).after('
'+this.alt+"
")}}});if(typeof(moment)==="function"){$(".article-meta time").each(function(){$(this).text(moment($(this).attr("datetime")).fromNow())})}$(".article > .content > table").each(function(){if($(this).width()>$(this).parent().width()){$(this).wrap('
')}});function adjustNavbar(){const navbarWidth=$(".navbar-main .navbar-start").outerWidth()+$(".navbar-main .navbar-end").outerWidth();if($(document).outerWidth()
');if(typeof(IcarusThemeSettings)!=="undefined"&&typeof(IcarusThemeSettings.article)!=="undefined"&&typeof(IcarusThemeSettings.article.highlight)!=="undefined"){if(typeof(ClipboardJS)!=="undefined"&&IcarusThemeSettings.article.highlight.clipboard){$("figure.highlight").each(function(){var id="code-"+Date.now()+(Math.random()*1000|0);var button=' ';$(this).attr("id",id);if($(this).find("figcaption").length){$(this).find("figcaption").prepend(button)}else{$(this).prepend(""+button+" ")}});new ClipboardJS(".highlight .copy")}var fold=IcarusThemeSettings.article.highlight.fold;if(fold.trim()){var button=''+(fold==="unfolded"?' ':' ')+" ";$("figure.highlight").each(function(){if($(this).find("figcaption").length){$(this).find("figcaption").prepend(button)}else{$(this).prepend(""+button+" ")}});function toggleFold(codeBlock,isFolded){var $toggle=$(codeBlock).find(".fold i");!isFolded?$(codeBlock).removeClass("folded"):$(codeBlock).addClass("folded");!isFolded?$toggle.removeClass("fa-angle-right"):$toggle.removeClass("fa-angle-down");!isFolded?$toggle.addClass("fa-angle-down"):$toggle.addClass("fa-angle-right")}$("figure.highlight").each(function(){toggleFold(this,fold==="folded")});$("figure.highlight figcaption .fold").click(function(){var $code=$(this).closest("figure.highlight");toggleFold($code.eq(0),!$code.hasClass("folded"))})}}var $toc=$("#toc");if($toc.length>0){var $mask=$("");$mask.attr("id","toc-mask");$("body").append($mask);function toggleToc(){$toc.toggleClass("is-active");$mask.toggleClass("is-active")}$toc.on("click",toggleToc);$mask.on("click",toggleToc);$(".navbar-main .catalogue").on("click",toggleToc)}})(jQuery);
3 |
4 | // animation.js
5 | (function(){function $(){return Array.prototype.slice.call(document.querySelectorAll.apply(document,arguments))}$("body > .navbar, body > .section, body > .footer").forEach(function(element){element.style.transition="0s";element.style.opacity="0"});document.querySelector("body > .navbar").style.transform="translateY(-100px)";[".column-main > .card",".column-left > .card, .column-right-shadow > .card",".column-right > .card"].map(function(selector){$(selector).forEach(function(element){element.style.transition="0s";element.style.opacity="0";element.style.transform="scale(0.8)";element.style.transformOrigin="center top"})});setTimeout(function(){$("body > .navbar, body > .section, body > .footer").forEach(function(element){element.style.opacity="1";element.style.transition="opacity 0.3s ease-out, transform 0.3s ease-out"});document.querySelector("body > .navbar").style.transform="translateY(0)";[".column-main > .card",".column-left > .card, .column-right-shadow > .card",".column-right > .card"].map(function(selector){var i=1;$(selector).forEach(function(element){setTimeout(function(){element.style.opacity="1";element.style.transform="";element.style.transition="opacity 0.3s ease-out, transform 0.3s ease-out"},i*100);i++})})})})();
6 |
7 | // back-to-top.js
8 | $(document).ready(function(){var $button=$('#back-to-top');var $footer=$('footer.footer');var $mainColumn=$('.column-main');var $leftSidebar=$('.column-left');var $rightSidebar=$('.column-right');var lastScrollTop=0;var rightMargin=20;var bottomMargin=20;var lastState=null;var state={base:{classname:'card has-text-centered',left:'',width:64,bottom:bottomMargin,'border-radius':4}};state['desktop-hidden']=Object.assign({},state.base,{classname:state.base.classname+' rise-up',});state['desktop-visible']=Object.assign({},state['desktop-hidden'],{classname:state['desktop-hidden'].classname+' fade-in',});state['desktop-dock']=Object.assign({},state['desktop-visible'],{classname:state['desktop-visible'].classname+' fade-in',width:40,'border-radius':'50%'});state['mobile-hidden']=Object.assign({},state.base,{classname:state.base.classname+' fade-in',right:rightMargin});state['mobile-visible']=Object.assign({},state['mobile-hidden'],{classname:state['mobile-hidden'].classname+' rise-up',});function isStateEquals(prev,next){for(var prop in prev){if(!next.hasOwnProperty(prop)||next[prop]!==prev[prop]){return false}}for(var prop in next){if(!prev.hasOwnProperty(prop)||prev[prop]!==prev[prop]){return false}}return true}function applyState(state){if(lastState!==null&&isStateEquals(lastState,state)){return}$button.attr('class',state.classname);for(let prop in state){if(prop==='classname'){continue}$button.css(prop,state[prop])}lastState=state}function isDesktop(){return window.innerWidth>=1078}function isTablet(){return window.innerWidth>=768&&!isDesktop()}function isScrollUp(){return $(window).scrollTop()
0}function hasLeftSidebar(){return $leftSidebar.length>0}function hasRightSidebar(){return $rightSidebar.length>0}function getRightSidebarBottom(){if(!hasRightSidebar()){return 0}return Math.max.apply(null,$rightSidebar.find('.widget').map(function(){return $(this).offset().top+$(this).outerHeight(true)}))}function getScrollTop(){return $(window).scrollTop()}function getScrollBottom(){return $(window).scrollTop()+$(window).height()}function getButtonWidth(){return $button.outerWidth(true)}function getButtonHeight(){return $button.outerHeight(true)}function updateScrollTop(){lastScrollTop=$(window).scrollTop()}function update(){if(isDesktop()||(isTablet()&&!hasLeftSidebar()&&hasRightSidebar())){var nextState;var padding=($mainColumn.outerWidth()-$mainColumn.width())/2;var maxLeft=$(window).width()-getButtonWidth()-rightMargin;var maxBottom=$footer.offset().top+getButtonHeight()/2+bottomMargin;if(getScrollTop()==0||getScrollBottom() p > .gallery-item').length){$('.justified-gallery > p > .gallery-item').unwrap()}$('.justified-gallery').justifiedGallery()}});
12 |
13 |
14 |
--------------------------------------------------------------------------------
/source/css/widget_pin.css:
--------------------------------------------------------------------------------
1 | /*@import url("https://fonts.googleapis.com/css?family=Fira+Sans:400,500,600,700,800");*/
2 | .blog-slider {
3 | position: relative;
4 | width: 100%;
5 | margin: auto;
6 | padding: 25px;
7 | border-radius: 2px;
8 | height: 250px;
9 | transition: all .3s;
10 | }
11 | @media screen and (max-width: 992px) {
12 | .blog-slider {
13 | /*max-width: 680px;*/
14 | /*height: 400px;*/
15 | }
16 | }
17 | @media screen and (max-width: 769px) {
18 | .blog-slider {
19 | /*min-height: 500px;*/
20 | height: auto;
21 | /*margin: 80px auto;*/
22 | margin-top: 80px;
23 | }
24 | }
25 | /*@media screen and (max-height: 500px) and (min-width: 992px) {*/
26 | /* .blog-slider {*/
27 | /* height: 350px;*/
28 | /* }*/
29 | /*}*/
30 | .blog-slider__item {
31 | display: flex;
32 | align-items: center;
33 | }
34 | @media screen and (max-width: 768px) {
35 | .blog-slider__item {
36 | flex-direction: column;
37 | }
38 | }
39 | .blog-slider__item.swiper-slide-active .blog-slider__img img {
40 | opacity: 1;
41 | transition-delay: .3s;
42 | }
43 | .blog-slider__item.swiper-slide-active .blog-slider__content > * {
44 | opacity: 1;
45 | transform: none;
46 | }
47 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(1) {
48 | transition-delay: 0.3s;
49 | }
50 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(2) {
51 | transition-delay: 0.4s;
52 | }
53 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(3) {
54 | transition-delay: 0.5s;
55 | }
56 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(4) {
57 | transition-delay: 0.6s;
58 | }
59 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(5) {
60 | transition-delay: 0.7s;
61 | }
62 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(6) {
63 | transition-delay: 0.8s;
64 | }
65 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(7) {
66 | transition-delay: 0.9s;
67 | }
68 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(8) {
69 | transition-delay: 1s;
70 | }
71 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(9) {
72 | transition-delay: 1.1s;
73 | }
74 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(10) {
75 | transition-delay: 1.2s;
76 | }
77 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(11) {
78 | transition-delay: 1.3s;
79 | }
80 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(12) {
81 | transition-delay: 1.4s;
82 | }
83 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(13) {
84 | transition-delay: 1.5s;
85 | }
86 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(14) {
87 | transition-delay: 1.6s;
88 | }
89 | .blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(15) {
90 | transition-delay: 1.7s;
91 | }
92 | .blog-slider__img {
93 | width: 300px;
94 | flex-shrink: 0;
95 | height: 200px;
96 | background-image: linear-gradient(147deg, #fffcf9, #cde8f6);
97 | box-shadow: 3px 4px 12px 0 rgba(0,0,0,0.2);
98 | border-radius: 2px;
99 | transform: translateX(-40px);
100 | overflow: hidden;
101 | }
102 | .blog-slider__img:after {
103 | content: '';
104 | position: absolute;
105 | top: 0;
106 | left: 0;
107 | width: 100%;
108 | height: 100%;
109 | /*background-image: linear-gradient(147deg, #fff9fb 0%, #fd3838 74%);*/
110 | border-radius: 2px;
111 | opacity: 0.2;
112 | }
113 | .blog-slider__img img {
114 | width: 100%;
115 | height: 100%;
116 | object-fit: cover;
117 | display: block;
118 | opacity: 0;
119 | border-radius: 2px;
120 | transition: all .3s;
121 | }
122 | @media screen and (max-width: 768px) {
123 | .blog-slider__img {
124 | transform: translateY(-50%);
125 | width: 90%;
126 | }
127 | }
128 | @media screen and (max-width: 576px) {
129 | .blog-slider__img {
130 | width: 95%;
131 | }
132 | }
133 | /*@media screen and (max-height: 500px) and (min-width: 992px) {*/
134 | /* .blog-slider__img {*/
135 | /* height: 270px;*/
136 | /* }*/
137 | /*}*/
138 | .blog-slider__content {
139 | padding-right: 25px;
140 | }
141 | @media screen and (max-width: 768px) {
142 | .blog-slider__content {
143 | margin-top: -80px;
144 | text-align: center;
145 | padding: 0 30px;
146 | }
147 | }
148 | @media screen and (max-width: 576px) {
149 | .blog-slider__content {
150 | padding: 0;
151 | }
152 | }
153 | .blog-slider__content > * {
154 | opacity: 0;
155 | transform: translateY(25px);
156 | transition: all .4s;
157 | }
158 | .blog-slider__code {
159 | color: #7b7992;
160 | margin-bottom: 10px;
161 | display: block;
162 | font-weight: 500;
163 | }
164 | .blog-slider__title {
165 | /*color: #0d0925;*/
166 | margin-bottom: 10px;
167 | }
168 | .blog-slider__title a{
169 | }
170 | .blog-slider__text {
171 | /*color: #4e4a67;*/
172 | margin-bottom: 20px;
173 | line-height: 1.5em;
174 | }
175 | .blog-slider__button {
176 | display: inline-flex;
177 | background-image: linear-gradient(149deg, #6c2bfe, #7e8dfd 49.58%);
178 | padding: 8px 25px;
179 | border-radius: 2px;
180 | color: #fff;
181 | box-shadow: 3px 4px 12px 0 rgba(0,0,0,0.2);
182 | text-decoration: none;
183 | font-weight: 500;
184 | justify-content: center;
185 | text-align: center;
186 | letter-spacing: 1px;
187 | }
188 | @media screen and (max-width: 576px) {
189 | .blog-slider__button {
190 | /*width: 100%;*/
191 | }
192 | }
193 | .blog-slider .swiper-container-horizontal > .swiper-pagination-bullets, .blog-slider .swiper-pagination-custom, .blog-slider .swiper-pagination-fraction {
194 | bottom: 10px;
195 | left: 0;
196 | width: 100%;
197 | }
198 | .blog-slider__pagination {
199 | position: absolute;
200 | z-index: 21;
201 | right: 20px;
202 | width: 11px !important;
203 | text-align: center;
204 | left: auto !important;
205 | top: 50%;
206 | bottom: auto !important;
207 | transform: translateY(-50%);
208 | }
209 | @media screen and (max-width: 768px) {
210 | .blog-slider__title {
211 | /*white-space:nowrap;*/
212 | /*overflow:hidden;*/
213 | /*text-overflow:ellipsis; /这里的ellipsis的英文名字就是省略的意思/*/
214 | }
215 | .blog-slider__pagination {
216 | transform: translateX(-50%);
217 | left: 50% !important;
218 | top: 190px;
219 | width: 100% !important;
220 | display: flex;
221 | justify-content: center;
222 | align-items: center;
223 | }
224 |
225 | }
226 | .blog-slider__pagination.swiper-pagination-bullets .swiper-pagination-bullet {
227 | margin: 8px 0;
228 | }
229 | .swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet {
230 | margin: 10px 4px !important;
231 | }
232 | @media screen and (max-width: 768px) {
233 | .blog-slider__pagination.swiper-pagination-bullets .swiper-pagination-bullet {
234 | margin: 0px 5px;
235 | }
236 | }
237 | .blog-slider__pagination .swiper-pagination-bullet {
238 | width: 11px;
239 | height: 11px;
240 | display: block;
241 | border-radius: 10px;
242 | background: #062744;
243 | opacity: 0.2;
244 | transition: all .3s;
245 | }
246 | .blog-slider__pagination .swiper-pagination-bullet-active {
247 | opacity: 1;
248 | background: linear-gradient(149deg, #6c2bfe, #7e8dfd 49.58%);
249 | height: 30px;
250 | box-shadow: 0px 0px 20px rgba(126, 141, 253, 0.3);
251 | }
252 | @media screen and (max-width: 768px) {
253 | .blog-slider__pagination .swiper-pagination-bullet-active {
254 | height: 11px;
255 | width: 30px;
256 | }
257 | }
258 |
--------------------------------------------------------------------------------
/source/assets/js/xenon-toggles.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Toggles
3 | *
4 | * Non-animation
5 | */
6 |
7 |
8 | ;(function($, window, undefined)
9 | {
10 | "use strict";
11 |
12 | $(document).ready(function()
13 | {
14 |
15 | // Chat Toggler
16 | $('a[data-toggle="chat"]').each(function(i, el)
17 | {
18 | $(el).on('click', function(ev)
19 | {
20 | ev.preventDefault();
21 |
22 | public_vars.$body.toggleClass('chat-open');
23 |
24 | if($.isFunction($.fn.perfectScrollbar))
25 | {
26 | setTimeout(function()
27 | {
28 | public_vars.$chat.find('.chat_inner').perfectScrollbar('update');
29 | $(window).trigger('xenon.resize');
30 | }, 1);
31 | }
32 | });
33 | });
34 |
35 |
36 | // Settings Pane Toggler
37 | $('a[data-toggle="settings-pane"]').each(function(i, el)
38 | {
39 | $(el).on('click', function(ev)
40 | {
41 | ev.preventDefault();
42 |
43 | var use_animation = attrDefault($(el), 'animate', false) && ! isxs();
44 |
45 | var scroll = {
46 | top: $(document).scrollTop(),
47 | toTop: 0
48 | };
49 |
50 | if(public_vars.$body.hasClass('settings-pane-open'))
51 | {
52 | scroll.toTop = scroll.top;
53 | }
54 |
55 | TweenMax.to(scroll, (use_animation ? .1 : 0), {top: scroll.toTop, roundProps: ['top'], ease: scroll.toTop < 10 ? null : Sine.easeOut, onUpdate: function()
56 | {
57 | $(window).scrollTop( scroll.top );
58 | },
59 | onComplete: function()
60 | {
61 | if(use_animation)
62 | {
63 | // With Animation
64 | public_vars.$settingsPaneIn.addClass('with-animation');
65 |
66 | // Opening
67 | if( ! public_vars.$settingsPane.is(':visible'))
68 | {
69 | public_vars.$body.addClass('settings-pane-open');
70 |
71 | var height = public_vars.$settingsPane.outerHeight(true);
72 |
73 | public_vars.$settingsPane.css({
74 | height: 0
75 | });
76 |
77 | TweenMax.to(public_vars.$settingsPane, .25, {css: {height: height}, ease: Circ.easeInOut, onComplete: function()
78 | {
79 | public_vars.$settingsPane.css({height: ''});
80 | }});
81 |
82 | public_vars.$settingsPaneIn.addClass('visible');
83 | }
84 | // Closing
85 | else
86 | {
87 | public_vars.$settingsPaneIn.addClass('closing');
88 |
89 | TweenMax.to(public_vars.$settingsPane, .25, {css: {height: 0}, delay: .15, ease: Power1.easeInOut, onComplete: function()
90 | {
91 | public_vars.$body.removeClass('settings-pane-open');
92 | public_vars.$settingsPane.css({height: ''});
93 | public_vars.$settingsPaneIn.removeClass('closing visible');
94 | }});
95 | }
96 | }
97 | else
98 | {
99 | // Without Animation
100 | public_vars.$body.toggleClass('settings-pane-open');
101 | public_vars.$settingsPaneIn.removeClass('visible');
102 | public_vars.$settingsPaneIn.removeClass('with-animation');
103 | }
104 | }
105 | });
106 | });
107 | });
108 |
109 |
110 |
111 | // Sidebar Toggle
112 | $('a[data-toggle="sidebar"]').each(function(i, el)
113 | {
114 | $(el).on('click', function(ev)
115 | {
116 | ev.preventDefault();
117 |
118 |
119 | if(public_vars.$sidebarMenu.hasClass('collapsed'))
120 | {
121 | public_vars.$sidebarMenu.removeClass('collapsed');
122 | ps_init();
123 | }
124 | else
125 | {
126 | public_vars.$sidebarMenu.addClass('collapsed');
127 | ps_destroy();
128 | }
129 |
130 | $(window).trigger('xenon.resize');
131 | });
132 | });
133 |
134 |
135 |
136 | // Mobile Menu Trigger
137 | $('a[data-toggle="mobile-menu"]').on('click', function(ev)
138 | {
139 | ev.preventDefault();
140 |
141 | public_vars.$mainMenu.add(public_vars.$sidebarProfile).toggleClass('mobile-is-visible');
142 | ps_destroy();
143 | });
144 |
145 |
146 |
147 | // Mobile Menu Trigger for Horizontal Menu
148 | $('a[data-toggle="mobile-menu-horizontal"]').on('click', function(ev)
149 | {
150 | ev.preventDefault();
151 |
152 | public_vars.$horizontalMenu.toggleClass('mobile-is-visible');
153 |
154 | });
155 |
156 |
157 |
158 | // Mobile Menu Trigger for Sidebar & Horizontal Menu
159 | $('a[data-toggle="mobile-menu-both"]').on('click', function(ev)
160 | {
161 | ev.preventDefault();
162 |
163 | public_vars.$mainMenu.toggleClass('mobile-is-visible both-menus-visible');
164 | public_vars.$horizontalMenu.toggleClass('mobile-is-visible both-menus-visible');
165 |
166 | });
167 |
168 |
169 |
170 | // Mobile User Info Menu Trigger
171 | $('a[data-toggle="user-info-menu"]').on('click', function(ev)
172 | {
173 | ev.preventDefault();
174 |
175 | public_vars.$userInfoMenu.toggleClass('mobile-is-visible');
176 |
177 | });
178 |
179 |
180 |
181 | // Mobile User Info Menu Trigger for Horizontal Menu
182 | $('a[data-toggle="user-info-menu-horizontal"]').on('click', function(ev)
183 | {
184 | ev.preventDefault();
185 |
186 | public_vars.$userInfoMenuHor.find('.nav.nav-userinfo').toggleClass('mobile-is-visible');
187 |
188 | });
189 |
190 |
191 |
192 | // Panel Close
193 | $('body').on('click', '.panel a[data-toggle="remove"]', function(ev)
194 | {
195 | ev.preventDefault();
196 |
197 | var $panel = $(this).closest('.panel'),
198 | $panel_parent = $panel.parent();
199 |
200 | $panel.remove();
201 |
202 | if($panel_parent.children().length == 0)
203 | {
204 | $panel_parent.remove();
205 | }
206 | });
207 |
208 |
209 |
210 | // Panel Reload
211 | $('body').on('click', '.panel a[data-toggle="reload"]', function(ev)
212 | {
213 | ev.preventDefault();
214 |
215 | var $panel = $(this).closest('.panel');
216 |
217 | // This is just a simulation, nothing is going to be reloaded
218 | $panel.append('');
219 |
220 | var $pd = $panel.find('.panel-disabled');
221 |
222 | setTimeout(function()
223 | {
224 | $pd.fadeOut('fast', function()
225 | {
226 | $pd.remove();
227 | });
228 |
229 | }, 500 + 300 * (Math.random() * 5));
230 | });
231 |
232 |
233 |
234 | // Panel Expand/Collapse Toggle
235 | $('body').on('click', '.panel a[data-toggle="panel"]', function(ev)
236 | {
237 | ev.preventDefault();
238 |
239 | var $panel = $(this).closest('.panel');
240 |
241 | $panel.toggleClass('collapsed');
242 | });
243 |
244 |
245 |
246 | // Loading Text toggle
247 | $('[data-loading-text]').each(function(i, el) // Temporary for demo purpose only
248 | {
249 | var $this = $(el);
250 |
251 | $this.on('click', function(ev)
252 | {
253 | $this.button('loading');
254 |
255 | setTimeout(function(){ $this.button('reset'); }, 1800);
256 | });
257 | });
258 |
259 |
260 |
261 |
262 | // Popovers and tooltips
263 | $('[data-toggle="popover"]').each(function(i, el)
264 | {
265 | var $this = $(el),
266 | placement = attrDefault($this, 'placement', 'right'),
267 | trigger = attrDefault($this, 'trigger', 'click'),
268 | popover_class = $this.get(0).className.match(/(popover-[a-z0-9]+)/i);
269 |
270 | $this.popover({
271 | placement: placement,
272 | trigger: trigger
273 | });
274 |
275 | if(popover_class)
276 | {
277 | $this.removeClass(popover_class[1]);
278 |
279 | $this.on('show.bs.popover', function(ev)
280 | {
281 | setTimeout(function()
282 | {
283 | var $popover = $this.next();
284 | $popover.addClass(popover_class[1]);
285 |
286 | }, 0);
287 | });
288 | }
289 | });
290 |
291 | $('[data-toggle="tooltip"]').each(function(i, el)
292 | {
293 | var $this = $(el),
294 | placement = attrDefault($this, 'placement', 'top'),
295 | trigger = attrDefault($this, 'trigger', 'hover'),
296 | tooltip_class = $this.get(0).className.match(/(tooltip-[a-z0-9]+)/i);
297 |
298 | $this.tooltip({
299 | placement: placement,
300 | trigger: trigger
301 | });
302 |
303 | if(tooltip_class)
304 | {
305 | $this.removeClass(tooltip_class[1]);
306 |
307 | $this.on('show.bs.tooltip', function(ev)
308 | {
309 | setTimeout(function()
310 | {
311 | var $tooltip = $this.next();
312 | $tooltip.addClass(tooltip_class[1]);
313 |
314 | }, 0);
315 | });
316 | }
317 | });
318 |
319 | });
320 |
321 | })(jQuery, window);
--------------------------------------------------------------------------------