Skip to content

Commit

Permalink
started adding 3d effect to cardhover
Browse files Browse the repository at this point in the history
  • Loading branch information
Nerban committed Dec 13, 2023
1 parent 2d1d252 commit ae0d526
Show file tree
Hide file tree
Showing 6 changed files with 187 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/_data/packs.json
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@
},
{
"head": "Showcase Card",
"card": {"foil": false, "id":"9cd2b567-0cf7-4441-b3ce-e31141dd91c8"}
"card": {"foil": false, "id":"bf223d6d-c356-44f8-b332-90b0e4cb4c9c"}
},
{
"head": "Random Foil Card",
Expand Down
47 changes: 47 additions & 0 deletions src/_includes/3dEffect.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<script>
const $card = document.querySelector('.card');
let bounds;
function rotateToMouse(e) {
const mouseX = e.clientX;
const mouseY = e.clientY;
const leftX = mouseX - bounds.x;
const topY = mouseY - bounds.y;
const center = {
x: leftX - bounds.width / 2,
y: topY - bounds.height / 2
}
const distance = Math.sqrt(center.x**2 + center.y**2);
$card.style.transform = `
scale3d(1.07, 1.07, 1.07)
rotate3d(
${center.y / 100},
${-center.x / 100},
0,
${Math.log(distance)* 2}deg
)
`;
$card.querySelector('.glow').style.backgroundImage = `
radial-gradient(
circle at
${center.x * 2 + bounds.width/2}px
${center.y * 2 + bounds.height/2}px,
#ffffff55,
#0000000f
)
`;
}
$card.addEventListener('mouseenter', () => {
bounds = $card.getBoundingClientRect();
document.addEventListener('mousemove', rotateToMouse);
});
$card.addEventListener('mouseleave', () => {
document.removeEventListener('mousemove', rotateToMouse);
$card.style.transform = '';
$card.style.background = '';
});
</script>
23 changes: 23 additions & 0 deletions src/_includes/custom.njk
Original file line number Diff line number Diff line change
Expand Up @@ -199,4 +199,27 @@
.fragment.blur.visible {
filter: none;
}
* {
box-sizing: border-box;
}
.card {
position: relative;
transition-duration: 300ms;
transition-timing-function: ease-out;
transform: rotate3d(0);
}
.card:hover {
transition-duration: 150ms;
}
.card .glow {
background-image: radial-gradient(circle at 50% -20%, #ffffff22, #0000000f);
}
</style>
22 changes: 22 additions & 0 deletions src/_includes/slides/test.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{% set custom_id = "test12345"%}
<section data-transition="zoom" data-background-image="images/theme.jpg" data-background-opacity="0.2"
id="{{custom_id}}" scry="7d1e12de-de62-4e13-ad1a-43ef80ff4322">

<h3 >Artwork</h3>
<div class="r-stack mb-5">
<small class="fragment fade-out " data-fragment-index="1">???</small>
<a target="_blank" href="#">
<small
class="fragment fade-up title text-white hover:text-blue-200 "
data-fragment-index="1"></small>
</a>
</div>

<hr class="mx-5">
<div class="w-2/3 m-10 box aspect-[88/63] grid place-items-center relative r-stack rounded-3xl mx-auto drop-shadow
hover:drop-shadow-xl card bg-[url({{'../images/art/art1.png' | url }})] bg-cover overflow-clip">
<div class="glow w-full aspect-[88/63] "></div>

</div>

</section>
5 changes: 3 additions & 2 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<body>
<div class="reveal">
<div class="slides">
<!--{% include "slides/test.njk" %}-->
{% include "slides/start.njk" %}

{% for key,pack in packs%}
Expand All @@ -20,9 +21,9 @@

</div>
</div>
<div class="hidden rotate-90"></div>
<div class="hidden rotate-0"></div>


{%include "3dEffect.njk"%}
<script src="{{ 'assets/reveal/reveal.js' | url }}"></script>
<script src="{{ 'assets/reveal/plugin/highlight/highlight.js' | url }}"></script>
<script src="{{ 'assets/reveal/plugin/notes/notes.js' | url }}"></script>
Expand Down
97 changes: 91 additions & 6 deletions src/style/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -572,10 +572,23 @@ video {
z-index: 10;
}

.m-96 {
margin: 24rem;
}

.m-auto {
margin: auto;
}

.m-10 {
margin: 2.5rem;
}

.-mx-5 {
margin-left: -1.25rem;
margin-right: -1.25rem;
}

.mx-5 {
margin-left: 1.25rem;
margin-right: 1.25rem;
Expand All @@ -591,10 +604,28 @@ video {
margin-bottom: 1.25rem;
}

.my-24 {
margin-top: 6rem;
margin-bottom: 6rem;
}

.my-10 {
margin-top: 2.5rem;
margin-bottom: 2.5rem;
}

.mb-5 {
margin-bottom: 1.25rem;
}

.mb-40 {
margin-bottom: 10rem;
}

.mb-80 {
margin-bottom: 20rem;
}

.block {
display: block;
}
Expand All @@ -607,14 +638,38 @@ video {
display: none;
}

.aspect-auto {
aspect-ratio: auto;
}

.aspect-square {
aspect-ratio: 1 / 1;
}

.aspect-video {
aspect-ratio: 16 / 9;
}

.aspect-\[4\/3\] {
aspect-ratio: 4/3;
}

.aspect-\[88\/63\] {
aspect-ratio: 88/63;
}

.aspect-\[63\/88\] {
aspect-ratio: 63/88;
}

.h-full {
height: 100%;
}

.h-11 {
height: 2.75rem;
}

.w-1\/2 {
width: 50%;
}
Expand All @@ -631,14 +686,14 @@ video {
width: 100%;
}

.rotate-0 {
--tw-rotate: 0deg;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
.w-min {
width: -moz-min-content;
width: min-content;
}

.rotate-90 {
--tw-rotate: 90deg;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
.w-max {
width: -moz-max-content;
width: max-content;
}

.-scale-x-100 {
Expand Down Expand Up @@ -678,10 +733,18 @@ video {
place-items: center;
}

.content-stretch {
align-content: stretch;
}

.gap-5 {
gap: 1.25rem;
}

.overflow-clip {
overflow: clip;
}

.rounded-3xl {
border-radius: 1.5rem;
}
Expand Down Expand Up @@ -737,6 +800,18 @@ video {
--tw-bg-opacity: 0.75;
}

.bg-\[url\(\.\.\/images\/theme\.jpg\)\] {
background-image: url(../images/theme.jpg);
}

.bg-\[url\(\.\.\/images\/art\/art1\.png\)\] {
background-image: url(../images/art/art1.png);
}

.bg-\[url\(\.\.\/images\/art\/art2\.png\)\] {
background-image: url(../images/art/art2.png);
}

.bg-cover {
background-size: cover;
}
Expand Down Expand Up @@ -850,6 +925,11 @@ video {
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.drop-shadow {
--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06));
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.grayscale {
--tw-grayscale: grayscale(100%);
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
Expand Down Expand Up @@ -956,6 +1036,11 @@ video {
outline-style: solid;
}

.hover\:drop-shadow-xl:hover {
--tw-drop-shadow: drop-shadow(0 20px 13px rgb(0 0 0 / 0.03)) drop-shadow(0 8px 5px rgb(0 0 0 / 0.08));
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.group:hover .group-hover\:drop-shadow-lg {
--tw-drop-shadow: drop-shadow(0 10px 8px rgb(0 0 0 / 0.04)) drop-shadow(0 4px 3px rgb(0 0 0 / 0.1));
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
Expand Down

0 comments on commit ae0d526

Please sign in to comment.