Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change download button #1

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
195 changes: 194 additions & 1 deletion css/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -565,4 +565,197 @@ footer .right dl dd {
#download .wrapper .bottom a {
margin: 0 4px;
}
/*# sourceMappingURL=index.css.map */
/*# sourceMappingURL=index.css.map */

@import url("https://fonts.googleapis.com/css2?family=Inter:opsz,[email protected],500&display=swap");

:root {
--shiny-cta-bg: #000000;
--shiny-cta-bg-subtle: #1a1818;
--shiny-cta-fg: #ffffff;
--shiny-cta-highlight: blue;
--shiny-cta-highlight-subtle: #8484ff;
}

@property --gradient-angle {
syntax: "<angle>";
initial-value: 0deg;
inherits: false;
}

@property --gradient-angle-offset {
syntax: "<angle>";
initial-value: 0deg;
inherits: false;
}

@property --gradient-percent {
syntax: "<percentage>";
initial-value: 5%;
inherits: false;
}

@property --gradient-shine {
syntax: "<color>";
initial-value: white;
inherits: false;
}

.shiny-cta {
--animation: gradient-angle linear infinite;
--duration: 3s;
--shadow-size: 2px;
isolation: isolate;
position: relative;
overflow: hidden;
cursor: pointer;
outline-offset: 4px;
padding: 1.25rem 2.5rem;
font-family: inherit;
font-size: 1.125rem;
line-height: 1.2;
border: 1px solid transparent;
border-radius: 360px;
color: var(--shiny-cta-fg);
background: linear-gradient(var(--shiny-cta-bg), var(--shiny-cta-bg))
padding-box,
conic-gradient(
from calc(var(--gradient-angle) - var(--gradient-angle-offset)),
transparent,
var(--shiny-cta-highlight) var(--gradient-percent),
var(--gradient-shine) calc(var(--gradient-percent) * 2),
var(--shiny-cta-highlight) calc(var(--gradient-percent) * 3),
transparent calc(var(--gradient-percent) * 4)
)
border-box;
box-shadow: inset 0 0 0 1px var(--shiny-cta-bg-subtle);

&::before,
&::after,
span::before {
content: "";
pointer-events: none;
position: absolute;
inset-inline-start: 50%;
inset-block-start: 50%;
translate: -50% -50%;
z-index: -1;
}

&:active {
translate: 0 1px;
}
}

/* Dots pattern */
.shiny-cta::before {
--size: calc(100% - var(--shadow-size) * 3);
--position: 2px;
--space: calc(var(--position) * 2);
width: var(--size);
height: var(--size);
background: radial-gradient(
circle at var(--position) var(--position),
white calc(var(--position) / 4),
transparent 0
)
padding-box;
background-size: var(--space) var(--space);
background-repeat: space;
mask-image: conic-gradient(
from calc(var(--gradient-angle) + 45deg),
black,
transparent 10% 90%,
black
);
border-radius: inherit;
opacity: 0.4;
z-index: -1;
}

/* Inner shimmer */
.shiny-cta::after {
--animation: shimmer linear infinite;
width: 100%;
aspect-ratio: 1;
background: linear-gradient(
-50deg,
transparent,
var(--shiny-cta-highlight),
transparent
);
mask-image: radial-gradient(circle at bottom, transparent 40%, black);
opacity: 0.6;
}

.shiny-cta span {
z-index: 1;

&::before {
--size: calc(100% + 1rem);
width: var(--size);
height: var(--size);
box-shadow: inset 0 -1ex 2rem 4px var(--shiny-cta-highlight);
opacity: 0;
}
}

/* Animate */
.shiny-cta {
--transition: 800ms cubic-bezier(0.25, 1, 0.5, 1);
transition: var(--transition);
transition-property: --gradient-angle-offset, --gradient-percent,
--gradient-shine;

&,
&::before,
&::after {
animation: var(--animation) var(--duration),
var(--animation) calc(var(--duration) / 0.4) reverse paused;
animation-composition: add;
}

span::before {
transition: opacity var(--transition);
animation: calc(var(--duration) * 1.5) breathe linear infinite;
}
}

.shiny-cta:is(:hover, :focus-visible) {
--gradient-percent: 20%;
--gradient-angle-offset: 95deg;
--gradient-shine: var(--shiny-cta-highlight-subtle);

&,
&::before,
&::after {
animation-play-state: running;
}

span::before {
opacity: 1;
}
}

@keyframes gradient-angle {
to {
--gradient-angle: 360deg;
}
}

@keyframes shimmer {
to {
rotate: 360deg;
}
}

@keyframes breathe {
from,
to {
scale: 1;
}
50% {
scale: 1.2;
}
}

22 changes: 13 additions & 9 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,18 @@
<h2>Class Widgets</h2>
<p>全新桌面课表</p>
<div class="bottom">
<a href="https://classwidgets.lao-shui.top/download" target="_blank" class="pushButton primary">
<i class="icon-ic_fluent_arrow_download_20_filled"></i>
现在下载
</a>
<div class="links">
<a href="docs-user.html" class="link">使用文档</a>
<a href="contact.html" class="link">社区</a>
</div>
<button class="shiny-cta" id="downloadButton">
<span>现在下载</span>
</button>
<script>
document.getElementById('downloadButton').addEventListener('click', function() {
window.location.href = 'https://classwidgets.lao-shui.top/download';
});
</script>
<div class="links">
<a href="docs-user.html" class="link">使用文档</a>
<a href="contact.html" class="link">社区</a>
</div>
</div>
</div>
</div>
Expand Down Expand Up @@ -161,4 +165,4 @@ <h2>更多特性等你自行体验</h2>
<!-- footer -->
<div id="footer"></div> <!-- 用公共样式引入 -->
</body>
</html>
</html>