diff options
author | 裸奔狂甩丁丁 <30397306+StreakingMan@users.noreply.github.com> | 2022-04-05 22:51:38 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-05 22:51:38 +0800 |
commit | ffb0e94ff53d3585efd7acad7560dd11a153f5e6 (patch) | |
tree | f537f5827810c902830da5cc33255abaa47d792a | |
parent | ad83aa4302f035ab2f76f2f239e8748fa3e9f0c7 (diff) |
feat: click to top (#84)
-rw-r--r-- | _includes/extensions/click-to-top.html | 18 | ||||
-rw-r--r-- | _layouts/default.html | 2 | ||||
-rw-r--r-- | _sass/misc/click-to-top.scss | 46 | ||||
-rw-r--r-- | _sass/yat.scss | 3 |
4 files changed, 68 insertions, 1 deletions
diff --git a/_includes/extensions/click-to-top.html b/_includes/extensions/click-to-top.html new file mode 100644 index 0000000..fadd325 --- /dev/null +++ b/_includes/extensions/click-to-top.html @@ -0,0 +1,18 @@ +<div id="click-to-top" class="click-to-top"> + <i class="fa fa-arrow-up"></i> +</div> +<script> + (function () { + const clickToTop = document.getElementById('click-to-top'); + window.addEventListener('scroll', () => { + if (window.scrollY > 100) { + clickToTop.classList.add('show') + }else { + clickToTop.classList.remove('show') + } + }); + clickToTop.addEventListener('click', () => { + window.smoothScrollTo(0); + }); + })(); +</script> diff --git a/_layouts/default.html b/_layouts/default.html index b9ad657..f8e8e6b 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -13,6 +13,8 @@ {%- include extensions/theme-toggle.html -%} + {%- include extensions/click-to-top.html -%} + <main class="page-content" aria-label="Content"> <div class="wrapper"> {{ content }} diff --git a/_sass/misc/click-to-top.scss b/_sass/misc/click-to-top.scss new file mode 100644 index 0000000..00f543c --- /dev/null +++ b/_sass/misc/click-to-top.scss @@ -0,0 +1,46 @@ +.click-to-top { + transition: 0.3s; + display: flex; + align-items: center; + justify-content: center; + position: fixed; + width: 64px; + height: 64px; + border-radius: 32px; + right: 60px; + bottom: 48px; + background: white; + cursor: pointer; + opacity: 0; + transform: translateY(10px); + box-shadow: 0 2px 15px rgba(0, 0, 0, 0.15); + font-size: 24px; + user-select: none; + + @include media-query(1024px) { + width: 48px; + height: 48px; + border-radius: 24px; + right: 35px; + font-size: 20px; + } + + @include media-query($on-palm) { + width: 36px; + height: 36px; + border-radius: 18px; + right: 20px; + font-size: 16px; + } +} + +.click-to-top.show { + opacity: 1; + transform: translateY(0); +} + +html[data-theme="dark"] { + .click-to-top { + background: #34323D; + } +} diff --git a/_sass/yat.scss b/_sass/yat.scss index 5d1a631..eda2d97 100644 --- a/_sass/yat.scss +++ b/_sass/yat.scss @@ -65,5 +65,6 @@ $on-laptop: 800px !default; "misc/article-menu", "misc/common-list", "misc/google-translate", - "misc/gitment" + "misc/gitment", + "misc/click-to-top" ; |