Mattias Bodlund 4 months ago
parent
commit
170229675d
2 changed files with 46 additions and 8 deletions
  1. +2
    -2
      app/assets/stylesheets/application.css
  2. +44
    -6
      app/javascript/application.js

+ 2
- 2
app/assets/stylesheets/application.css View File

@ -553,11 +553,11 @@ main {
line-height: 1.3; line-height: 1.3;
align-self: end; align-self: end;
/*min-height: 160px;*/
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
gap: 0;
transition: background-color 200ms ease-in-out, color 200ms ease-in-out; transition: background-color 200ms ease-in-out, color 200ms ease-in-out;


+ 44
- 6
app/javascript/application.js View File

@ -203,13 +203,13 @@ function animateElementsSequentially(index = 0) {
const relativePercentage = (percentage / maxPercentage) * 100 const relativePercentage = (percentage / maxPercentage) * 100
const calculatedHeight = (relativePercentage / 100) * containerHeight const calculatedHeight = (relativePercentage / 100) * containerHeight
const computedStyle = window.getComputedStyle(bar)
const minHeight = parseInt(computedStyle.minHeight) || 0
const minHeight = getNaturalHeight(bar)
let finalMinHeight = minHeight let finalMinHeight = minHeight
if (bar.querySelector('.explanation')) {
finalMinHeight = Math.max(minHeight, 160)
}
// if (bar.querySelector('.explanation')) {
// finalMinHeight = Math.max(minHeight, 160)
// }
targetHeights[i] = Math.max(calculatedHeight, finalMinHeight) targetHeights[i] = Math.max(calculatedHeight, finalMinHeight)
}) })
@ -541,4 +541,42 @@ function typeWriterConsoleSequential(container, options = {}) {
get isActive() { return isActive } get isActive() { return isActive }
} }
}
}
function getNaturalHeight(el) {
// Save original inline styles
const prevParent = {
display: el.style.display,
visibility: el.style.visibility
};
// Apply temporary styles to parent
el.style.display = "flex";
// Also handle hidden children
const childPrev = [];
for (let child of el.children) {
childPrev.push({
display: child.style.display,
visibility: child.style.visibility,
position: child.style.position
});
child.style.display = "block"; // let CSS decide
}
// Measure
const height = el.scrollHeight;
// Restore child styles
Array.from(el.children).forEach((child, i) => {
Object.assign(child.style, childPrev[i]);
});
// Restore parent styles
Object.assign(el.style, prevParent);
return height;
}

Loading…
Cancel
Save