Completed v3

- layout change, reorganized elements and duplicated graphic to avoid using z-index which did not function in OBS browser sources - DO NOT REMOVE DUPLICATE HEART GRAPHIC -

- animation!!! + more wrappers to split up static vs dynamic effects

- temp legacy versions for easier comparisons (no-bold and uniform-font html+css)

- js content tweaks to maintain parity with layout template
This commit is contained in:
2025-10-31 18:50:34 -04:00
parent 1f49e82035
commit 960c037362
7 changed files with 750 additions and 109 deletions

133
timer.css
View File

@@ -14,6 +14,7 @@ html, body {
padding: 0;
font-family: 'Inter', sans-serif;
background-color: var(--background-color);
background-color: transparent;
overflow: hidden;
}
@@ -36,6 +37,7 @@ h2 {
margin: 0;
font-size: 1.4em;
color: #404145;
font-weight: normal;
}
h3 {
@@ -47,19 +49,26 @@ h3 {
p {
margin: 0;
font-size: 1em;
font-size: 1.4em;
line-height: 95%;
}
.contentContainer {
.contentContainer {
height: fit-content;
width: fit-content;
position: relative;
text-align: center;
}
#MainHeart {
.mainHeart {
max-height: 100vh;
max-width: 100vw;
max-width: 75vw;
}
#SecondHeart {
position: absolute;
top: 0px;
left: 0px;
}
.infoWrap {
@@ -71,16 +80,12 @@ p {
top: 0px;
display: grid;
grid-template-columns: 56% 34% 1fr;
/*
grid-template-rows: 11% 28% 16% 16% 1fr;
*/
grid-template-rows: 11% 1fr 29%;
place-items: center;
text-wrap: nowrap;
}
.infoGroup {
display: block;
height: 100%;
width: 100%;
grid-column-start: 2;
@@ -92,68 +97,50 @@ p {
.infoBox {
height: auto;
width: 100%;
/*
display: grid;
grid-template-columns: repeat(1, 1fr);
grid-auto-rows: auto;
place-items: center;
*/
font-size: 4cqh;
transform: translate(12%, -68%);
}
#InfoBox1 {
margin-top: 4cqh;
/*
justify-self: left;
align-self: stretch;
*/
/*
transform: translate(-8%, 5%);
*/
}
#InfoBox2 {
/*
display: grid;
width: 100%;
justify-self: left;
align-self: stretch;
*/
transform: translate(0%, -12%);
transform: translate(-1%, -88%);
}
#InfoBox3 {
grid-template-columns: 1fr;
grid-template-rows: 1fr 23% 23% 23%;
transform: translate(0%, -16%) scale(1, 1);
/*
justify-self: left;
align-self: stretch;
transform: translate(0%, -32%);
*/
width: 110%;
position: relative;
transform: translate(88%, 25%) scale(1, 1);
border-radius: 3cqh;
border: .4cqh solid;
border-color: #00A0F3;
background-color: white;
}
#Timer {
transform: translate(-9%, 3%) scale(.95, 1.2);
margin-top: 10%;
margin-bottom: 2%;
transform: translate(-7.5%, 3%) scale(.95, 1.2);
}
#TimerInfo {
transform: translate(0%, -60%);
font-size: 1em;
display: none;
}
#GoalLabel {
transform: translate(5%, 0%) scale(1.05, 1.2);
transform: translate(5%, 0%) scale(1);
color: #404145;
}
#GoalName {
width: 100%;
transform: translate(8%, -10%) scale(1, 1.4);
width: fit-content;
position: relative;
color: #32B993;
text-wrap: nowrap;
overflow: hidden;
mask-image: linear-gradient(to right, black 85%, transparent 100%);
animation: myScroll 12s linear infinite;
}
#GoalProgressWrap {
@@ -164,24 +151,23 @@ p {
border-radius: 3cqh;
border: .4cqh solid;
border-color: #404145;
margin: 0 auto 0 auto;
margin: 0 auto .8cqh auto;
}
#GoalProgress {
transform: translate(0%, -8%) scale(1, 1.4);
font-size: 1.3em;
transform: translate(0%, -8%) scale(1);
text-align: center;
font-weight: bold;
}
#TopUsers {
transform: translate(6%, 0%) scale(1.2, 1.2);
margin-bottom: 2%;
transform: translate(0%, 0%) scale(1);
font-weight: normal;
font-size: 1.1em;
color: #404145;
}
.giftUserWrap {
transform: translate(18%, -8%) scale(1, 1);
transform: translate(11%, -8%) scale(1, 1);
}
.giftUserRow {
@@ -191,29 +177,52 @@ p {
grid-template-rows: 1fr;
text-wrap: nowrap;
overflow: hidden;
text-align: left;
justify-self: left;
text-align: center;
transform: translate(0%, 0%) scale(1, 1.2);
font-size: 1.4em;
line-height: 90%;
transform: translate(0%, 0%) scale(1, 1);
}
.giftUserName {
width: fit-content;
margin-left: 0%;
position: relative;
color: #32B993;
text-align: left;
}
#GiftUserName1 {
width: 24cqw;
mask-image: linear-gradient(to right, black 85%, transparent 100%);
animation: myScroll 9s linear infinite;
}
#GiftUserName2 {
width: 20cqw;
mask-image: linear-gradient(to right, black 75%, transparent 100%);
animation: myScroll 9s 3s linear infinite;
}
#GiftUserName3 {
width: 14cqw;
mask-image: linear-gradient(to right, black 60%, transparent 100%);
animation: myScroll 9s 6s linear infinite;
}
.scrollWrap {
width: 100%;
mask-image: linear-gradient(to right, transparent 0%, black 5%, black 85%, transparent 100%);
}
#ScrollWrapGoal {
transform: translate(8%, -10%) scale(1);
}
.scrollWrapName {
}
.scrollWrapW {
width: fit-content;
}
#ScrollWrapGoalW {
}
@keyframes myScroll {
0% {left: 0%; top: 0%;}
10% {left: 0%; top: 0%;}
85% {left: -100%; top: 0%;}
89.99% {left: -100%; top: 0%;}
90% {left: 0%; top: 100%;}
100% {left: 0%; top: 0%;}
}