Compare commits
8 Commits
e507a0ed25
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| e91bd457b5 | |||
| 6e4e54cb2d | |||
| 735cb3102d | |||
| 7ec3eb9abb | |||
| 9957c0d5b8 | |||
| 5f29d9c2ba | |||
| 022a6d78ee | |||
| 1bf823acbc |
@@ -1,3 +1,18 @@
|
|||||||
|
// fix iOS fixed backgrounds in Safari versions past 2012
|
||||||
|
const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
|
||||||
|
|
||||||
|
if (isIOS) {
|
||||||
|
window.addEventListener('scroll', () => {
|
||||||
|
document.querySelectorAll('.blurgreen, .listenbuy').forEach(div => {
|
||||||
|
const rect = div.getBoundingClientRect();
|
||||||
|
const scrollOffsetY = rect.top * -1;
|
||||||
|
const scrollOffsetX = rect.left * -1;
|
||||||
|
div.style.backgroundAttachment = `scroll`;
|
||||||
|
div.style.backgroundPosition = `${scrollOffsetX}px ${scrollOffsetY}px`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// gif player
|
// gif player
|
||||||
document.querySelectorAll('.paused-animation').forEach(el => {
|
document.querySelectorAll('.paused-animation').forEach(el => {
|
||||||
el.addEventListener('click', () => {
|
el.addEventListener('click', () => {
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 45 KiB |
@@ -25,8 +25,6 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div id="background_wrap"></div>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
<div id="wrapper">
|
||||||
<header id="greeting" class="sidebaritem headlineshadow">
|
<header id="greeting" class="sidebaritem headlineshadow">
|
||||||
<div id="icosahedron-container"></div>
|
<div id="icosahedron-container"></div>
|
||||||
|
|||||||
@@ -23,8 +23,6 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div id="background_wrap"></div>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
<div id="wrapper">
|
||||||
<header id="greeting" class="sidebaritem headlineshadow">
|
<header id="greeting" class="sidebaritem headlineshadow">
|
||||||
<div id="icosahedron-container"></div>
|
<div id="icosahedron-container"></div>
|
||||||
@@ -61,11 +59,11 @@
|
|||||||
<p>between 2013 and 2020 I've created <a href="https://git.broken.graphics/explore/repos?q=watchface" target="_blank">serveral watchfaces</a> for all pebble smartwatch models as well as fitbit smartwatches.</p>
|
<p>between 2013 and 2020 I've created <a href="https://git.broken.graphics/explore/repos?q=watchface" target="_blank">serveral watchfaces</a> for all pebble smartwatch models as well as fitbit smartwatches.</p>
|
||||||
<p>these watchfaces have been designed with usability concepts in mind respecting interaction capabilities and screen space constraints. that includes motion gestures, adaptive display of stats based on activity and deep configurability via the user's smartphone.</p>
|
<p>these watchfaces have been designed with usability concepts in mind respecting interaction capabilities and screen space constraints. that includes motion gestures, adaptive display of stats based on activity and deep configurability via the user's smartphone.</p>
|
||||||
<iframe class="watchface-video" width="445" height="445" src="https://www.youtube.com/embed/_vG2ZFeQobg?si=Ys78wYEozPAy3eoC" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
<iframe class="watchface-video" width="445" height="445" src="https://www.youtube.com/embed/_vG2ZFeQobg?si=Ys78wYEozPAy3eoC" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||||
<iframe width="445" height="445" src="https://www.youtube.com/embed/EjgYxUxGvdI?si=eBT5P9vRsDyyNALU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
<iframe class="watchface-video" width="445" height="445" src="https://www.youtube.com/embed/EjgYxUxGvdI?si=eBT5P9vRsDyyNALU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||||
</article>
|
</article>
|
||||||
<article id="yana">
|
<article id="yana">
|
||||||
<h2><span class="halfbubble blurgreen"></span><em>yana</em> UX/UI and graphic design</h2>
|
<h2><span class="halfbubble blurgreen"></span><em>yana</em> UX/UI and graphic design</h2>
|
||||||
<img class="watchface" src="img/experiments/yana-logo-v2.svg" width="200" height="200" alt="blue food bowl icon with crossed chopsticks below it and a violet flame above" />
|
<img class="half-right yana-logo" src="img/experiments/yana-logo-v2.svg" width="200" height="200" alt="blue food bowl icon with crossed chopsticks below it and a violet flame above" />
|
||||||
<p>yana is a work-in-progress calorie and nutrition tracking application for android.</p>
|
<p>yana is a work-in-progress calorie and nutrition tracking application for android.</p>
|
||||||
<p>unfortunately there's not a lot to show as of yet. please stay tuned for more.</p>
|
<p>unfortunately there's not a lot to show as of yet. please stay tuned for more.</p>
|
||||||
</article>
|
</article>
|
||||||
|
|||||||
@@ -406,6 +406,7 @@ a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
|
font-size: 0.95em;
|
||||||
margin-bottom: 0.6em;
|
margin-bottom: 0.6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -456,10 +457,24 @@ textarea:-moz-placeholder {
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: black;
|
background-color: black;
|
||||||
/* background-image: url('img/bg.webp'); */
|
backface-visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
body::before {
|
||||||
|
content: '';
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
z-index: -1;
|
||||||
|
background-image: url('img/bg.webp');
|
||||||
|
background-size: 1572px 803px;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: top left;
|
background-position: top left;
|
||||||
background-attachment: fixed;
|
background-attachment: local;
|
||||||
|
pointer-events: none;
|
||||||
|
will-change: transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
.elementshadow {
|
.elementshadow {
|
||||||
@@ -479,21 +494,6 @@ a {
|
|||||||
transition: all 0.2s ease-in-out;
|
transition: all 0.2s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
#background_wrap {
|
|
||||||
z-index: -1;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
background-image: url('img/bg.webp');
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: top left;
|
|
||||||
background-attachment: fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Alternative solution without adding a container */
|
|
||||||
|
|
||||||
#wrapper {
|
#wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
@@ -505,7 +505,6 @@ a {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mobile layout (default) - Elements stacked in desired order */
|
|
||||||
#greeting {
|
#greeting {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
order: 1;
|
order: 1;
|
||||||
@@ -774,15 +773,25 @@ div.opaque h2 span.halfbubble {
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.watchface {
|
.watchface, .half-left, .half-right {
|
||||||
width: calc((100% / 2) - 0.6rem);
|
width: calc((100% / 2) - 0.6rem);
|
||||||
margin: 0.325rem 0.3rem;
|
margin: 0.325rem 0.3rem;
|
||||||
height: auto;
|
height: auto;
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
.half-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
.watchface-video {
|
.watchface-video {
|
||||||
margin: 0.6rem 0;
|
margin: 0.6rem 0;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
aspect-ratio: 1/1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.yana-logo {
|
||||||
|
margin-top: -0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* music */
|
/* music */
|
||||||
@@ -828,6 +837,7 @@ article.album .listenbuy {
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
background-color: var(--button-color-hover);
|
background-color: var(--button-color-hover);
|
||||||
background-image: url('img/bg_blur.webp');
|
background-image: url('img/bg_blur.webp');
|
||||||
|
background-size: 1572px 803px;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
transition: opacity 0.25s, margin 0.25s, height 0.25s;
|
transition: opacity 0.25s, margin 0.25s, height 0.25s;
|
||||||
@@ -844,10 +854,6 @@ article.album a:hover .listenbuy {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
article.album a .listenbuy:hover {
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
img.albumcover {
|
img.albumcover {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: auto;
|
width: auto;
|
||||||
@@ -943,13 +949,17 @@ article.album a:hover {
|
|||||||
|
|
||||||
.blurgreen {
|
.blurgreen {
|
||||||
background-color: #1e3f2d;
|
background-color: #1e3f2d;
|
||||||
|
color: white;
|
||||||
background-image: url('img/bg_blur.webp');
|
background-image: url('img/bg_blur.webp');
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
color: white;
|
background-size: 1572px 803px;
|
||||||
|
border-top: 1px solid rgba(80,220,200,0.5);
|
||||||
|
border-left: 1px solid rgba(80,220,200,0.25);
|
||||||
|
border-bottom: 1px solid rgba(0,90,100,0.5);
|
||||||
|
border-right: 1px solid rgba(0,90,100,0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Print styles
|
/* Print styles
|
||||||
-------------------------------------------------------------------------------*/
|
-------------------------------------------------------------------------------*/
|
||||||
@media print {}
|
@media print {}
|
||||||
@@ -1012,15 +1022,15 @@ article.album a:hover {
|
|||||||
padding: 0 1em;
|
padding: 0 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#background_wrap {
|
|
||||||
background-size: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
article.album a .listenbuy {
|
article.album a .listenbuy {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
article.album .listenbuy, .blurgreen, body::before {
|
||||||
|
background-size: 1179px 602px;
|
||||||
|
}
|
||||||
|
|
||||||
article.album a {
|
article.album a {
|
||||||
height: 160px;
|
height: 160px;
|
||||||
}
|
}
|
||||||
@@ -1067,6 +1077,10 @@ article.album a:hover {
|
|||||||
.sidebaritem#findme .line3 {
|
.sidebaritem#findme .line3 {
|
||||||
margin-top: 0.2em;
|
margin-top: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sidebaritem#findme .line4 {
|
||||||
|
margin-top: 0.4em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Media query for hoverless */
|
/* Media query for hoverless */
|
||||||
|
|||||||
BIN
src/bg_blur.afphoto
Normal file
BIN
src/bg_blur.afphoto
Normal file
Binary file not shown.
BIN
src/bg_blur2.jpg
Normal file
BIN
src/bg_blur2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
Reference in New Issue
Block a user