Tailwind CSS: Using a fixed header & footer, text content is being cropped on mobile devices - vue.js

I have made a sandbox example of what I need: https://codesandbox.io/s/vue-tailwind-css-template-forked-7uhkgl?file=/src/App.vue
<div class="flex h-screen flex-col">
<header class="sticky top-0 h-12 w-full bg-white">header</header>
<main class="h-screen overflow-scroll bg-blue-200 p-4">
<div class="h-full rounded-xl bg-green-200 p-4">
<p class="h-full overflow-scroll rounded-xl p-4">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ipsa dicta quasi, fugit aperiam quis laudantium dolorem libero mollitia provident maxime odio. Sint dolore libero magnam atque dolorem ex pariatur voluptatum. Alias eos amet quis, nostrum explicabo excepturi, odio perspiciatis omnis sunt mollitia reiciendis ut ipsa doloremque! Ut, rem fugiat impedit, iusto, nam repellat labore aspernatur vero ad ducimus numquam veritatis. Tenetur iure voluptatem sint quo ut qui rerum pariatur officiis exercitationem? Harum exercitationem suscipit hic soluta deleniti doloremque ullam temporibus quis, magnam rerum velit laudantium illum quidem animi blanditiis ducimus. Aliquam excepturi dolores temporibus ducimus voluptatem ullam maiores nihil adipisci quo debitis! Quo, atque voluptatibus laboriosam minus nulla hic rerum, eaque dicta modi quidem beatae officia, temporibus eligendi fugiat animi. Nihil quos, sed fugiat sunt vel suscipit similique libero aut deleniti at soluta rem iure dolores sapiente tempore iste accusantium, impedit quisquam molestiae eos asperiores cumque tenetur eveniet ullam? Aut. Distinctio alias nemo fugiat explicabo eaque tenetur unde maxime laborum reiciendis voluptas maiores incidunt dolorum expedita, dolore hic consequuntur provident laudantium porro? Quas unde dolorem, quidem numquam quis vero quam. Ex quibusdam labore voluptatum rerum obcaecati! Sed unde incidunt, laudantium animi pariatur accusamus laboriosam dolores vero aliquam alias quis eos sapiente distinctio deleniti quidem modi ipsam? Illo voluptatibus fugit ducimus! Eius adipisci laborum eum tenetur. Explicabo animi temporibus neque doloremque laboriosam assumenda maxime, veritatis autem? Odio consequuntur quasi dignissimos accusamus, fuga temporibus labore architecto esse sed fugiat asperiores sapiente. Vel! Dicta veniam tempore consequuntur, aliquam ratione, quidem eaque id aspernatur quis voluptatum voluptas a in quibusdam voluptate quaerat sequi saepe animi accusantium nihil optio, porro esse. Officia eius quaerat officiis. Architecto aliquid, et vero tempore consequuntur deleniti reprehenderit expedita voluptatum totam ipsam similique praesentium numquam? Molestiae itaque, nobis harum, dolores quibusdam mollitia ex labore in magni sit, iure quo necessitatibus. Architecto fugiat, eius labore natus commodi nostrum ipsam, sequi nobis possimus ducimus ipsa? Expedita vero doloremque tenetur dolore ipsum at ea eligendi quos incidunt ut quibusdam eveniet nostrum, fuga optio? Libero cum a repellendus tempora facere aliquam animi ipsam perferendis nostrum! Quidem ducimus eaque fugit culpa accusantium, temporibus harum soluta hic quae maxime tempore eos, sed magni veniam atque est! Error obcaecati quasi sequi explicabo quas magni fugit possimus, temporibus animi nemo minima. Accusamus illum enim, fuga odit reprehenderit dolore, inventore nisi amet aperiam molestiae eaque maxime voluptates asperiores voluptas. Laboriosam sint ducimus tempora reprehenderit neque corrupti consectetur et possimus esse quas dicta maxime quis autem cupiditate, quaerat doloribus doloremque aliquid quae alias iusto, quisquam natus illo eum mollitia. Nihil! Aspernatur natus velit delectus eaque dolore cupiditate ipsa doloribus atque voluptatem iure sequi inventore odio vitae at, dolorem dolor quo quibusdam quod voluptatibus quas molestiae tenetur? Illum minus corporis incidunt. Fuga, nam unde. Magni nobis similique minus, quae itaque reprehenderit nulla ex suscipit voluptate quos distinctio, est placeat accusamus blanditiis cumque labore, soluta impedit. In aliquam consequatur exercitationem provident rerum? Voluptatem repudiandae magnam sed nulla cupiditate corporis debitis at fuga similique inventore impedit quae alias, dolores error dicta, iure ipsam velit. Tempora eaque deleniti at nam ad obcaecati fugit ullam? Minus aut soluta neque quod sunt suscipit tempora! Nulla quisquam dolorem assumenda dolor optio ratione aperiam sunt iste blanditiis. Ex minus, enim nulla voluptatum veniam animi amet qui deserunt sequi. Praesentium in ratione qui animi deleniti, id similique fugit quas veniam ipsam iusto nemo! Corporis consequuntur, autem nisi quasi facilis saepe reiciendis nesciunt qui facere laudantium, in, eos ad voluptatum! Aliquid laudantium, ab debitis atque praesentium quia quaerat alias, quo repellat et obcaecati dolore assumenda aperiam? Facere tempora autem deserunt nam, at nihil rem, eius quis adipisci eligendi, esse consectetur!</p>
</div>
</main>
<footer class="sticky bottom-0 h-12 w-full bg-white">footer</footer>
</div>
Everything is fine until I try this on real mobile device, then the main content is a bit cropped and it is not what I want.
This is what I got:
My project is in Vue3.

If you are using flex-col, you don't need to use sticky or absolute positioning for your header and footer. They just need to be stacked inside the flex and your content section set to flex-1 to take up all of the available remaining vertical space. adding overflow-hidden on <main> and moving the scrollbar into the green container should fix the scrollbar issue. For example:
<template>
<div class="flex h-screen flex-col">
<header class="h-12 w-full bg-white">header</header>
<main class="flex-1 bg-blue-200 p-4 overflow-hidden">
<div class="h-full rounded-xl bg-green-200 p-4 overflow-y-scroll ">
<p class="h-full rounded-xl p-4">
...
</p>
</div>
</main>
<footer class="h-12 w-full bg-white">footer</footer>
</div>
</template>
This removes the h-space from your content wrapper which will hopefully resolve the issue you are seeing on mobile devices.
Also, replacing overflow-scroll with overflow-y-scroll will get rid of the internal horizontal scrollbar.

Related

First page after titlepage (with titlepage extension) with too large bottom margin in Quarto for pdf

I am working with Quarto to create a pdf document from rstudio. I use the quarto_titlepages extension to create a title page, which is followed by a text of several pages. The first one of these pages is shown with a very large bottom margin, which is probably a heritage of the title page. However, this only happens with the bottom margin and not with the top one.
I tried re-stablishing the margins in the pdf format section with margin-left, margin-right, margin-bottom and margin-top. Then I tried the same approach but using geometry instead. None of the two options worked.
Here is the code with margin-top and so on.
---
title: "Here we have a title, not too long"
author: "First Author and Second Author"
date: last-modified
date-format: "d-MMMM-YYYY"
lang: "es"
format:
titlepage-pdf:
documentclass: scrreport
titlepage: plain
titlepage-geometry:
- top=90mm
- bottom=60mm
- right=30mm
- left=30mm
titlepage-logo: "images/anyimages.png"
titlepage-bg-image: "images/anyimage2.png"
titlepage-theme:
elements: ["\\titleblock", "\\logoblock", "\\authorblock", "(some additional information)" ]
page-fontfamily: "Helvetica Neue"
page-align: center
title-fontsize: 30
title-align: center
title-fontstyle: []
title-space-after: 3cm
author-fontsize: 16
author-style: plain
logo-align: center
logo-size: 4cm
logo-space-after: 4cm
bg-image-location: "ULCorner"
bg-image-size: 21cm
pdf:
# Fonts
mainfont: Helvetica Neue
fontsize: 12pt
papersize: A4
margin-top: 25mm
margin-bottom: 25mm
margin-left: 25mm
margin-right: 25mm
toc: true
toc-depth: 2
toc-title: Táboa de contidos
editor: visual
---
## Introdución
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nec condimentum eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed congue tellus at vehicula interdum. Vivamus dapibus ante vitae rhoncus posuere. Ut ut ipsum nisl. Nullam luctus viverra augue id feugiat. Fusce sollicitudin sed massa eget blandit. Pellentesque tempus lacinia metus, nec facilisis massa varius eget. Proin in felis sed arcu faucibus scelerisque. Sed hendrerit tortor nisl, sed mattis lectus luctus at. Nulla et lorem ac est venenatis posuere. Vivamus eget vehicula purus, sit amet mollis nunc. Phasellus pellentesque nisi eu porttitor egestas. Aliquam a aliquam lectus, eu iaculis mauris.
Suspendisse eu gravida orci. Suspendisse vehicula sagittis libero quis lobortis. Suspendisse potenti. Sed imperdiet ligula eu tellus tincidunt rutrum. Vivamus vel nibh vel lacus efficitur tempus. Maecenas sit amet erat at sapien blandit congue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus vel nunc hendrerit, venenatis sapien nec, commodo libero. Ut vehicula porta euismod. Vivamus eu dolor neque. Mauris a dui faucibus, elementum dui nec, condimentum nibh.
Etiam aliquam, arcu eget ornare elementum, leo magna sollicitudin augue, vel dapibus lectus nisi ac ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec semper lacus mauris, ac maximus lectus volutpat nec. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed interdum, velit non sollicitudin volutpat, purus tellus aliquam lacus, et scelerisque ex nisi et ex. Vivamus porta purus ac mauris placerat, venenatis suscipit augue accumsan. Cras consequat dapibus efficitur.
Phasellus diam felis, condimentum vitae diam nec, tincidunt bibendum elit. Donec condimentum, orci in euismod vestibulum, sapien massa maximus lectus, vel interdum magna magna non lectus. Integer vitae nunc nec urna feugiat venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent sapien velit, molestie nec molestie vel, sodales at mauris. Maecenas accumsan malesuada ipsum eget pellentesque. Nam aliquet leo sit amet felis facilisis facilisis. Vivamus aliquam iaculis eros, non bibendum elit convallis ut. Quisque ut varius arcu. Vivamus pellentesque nisi vitae nisi vulputate, quis dapibus est efficitur. Aenean eget ipsum in lorem aliquet efficitur aliquet a est. In sit amet vehicula eros. Donec dui nulla, ultrices ut nisi non, ornare viverra ante.
Proin facilisis sit amet velit placerat porttitor. In congue risus id tempus congue. Cras rutrum justo at ultricies faucibus. Ut sed turpis nec nulla malesuada feugiat sed eu risus. In mattis eu tellus sit amet commodo. Nam molestie vulputate ullamcorper. Curabitur egestas ligula ut urna blandit faucibus.
And this is what I get in the two pages after the title page
UPDATE
I solved it partially, by following samcarter_is_at_topanswers.xyz's advice (using \restoregeometry). Then I realized that it was not only geometry, but I was also losing all other formats detailed under pdf:. To solve it I erased the pdf: line; that is, all pdf formats should directly go under "titlepage-pdf:". But, again, by doing so, the first page appeard with a large bottom margin, even when using \restoregeometry.
This is my code now:
---
title: "Here we have a title"
author: "Author 1 with surname & Author 2 with surname"
date: last-modified
date-format: "d-MMMM-YYYY"
lang: "es"
format:
titlepage-pdf:
documentclass: scrreport
titlepage: plain
titlepage-geometry:
- top=90mm
- bottom=60mm
- right=30mm
- left=30mm
titlepage-logo: "images/circularNegro.png"
titlepage-bg-image: "images/OsTres.png"
titlepage-theme:
elements: ["\\titleblock", "\\logoblock", "\\authorblock", "(some additional text)" ]
page-fontfamily: "Helvetica Neue"
page-align: center
title-fontsize: 30
title-align: center
title-fontstyle: []
title-space-after: 3cm
author-fontsize: 16
author-style: plain
logo-align: center
logo-size: 4cm
logo-space-after: 4cm
bg-image-location: "ULCorner"
bg-image-size: 21cm
# Fonts
mainfont: Helvetica Neue
fontsize: 12pt
papersize: A4
margin-top: 25mm
margin-bottom: 25mm
margin-left: 25mm
margin-right: 25mm
toc: true
toc-depth: 2
toc-title: Táboa de contidos
editor: visual
---
\restoregeometry
## Introdución
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nec condimentum eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed congue tellus at vehicula interdum. Vivamus dapibus ante vitae rhoncus posuere. Ut ut ipsum nisl. Nullam luctus viverra augue id feugiat. Fusce sollicitudin sed massa eget blandit. Pellentesque tempus lacinia metus, nec facilisis massa varius eget. Proin in felis sed arcu faucibus scelerisque. Sed hendrerit tortor nisl, sed mattis lectus luctus at. Nulla et lorem ac est venenatis posuere. Vivamus eget vehicula purus, sit amet mollis nunc. Phasellus pellentesque nisi eu porttitor egestas. Aliquam a aliquam lectus, eu iaculis mauris.
Suspendisse eu gravida orci. Suspendisse vehicula sagittis libero quis lobortis. Suspendisse potenti. Sed imperdiet ligula eu tellus tincidunt rutrum. Vivamus vel nibh vel lacus efficitur tempus. Maecenas sit amet erat at sapien blandit congue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus vel nunc hendrerit, venenatis sapien nec, commodo libero. Ut vehicula porta euismod. Vivamus eu dolor neque. Mauris a dui faucibus, elementum dui nec, condimentum nibh.
Etiam aliquam, arcu eget ornare elementum, leo magna sollicitudin augue, vel dapibus lectus nisi ac ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec semper lacus mauris, ac maximus lectus volutpat nec. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed interdum, velit non sollicitudin volutpat, purus tellus aliquam lacus, et scelerisque ex nisi et ex. Vivamus porta purus ac mauris placerat, venenatis suscipit augue accumsan. Cras consequat dapibus efficitur.
Phasellus diam felis, condimentum vitae diam nec, tincidunt bibendum elit. Donec condimentum, orci in euismod vestibulum, sapien massa maximus lectus, vel interdum magna magna non lectus. Integer vitae nunc nec urna feugiat venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent sapien velit, molestie nec molestie vel, sodales at mauris. Maecenas accumsan malesuada ipsum eget pellentesque. Nam aliquet leo sit amet felis facilisis facilisis. Vivamus aliquam iaculis eros, non bibendum elit convallis ut. Quisque ut varius arcu. Vivamus pellentesque nisi vitae nisi vulputate, quis dapibus est efficitur. Aenean eget ipsum in lorem aliquet efficitur aliquet a est. In sit amet vehicula eros. Donec dui nulla, ultrices ut nisi non, ornare viverra ante.
Proin facilisis sit amet velit placerat porttitor. In congue risus id tempus congue. Cras rutrum justo at ultricies faucibus. Ut sed turpis nec nulla malesuada feugiat sed eu risus. In mattis eu tellus sit amet commodo. Nam molestie vulputate ullamcorper. Curabitur egestas ligula ut urna blandit faucibus.
And this is what I get:
The problem is that quarto and/or the titlepage extension issues \restoregeometry at the wrong place. If one looks at the intermediate .tex file, one will see code like this:
...
\clearpage
\restoregeometry
%%% TITLE PAGE END
\end{titlepage}
...
However \restoregeometry needs to be used after the title page is closed (it would also make more sense to have the \clearpage after the title page...)
You can work around it my manually adding one more \restoregeometry before your text:
---
title: "Here we have a title, not too long"
author: "First Author and Second Author"
date: last-modified
date-format: "d-MMMM-YYYY"
lang: "es"
format:
titlepage-pdf:
documentclass: scrreport
titlepage: plain
titlepage-geometry:
- top=90mm
- bottom=60mm
- right=30mm
- left=30mm
titlepage-logo: "example-image-duck"
titlepage-bg-image: "example-image-duck"
titlepage-theme:
elements: ["\\titleblock", "\\logoblock", "\\authorblock", "(some additional information)" ]
page-fontfamily: "Helvetica Neue"
page-align: center
title-fontsize: 30
title-align: center
title-fontstyle: []
title-space-after: 3cm
author-fontsize: 16
author-style: plain
logo-align: center
logo-size: 4cm
logo-space-after: 4cm
bg-image-location: "ULCorner"
bg-image-size: 21cm
editor: visual
---
\restoregeometry
## Introdución
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nec condimentum eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed congue tellus at vehicula interdum. Vivamus dapibus ante vitae rhoncus posuere. Ut ut ipsum nisl. Nullam luctus viverra augue id feugiat. Fusce sollicitudin sed massa eget blandit. Pellentesque tempus lacinia metus, nec facilisis massa varius eget. Proin in felis sed arcu faucibus scelerisque. Sed hendrerit tortor nisl, sed mattis lectus luctus at. Nulla et lorem ac est venenatis posuere. Vivamus eget vehicula purus, sit amet mollis nunc. Phasellus pellentesque nisi eu porttitor egestas. Aliquam a aliquam lectus, eu iaculis mauris.
Suspendisse eu gravida orci. Suspendisse vehicula sagittis libero quis lobortis. Suspendisse potenti. Sed imperdiet ligula eu tellus tincidunt rutrum. Vivamus vel nibh vel lacus efficitur tempus. Maecenas sit amet erat at sapien blandit congue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus vel nunc hendrerit, venenatis sapien nec, commodo libero. Ut vehicula porta euismod. Vivamus eu dolor neque. Mauris a dui faucibus, elementum dui nec, condimentum nibh.
Etiam aliquam, arcu eget ornare elementum, leo magna sollicitudin augue, vel dapibus lectus nisi ac ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec semper lacus mauris, ac maximus lectus volutpat nec. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed interdum, velit non sollicitudin volutpat, purus tellus aliquam lacus, et scelerisque ex nisi et ex. Vivamus porta purus ac mauris placerat, venenatis suscipit augue accumsan. Cras consequat dapibus efficitur.
Phasellus diam felis, condimentum vitae diam nec, tincidunt bibendum elit. Donec condimentum, orci in euismod vestibulum, sapien massa maximus lectus, vel interdum magna magna non lectus. Integer vitae nunc nec urna feugiat venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent sapien velit, molestie nec molestie vel, sodales at mauris. Maecenas accumsan malesuada ipsum eget pellentesque. Nam aliquet leo sit amet felis facilisis facilisis. Vivamus aliquam iaculis eros, non bibendum elit convallis ut. Quisque ut varius arcu. Vivamus pellentesque nisi vitae nisi vulputate, quis dapibus est efficitur. Aenean eget ipsum in lorem aliquet efficitur aliquet a est. In sit amet vehicula eros. Donec dui nulla, ultrices ut nisi non, ornare viverra ante.
Proin facilisis sit amet velit placerat porttitor. In congue risus id tempus congue. Cras rutrum justo at ultricies faucibus. Ut sed turpis nec nulla malesuada feugiat sed eu risus. In mattis eu tellus sit amet commodo. Nam molestie vulputate ullamcorper. Curabitur egestas ligula ut urna blandit faucibus.

Vue anchor hash links. Is it possible to create a mix of createWebHashHistory & createWebHistory router-links

I using vueJS3 and have the following menu list:
const menu = [
{ref: "../#home", name: "Home"},
{ref: "../areas", name: "Areas"},
{ref: "../#contact", name: "Contact"},
];
<nav class="overlay-menu">
<ul>
<li v-for="(link, index) in menu" :key="index">
<router-link :to="link.ref" #click="clicked">{{ link.name }}</router-link>
</li>
</ul>
</nav>
Unfortunately, the router-links with hash anchor links do not work. Alternatively I had used <a :href="link.ref" ...</a>. But I actually want to avoid that and want to move in the vue router link context. Is there a solution for this?
Status 2022-11
To bring it to a close at this stage, here is my workaround. As #kissu suspected in his comment: totally clear, it's just not working for some reason. Not sure what changed with the latest vue-router/vue3 here. Investigating myself because it's a bummer. I'll maybe create a github issue at some point, it could be a Vue router bug. For this reason I had to write a solution quickly. It is only a workaround but clear and I would also say not dirty. But you should be able to use it via the vue-router in the future.
In my case it was only two hash links that were both on the home. For this reason I put a method in my script setup that does the logic of scrolling to a specific ID selector. Then I put a watcher on the route.hash that checks if the hash in the url changes.
<script setup>
import { watch, onMounted} from "vue";
import { useRoute } from "vue-router";
const route = useRoute();
onMounted(() => {
scrollIfHashRoute();
});
const scrollIfHashRoute = function() {
const element = document.querySelector(route.hash);
const postionHeight = element.getBoundingClientRect();
window.scrollTo(0, postionHeight.top + window.scrollY);
}
watch (
() => route.hash,
(current, prev) => {
scrollIfHashRoute();
}
);
Update: found a way for that one.
You need to configure scrollBehavior for it to work. The migration guide from Vue2 mentions it.
import { createRouter, createWebHistory } from "vue-router";
import Index from "../views/Index.vue";
import About from "../views/About.vue";
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
// important part here 👇🏻
scrollBehavior(to, from, savedPosition) {
if (to.hash) {
return {
el: to.hash,
};
}
},
// important part above 👆🏻
routes: [...],
});
export default router;
Posva indirectly helped me solving that one via Discord.
PS: this is more of a repro than an actual answer (easier to share on Discord).
It works perfectly in a Nuxt2 app (with vue-router v3.5.3).
With a default Vue3/Nuxt3 config (with v4.1.6) meanwhile, it does not work aka
import { createRouter, createWebHistory } from "vue-router";
import Index from "../views/Index.vue";
import About from "../views/About.vue";
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: "/",
name: "index",
component: Index,
},
{
path: "/about",
name: "about",
component: About,
},
],
});
export default router;
I've read this migration part but I'm still not sure where the issue is coming from or if anything should change at all.
Below is an example of snippet that does not work.
HomeView.vue
<template>
<main>
<router-link :to="{ name: 'about', hash: '#scroll' }">
Let's scroll to about + #scroll !!
</router-link>
</main>
</template>
AboutView.vue
<template>
<div>
<br />
<br />
<router-link :to="{ hash: '#scroll' }"> Let's scroll !! </router-link>
a link
<p class="big-block">
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
</p>
<br />
<br />
<p id="scroll">supposed to scroll to this point</p>
<br />
<br />
<p class="big-block">
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
Eos consequatur et necessitatibus sapiente perspiciatis similique. Dicta
illum recusandae voluptas. Distinctio odit velit. Adipisci cupiditate
pariatur odio est sunt illum eaque voluptas fuga. Tempora itaque omnis
eveniet ea unde non ea minima. Et cum voluptates non in molestiae officia
sint voluptas. Aut laborum non quis eaque. Ipsam iste consectetur alias
vel quos consectetur eaque eos iste. Id mollitia ratione libero sit
cupiditate. Et totam corporis dolor officiis unde reiciendis. Et iure
voluptas ipsa voluptatibus. Saepe incidunt rem molestias voluptatem
voluptas delectus et porro dolores. Quaerat vero neque maiores blanditiis.
</p>
</div>
</template>
<style>
#media (min-width: 1024px) {
.about {
min-height: 100vh;
display: flex;
align-items: center;
}
}
</style>

Sticky Expanding Footer using CSS only (position:sticky)

Is it possible to achieve the below layout (sticky footer that expands and scrolls when the user finishes scrolling the content above the footer) using CSS only?
(Note: my example layout here has a fixed height footer to demonstrate the desired outcome - the point of this questions is to ask whether this can be done with an arbitrary-height footer)
body {
margin: 0;
}
header {
position: fixed;
left: 0;
right: 0;
top: 0;
background: #cfc;
opacity: 0.5;
}
article {
min-height: 100vh;
}
footer {
position: sticky;
background: #fcf;
bottom: calc(0px - 200px + 30px);
overflow: hidden;
height: 200px; /* fixed height for demo purposes, needs to work without this */
}
footer h3 {
height: 30px;
margin: 0;
background: #ffc;
}
<header>
<h1>Header stuff</h1>
</header>
<article>
<p>Illo incidunt minus mollitia quod. Eaque earum molestiae necessitatibus, nemo numquam perferendis perspiciatis possimus ut vero! Amet eos excepturi inventore optio porro temporibus vel, velit. Autem dolorum eligendi porro sed.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci amet debitis dicta eum, expedita fuga itaque laborum, nesciunt officiis pariatur sapiente, ullam ut. Enim eveniet ipsam labore quod suscipit. Ad cum dolorum ea eaque eos iusto magni, mollitia nisi, nobis nostrum possimus praesentium provident quasi saepe vel, veniam voluptatum? Culpa dignissimos doloremque illo perspiciatis sit! Ad, cumque dolor dolore dolores eveniet exercitationem expedita facilis ipsam itaque iure iusto laboriosam laborum magnam minus neque nostrum perspiciatis quasi quibusdam, quidem repellendus soluta temporibus totam unde? A assumenda aut commodi culpa explicabo facere ipsa nesciunt officia placeat quo repudiandae, vel? Dolorem, esse, voluptates.</p>
<p>Debitis ea expedita quibusdam temporibus vel! Ab adipisci deleniti doloremque est et fugit impedit obcaecati repellat sed veniam. A accusamus at commodi dolorem exercitationem hic id inventore iure labore necessitatibus officia perferendis, possimus saepe sint, sit tempore ullam vel veritatis, vero voluptatum! Consequuntur delectus excepturi iusto nemo porro! Accusamus autem blanditiis cum dolorem est ipsam magnam nesciunt, obcaecati provident quas qui repellendus sunt totam vitae voluptatum. Accusamus corporis dolores esse explicabo natus perspiciatis placeat quam! Animi aut consequatur dignissimos dolores doloribus dolorum, ducimus eum fuga harum in itaque laboriosam necessitatibus nobis non placeat possimus provident, quasi quia, quis vero voluptas.</p>
<p>Amet architecto consequatur facere in inventore itaque, molestias necessitatibus nisi non nostrum omnis, quas quisquam, quos soluta vero! Accusamus aliquam animi, asperiores assumenda commodi culpa delectus dolore doloremque est eum illo ipsam iusto magni maxime nesciunt non obcaecati omnis perspiciatis, provident quasi quo saepe sit suscipit ut voluptatem! Accusamus eum molestiae quia quidem repellendus? Accusantium ad assumenda at autem blanditiis delectus distinctio ea fugit iure laboriosam, magnam nesciunt nobis numquam praesentium reiciendis sint voluptatem? Alias aliquid, aut distinctio illo ipsam itaque magnam nihil odio perferendis, provident qui quidem, quo repellendus tempore vitae. Aperiam dolorem ipsum molestiae nostrum ratione, suscipit vel.</p>
<p>Culpa, esse porro! Aut libero quae rerum ut vitae! Ab assumenda beatae consequuntur, doloremque dolores impedit nihil ratione sunt totam? Aliquam explicabo ipsa mollitia nam officiis pariatur quia. Aliquam beatae deleniti dolor dolorem earum est, expedita fugit illo, ipsa iusto magnam necessitatibus numquam optio perspiciatis possimus quo quod repellat repudiandae sunt, tenetur. Ad amet corporis cupiditate eius inventore numquam odio quidem ratione sed ullam. Accusantium ad, aspernatur at aut autem cumque dignissimos doloremque dolores doloribus eaque eius, itaque laboriosam libero, nihil obcaecati officia perspiciatis praesentium quia quibusdam sit suscipit tempora tempore vel veritatis voluptate. Eligendi fugiat maiores placeat sapiente sed?</p>
<p>Atque eaque nulla quo temporibus voluptas. A ad adipisci aperiam autem deserunt dolorem dolorum ducimus enim eum excepturi fuga fugiat, fugit hic ipsum labore laudantium maiores, molestias nam nesciunt odio quae quam quasi repudiandae sequi vero. A at blanditiis cum dolore dolorum eligendi esse facere facilis, harum incidunt ipsam maiores maxime minima minus neque nulla numquam obcaecati quas ratione repellendus similique, veritatis voluptate. Ab, accusamus asperiores harum mollitia possimus quae ullam! Ad alias aliquam, architecto at deleniti dicta doloremque dolorum esse et explicabo hic iure laboriosam maiores maxime neque nisi obcaecati officiis possimus recusandae saepe sapiente temporibus voluptatem. Ab, mollitia?</p>
<p>Corporis labore maxime odio quisquam sed! Aliquid deleniti dolor doloribus eligendi est excepturi exercitationem expedita incidunt inventore labore laudantium mollitia nam officiis, praesentium qui quis recusandae sunt suscipit voluptas voluptatibus? Mollitia quas quibusdam recusandae veritatis voluptas. Alias aut, consectetur mollitia perferendis quasi quos recusandae sequi. Accusantium atque facilis itaque mollitia quisquam sunt, ut. Accusantium, assumenda consectetur delectus doloremque, dolorum error esse expedita id maxime non quam quidem similique unde, ut vero voluptas voluptatem. Accusamus alias consectetur consequatur dolores magni natus necessitatibus quas quia voluptatem. Deleniti, facere, veniam. A ad corporis dicta dolores neque nisi perspiciatis possimus quam sequi temporibus. Nulla.</p>
<p>Accusamus aperiam architecto asperiores cum et ex expedita facilis impedit iure laborum molestiae mollitia nam, quis quisquam reprehenderit totam voluptas. Accusamus corporis doloremque excepturi modi neque officia, tenetur. Aut cum, distinctio eligendi harum incidunt laboriosam molestias nulla sunt! Ab architecto, aspernatur debitis deleniti dolor doloremque ducimus eaque error eveniet fugiat in labore minus molestiae nemo nisi nostrum nulla, obcaecati placeat quas quia quo reprehenderit, repudiandae sed sint suscipit tempore veniam voluptate. Architecto assumenda autem deserunt ea esse est ex excepturi expedita fuga fugiat harum hic impedit ipsam modi necessitatibus nesciunt nihil obcaecati officiis perspiciatis quam reiciendis sit temporibus, ut voluptatibus!</p>
<p>Adipisci aliquam cumque distinctio impedit laboriosam laborum maiores nemo nesciunt nostrum. Dolor dolore eveniet, illum maxime odit quaerat quasi quibusdam quisquam recusandae. Hic nihil possimus quod ut. Animi autem cum delectus deleniti dolore iste minus modi officiis quas reprehenderit, sed sequi vel vitae. Aliquam at delectus deserunt dignissimos dolore eaque enim error explicabo fugiat hic id illo laudantium maxime mollitia natus obcaecati odit pariatur quod quos, repellat repellendus reprehenderit sit suscipit tempore temporibus veniam voluptates? Asperiores cumque doloribus ea eum laborum numquam, odio quo recusandae sapiente sint suscipit temporibus ut voluptas? Blanditiis eum mollitia quis quod quos sit temporibus veritatis.</p>
<p>Accusantium ad autem beatae culpa debitis deleniti doloremque est ex fugit, harum in labore maxime, minima nisi odit officiis provident soluta suscipit veritatis voluptatibus! Ab at aut beatae doloremque numquam! Ab, architecto deleniti dicta ea earum est eveniet exercitationem illum ipsam, ipsum itaque labore libero minima modi molestias natus officiis pariatur perferendis placeat quaerat quas rem rerum sit soluta sunt ullam vitae voluptatum? Aliquam aperiam aspernatur corporis cum distinctio dolor ducimus ea esse est illum ipsa ipsum, iusto libero magnam maiores maxime nam nihil non nostrum nulla odio officiis optio perferendis praesentium provident quisquam ratione repudiandae sunt suscipit ut voluptates.</p>
<p>Ducimus minima molestias placeat quaerat vel. Ab beatae, doloremque ea eos ex iure iusto labore minus molestiae, nobis numquam perspiciatis praesentium quae quaerat quam sed unde voluptatum. Alias architecto atque aut dolorum, hic tenetur? Ab accusantium aliquid aut debitis deserunt dolore, dolorem earum est eum fugiat illum inventore itaque modi molestiae natus nobis obcaecati quasi quidem quo quos reiciendis, rem reprehenderit repudiandae similique sint, sunt unde ut veritatis vitae voluptatem? Assumenda culpa deleniti facilis maiores nam numquam officia quidem rem reprehenderit, sapiente ullam vel voluptas. Ab accusamus delectus eveniet facilis, fugiat fugit molestiae quisquam ratione veniam veritatis. Cum, quo voluptates.</p>
</article>
<footer>
<h3>Footer Stuff</h3>
<p>Arbitrary height footer content.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Neque obcaecati quae sequi soluta temporibus? Ab, ad eveniet ex itaque quae quo quod repellat similique voluptatum. Culpa cupiditate porro recusandae vel.</p>
<p>Animi architecto corporis culpa dignissimos, doloribus ducimus eaque earum exercitationem expedita explicabo facilis id impedit molestiae nobis nulla officiis porro possimus quam, quia quidem quo suscipit tempore totam vitae voluptatem!</p>
<p>Beatae commodi deserunt distinctio est eum, ex expedita in incidunt maiores officiis optio quae qui, quidem quo ratione sapiente suscipit? Cumque ea enim explicabo maxime molestias mollitia quod suscipit vero.</p>
<p>Illo incidunt minus mollitia quod. Eaque earum molestiae necessitatibus, nemo numquam perferendis perspiciatis possimus ut vero! Amet eos excepturi inventore optio porro temporibus vel, velit. Autem dolorum eligendi porro sed.</p>
</footer>

Unwanted space in table cell when another cell has a tag within it

I'm having trouble understanding why the two chunks of HTML below render differently. The yellow and pink table is missing a BR tag, and flows efficiently, the green and blue table has the <BR> tag in the middle of the text in the blue cell, and has unwanted space in the green cell. I've tried rendering as flex boxes and tables, and they render the same way. I've tried different browsers, and they render the same way.
What rule is being followed in the green and blue layout that causes the whitespace in the green cell?
How can I get rendering like the yellow-and-pink case and use <BR> tags? I'm actually after <P> tags, but let's just talk about <BR> tags, which I figure are the most simple case.
<html><body>
<div style="display: flex; flex-flow: row;">
<div style="background-color: green;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div style="background-color: blue;">
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
<br/>
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
</div>
</div>
<br/>
<table>
<tr>
<td style="background-color: yellow;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</td>
<td style="background-color: pink;">
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
<xbr/>
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
</td>
</table>
<br/>
</body></html>
Screenshot:
If a height is assigned to a div, the whitespace is not removed (see the darker green below), and if a <br> tag is allowed into a table which has a height on the cell, the whitespace is split between the top and bottom of the cell (see the lighter green below) - but the height attribute doesn't affect the rendering anyway:
This behaviour is exhibited in FireFox 80.0 and Chrome Version 85.0.4183.83
Here's what's going on:
Inside of the div with display: flex; flex-flow: row you have two children, the green and the blue divs.
The browser calculates their individual widths (it's the width because flex-flow: row) as follows:
The calculation of the green div's width is straight forward. It's the width of the whole text on one line.
=> greenWidth
The calculation of the blue div is a little bit more involved because of the <br>. This causes the text to be split in two. The browser then calculates the widths of these two bits of text that they would take on one line each. Then it takes the wider of these.
=> blueWidth
Both, the green and the blue box have their default value for flex-basis which is auto. For the green box, the browser takes greenWidth and for the blue box it takes blueWidth as the result of auto.
I still haven't come up with an actual solution but maybe, based on the above, you might be able to figure something out.
In the flex-box the items are stretched to the height of the container (if height of items is not defined). However, You can change this behaviour by gibing the green div a height.
Suppose the height is 100px;
<html><body>
<div style="display: flex; flex-flow: row;">
<div style="background-color: green; height: 100px;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div style="background-color: blue;">
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque
laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
architecto beatae vitae dicta sunt explicabo.
<br/>
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam
aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem
ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
</div>
</div>
<br/>
<table>
<tr>
<td style="background-color: yellow;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</td>
<td style="background-color: pink;">
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque
laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
architecto beatae vitae dicta sunt explicabo.
<xbr/>
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam
aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem
ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
</td>
</tr>
</table>
<br/>
</body></html>
Christian pointed in the right direction. Understanding that the problem is down to sizing being affected by tags, I allowed the browser to size the un-tagged content, but hid its rendering.
The "solution" is to have two text bodies, one rendering with tags and the other without. The text without tags is color:transparent; and positioned with normal text flow. The text with tags is rendered on top of the document text flow in the location of the transparent text by using a z-index higher than the normal text. There is a chance that the text with tags will overflow the table, so layout your page with this possibility under consideration (or pad the text without tags a little):
<html><body>
<div style="display: flex; flex-flow: row;">
<div style="background-color: #FFA;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div style="position: relative; background-color: #FDD;">
<div style="position: absolute; z-index:2;">
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
<br/>
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
</div>
<div style="color:transparent;">Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
<xbr/>
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
</div>
</div>
</div>
</body></html>

Apply ContentThemeTransition on a scrollable TextBlock

I'm trying to create a TextBlock that transitions its content when its value changes (slide in from left).
The problem is that the transition is replayed each time the user scrolls the TextBlock (which is wrapped inside a ScrollViewer)
<ScrollViewer Width="300" Height="200" VerticalScrollBarVisibility="Auto" VerticalScrollMode="Enabled" >
<TextBlock TextWrapping="Wrap" Style="{StaticResource BasicTextStyle}">
<TextBlock.Transitions>
<TransitionCollection>
<ContentThemeTransition HorizontalOffset="-500" />
</TransitionCollection>
</TextBlock.Transitions>
"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"
</TextBlock>
</ScrollViewer>
Am I doing something wrong, or is this a WinRT bug?
I think I responded to your Connect bug, but can you use EntranceThemeTransition instead here?