Sticky Expanding Footer using CSS only (position:sticky) - css-position

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>

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>

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

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.

bootstrap 3 affix at the middle of the page

I've a section at the middle of the page. At the left side of this section is vertical menu. I'm trying to affix this left menu. At the first glance it's working well, but when you scroll down and then scroll up, the affix plugin breaks down. I'm using 3.3.7 bootstrap adn 3.2.1 jquery. jsFiddle
$("#myNav").affix({
offset: {
top: function($el) {
var top = $("#sections").offset().top;
console.log(top);
return top;
},
bottom: function($el) {
var bottom = document.body.scrollHeight - $("#sections").offset().top - $("#sections").outerHeight(true);
console.log(bottom)
return bottom;
}
}
});
Try This happy Coding :)
$("#myNav").affix({
offset: {
top: function($el) {
var top = $(".row").offset().top;
return top;
}
}
});
/* Custom Styles */
ul.nav-tabs{
width: 140px;
margin-top: 20px;
border-radius: 4px;
border: 1px solid #ddd;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.067);
}
ul.nav-tabs li{
margin: 0;
border-top: 1px solid #ddd;
}
ul.nav-tabs li:first-child{
border-top: none;
}
ul.nav-tabs li a{
margin: 0;
padding: 8px 16px;
border-radius: 0;
}
ul.nav-tabs li.active a, ul.nav-tabs li.active a:hover{
color: #fff;
background: #0088cc;
border: 1px solid #0088cc;
}
ul.nav-tabs li:first-child a{
border-radius: 4px 4px 0 0;
}
ul.nav-tabs li:last-child a{
border-radius: 0 0 4px 4px;
}
ul.nav-tabs.affix{
top: 30px; /* Set the top position of pinned element */
}
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container">
<div class="jumbotron">
<h1>Bootstrap Affix</h1>
</div>
<div class="row">
<div class="col-xs-3">
<ul class="nav nav-tabs nav-stacked" id="myNav">
<li class="active">Section One</li>
<li>Section Two</li>
<li>Section Three</li>
<li>Section Four</li>
<li>Section Five</li>
</ul>
</div>
<div class="col-xs-8 col-xs-offset-1" id="sections">
<h2 id="section-1">Section One</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu sem tempor, varius quam at, luctus dui. Mauris magna metus, dapibus nec turpis vel, semper malesuada ante. Vestibulum id metus ac nisl bibendum scelerisque non non purus. Suspendisse varius nibh non aliquet sagittis. In tincidunt orci sit amet elementum vestibulum. Vivamus fermentum in arcu in aliquam. Quisque aliquam porta odio in fringilla. Vivamus nisl leo, blandit at bibendum eu, tristique eget risus. Integer aliquet quam ut elit suscipit, id interdum neque porttitor. Integer faucibus ligula.</p>
<p>Vestibulum quis quam ut magna consequat faucibus. Pellentesque eget nisi a mi suscipit tincidunt. Ut tempus dictum risus. Pellentesque viverra sagittis quam at mattis. Suspendisse potenti. Aliquam sit amet gravida nibh, facilisis gravida odio. Phasellus auctor velit at lacus blandit, commodo iaculis justo viverra. Etiam vitae est arcu. Mauris vel congue dolor. Aliquam eget mi mi. Fusce quam tortor, commodo ac dui quis, bibendum viverra erat. Maecenas mattis lectus enim, quis tincidunt dui molestie euismod. Curabitur et diam tristique, accumsan nunc eu, hendrerit tellus.</p>
<hr>
<h2 id="section-2">Section Two</h2>
<p>Nullam hendrerit justo non leo aliquet imperdiet. Etiam in sagittis lectus. Suspendisse ultrices placerat accumsan. Mauris quis dapibus orci. In dapibus velit blandit pharetra tincidunt. Quisque non sapien nec lacus condimentum facilisis ut iaculis enim. Sed viverra interdum bibendum. Donec ac sollicitudin dolor. Sed fringilla vitae lacus at rutrum. Phasellus congue vestibulum ligula sed consequat.</p>
<p>Vestibulum consectetur scelerisque lacus, ac fermentum lorem convallis sed. Nam odio tortor, dictum quis malesuada at, pellentesque vitae orci. Vivamus elementum, felis eu auctor lobortis, diam velit egestas lacus, quis fermentum metus ante quis urna. Sed at facilisis libero. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum bibendum blandit dolor. Nunc orci dolor, molestie nec nibh in, hendrerit tincidunt ante. Vivamus sem augue, hendrerit non sapien in, mollis ornare augue.</p>
<hr>
<h2 id="section-3">Section Three</h2>
<p>Integer pulvinar leo id risus pellentesque vestibulum. Sed diam libero, sodales eget sapien vel, porttitor bibendum enim. Donec sed nibh vitae lorem porttitor blandit in nec ante. Pellentesque vitae metus ipsum. Phasellus sed nunc ac sem malesuada condimentum. Etiam in aliquam lectus. Nam vel sapien diam. Donec pharetra id arcu eget blandit. Proin imperdiet mattis augue in porttitor. Quisque tempus enim id lobortis feugiat. Suspendisse tincidunt risus quis dolor fringilla blandit. Ut sed sapien at purus lacinia porttitor. Nullam iaculis, felis a pretium ornare, dolor nisl semper tortor, vel sagittis lacus est consequat eros. Sed id pretium nisl. Curabitur dolor nisl, laoreet vitae aliquam id, tincidunt sit amet mauris.</p>
<p>Phasellus vitae suscipit justo. Mauris pharetra feugiat ante id lacinia. Etiam faucibus mauris id tempor egestas. Duis luctus turpis at accumsan tincidunt. Phasellus risus risus, volutpat vel tellus ac, tincidunt fringilla massa. Etiam hendrerit dolor eget ante rutrum adipiscing. Cras interdum ipsum mattis, tempus mauris vel, semper ipsum. Duis sed dolor ut enim lobortis pellentesque ultricies ac ligula. Pellentesque convallis elit nisi, id vulputate ipsum ullamcorper ut. Cras ac pulvinar purus, ac viverra est. Suspendisse potenti. Integer pellentesque neque et elementum tempus. Curabitur bibendum in ligula ut rhoncus.</p>
<p>Quisque pharetra velit id velit iaculis pretium. Nullam a justo sed ligula porta semper eu quis enim. Pellentesque pellentesque, metus at facilisis hendrerit, lectus velit facilisis leo, quis volutpat turpis arcu quis enim. Nulla viverra lorem elementum interdum ultricies. Suspendisse accumsan quam nec ante mollis tempus. Morbi vel accumsan diam, eget convallis tellus. Suspendisse potenti.</p>
<hr>
<h2 id="section-4">Section Four</h2>
<p>Suspendisse a orci facilisis, dignissim tortor vitae, ultrices mi. Vestibulum a iaculis lacus. Phasellus vitae convallis ligula, nec volutpat tellus. Vivamus scelerisque mollis nisl, nec vehicula elit egestas a. Sed luctus metus id mi gravida, faucibus convallis neque pretium. Maecenas quis sapien ut leo fringilla tempor vitae sit amet leo. Donec imperdiet tempus placerat. Pellentesque pulvinar ultrices nunc sed ultrices. Morbi vel mi pretium, fermentum lacus et, viverra tellus. Phasellus sodales libero nec dui convallis, sit amet fermentum sapien auctor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed eu elementum nibh, quis varius libero.</p>
<p>Vestibulum quis quam ut magna consequat faucibus. Pellentesque eget nisi a mi suscipit tincidunt. Ut tempus dictum risus. Pellentesque viverra sagittis quam at mattis. Suspendisse potenti. Aliquam sit amet gravida nibh, facilisis gravida odio. Phasellus auctor velit at lacus blandit, commodo iaculis justo viverra. Etiam vitae est arcu. Mauris vel congue dolor. Aliquam eget mi mi. Fusce quam tortor, commodo ac dui quis, bibendum viverra erat. Maecenas mattis lectus enim, quis tincidunt dui molestie euismod. Curabitur et diam tristique, accumsan nunc eu, hendrerit tellus.</p>
<p>Phasellus fermentum, neque sit amet sodales tempor, enim ante interdum eros, eget luctus ipsum eros ut ligula. Nunc ornare erat quis faucibus molestie. Proin malesuada consequat commodo. Mauris iaculis, eros ut dapibus luctus, massa enim elementum purus, sit amet tristique purus purus nec felis. Morbi vestibulum sapien eget porta pulvinar. Nam at quam diam. Proin rhoncus, felis elementum accumsan dictum, felis nisi vestibulum tellus, et ultrices risus felis in orci. Quisque vestibulum sem nisl, vel congue leo dictum nec. Cras eget est at velit sagittis ullamcorper vel et lectus. In hac habitasse platea dictumst. Etiam interdum iaculis velit, vel sollicitudin lorem feugiat sit amet. Etiam luctus, quam sed sodales aliquam, lorem libero hendrerit urna, faucibus rhoncus massa nibh at felis. Curabitur ac tempus nulla, ut semper erat. Vivamus porta ullamcorper sem, ornare egestas mauris facilisis id.</p>
<p>Ut ut risus nisl. Fusce porttitor eros at magna luctus, non congue nulla eleifend. Aenean porttitor feugiat dolor sit amet facilisis. Pellentesque venenatis magna et risus commodo, a commodo turpis gravida. Nam mollis massa dapibus urna aliquet, quis iaculis elit sodales. Sed eget ornare orci, eu malesuada justo. Nunc lacus augue, dictum quis dui id, lacinia congue quam. Nulla sem sem, aliquam nec dolor ac, tempus convallis nunc. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla suscipit convallis iaculis. Quisque eget commodo ligula. Praesent leo dui, facilisis quis eleifend in, aliquet vitae nunc. Suspendisse fermentum odio ac massa ultricies pellentesque. Fusce eu suscipit massa.</p>
<hr>
<h2 id="section-5">Section Five</h2>
<p>Nam eget purus nec est consectetur vehicula. Nullam ultrices nisl risus, in viverra libero egestas sit amet. Etiam porttitor dolor non eros pulvinar malesuada. Vestibulum sit amet est mollis nulla tempus aliquet. Praesent luctus hendrerit arcu non laoreet. Morbi consequat placerat magna, ac ornare odio sagittis sed. Donec vitae ullamcorper purus. Vivamus non metus ac justo porta volutpat.</p>
<p>Vivamus mattis accumsan erat, vel convallis risus pretium nec. Integer nunc nulla, viverra ut sem non, scelerisque vehicula arcu. Fusce bibendum convallis augue sit amet lobortis. Cras porta urna turpis, sodales lobortis purus adipiscing id. Maecenas ullamcorper, turpis suscipit pellentesque fringilla, massa lacus pulvinar mi, nec dignissim velit arcu eget purus. Nam at dapibus tellus, eget euismod nisl. Ut eget venenatis sapien. Vivamus vulputate varius mauris, vel varius nisl facilisis ac. Nulla aliquet justo a nibh ornare, eu congue neque rutrum.</p>
<p>Suspendisse a orci facilisis, dignissim tortor vitae, ultrices mi. Vestibulum a iaculis lacus. Phasellus vitae convallis ligula, nec volutpat tellus. Vivamus scelerisque mollis nisl, nec vehicula elit egestas a. Sed luctus metus id mi gravida, faucibus convallis neque pretium. Maecenas quis sapien ut leo fringilla tempor vitae sit amet leo. Donec imperdiet tempus placerat. Pellentesque pulvinar ultrices nunc sed ultrices. Morbi vel mi pretium, fermentum lacus et, viverra tellus. Phasellus sodales libero nec dui convallis, sit amet fermentum sapien auctor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed eu elementum nibh, quis varius libero.</p>
<p>Morbi sed fermentum ipsum. Morbi a orci vulputate tortor ornare blandit a quis orci. Donec aliquam sodales gravida. In ut ullamcorper nisi, ac pretium velit. Vestibulum vitae lectus volutpat, consequat lorem sit amet, pulvinar tellus. In tincidunt vel leo eget pulvinar. Curabitur a eros non lacus malesuada aliquam. Praesent et tempus odio. Integer a quam nunc. In hac habitasse platea dictumst. Aliquam porta nibh nulla, et mattis turpis placerat eget. Pellentesque dui diam, pellentesque vel gravida id, accumsan eu magna. Sed a semper arcu, ut dignissim leo.</p>
<p>Sed vitae lobortis diam, id molestie magna. Aliquam consequat ipsum quis est dictum ultrices. Aenean nibh velit, fringilla in diam id, blandit hendrerit lacus. Donec vehicula rutrum tellus eget fermentum. Pellentesque ac erat et arcu ornare tincidunt. Aliquam erat volutpat. Vivamus lobortis urna quis gravida semper. In condimentum, est a faucibus luctus, mi dolor cursus mi, id vehicula arcu risus a nibh. Pellentesque blandit sapien lacus, vel vehicula nunc feugiat sit amet.</p>
</div>
</div>
<div style="margin-top: 700px">
</div>
</div>

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?