Quasar is a popular Vue UI library for developing good looking Vue apps.
In this article, we’ll take a look at how to create Vue apps with the Quasar UI library.
Dark Timeline
We can add the dark prop to display the timeline in a dark background.
For instance, we can write:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout view="lHh Lpr lFf" container style="height: 100vh;">
<div class="q-pa-md bg-grey-10 text-white">
<q-timeline color="secondary" dark>
<q-timeline-entry
heading
body="Timeline heading"
></q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 22, 2000"
avatar="https://cdn.quasar.dev/img/avatar3.jpg"
:body="body"
>
</q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 21, 2000"
icon="delete"
:body="body"
>
</q-timeline-entry>
<q-timeline-entry heading body="November, 2017"></q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 22, 2000"
:body="body"
>
</q-timeline-entry>
</q-timeline>
</div>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {
body: "Lorem ipsum dolor sit amet"
}
});
</script>
</body>
</html>
We add the bg-grey-10 background to make the background dark.
And text-white makes the text white.
Timeline Layout and Side
We can add the timeline layout and side with the layout and side props:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout view="lHh Lpr lFf" container style="height: 100vh;">
<div class="q-pa-md">
<q-timeline color="secondary" layout="dense" side="left">
<q-timeline-entry
heading
body="Timeline heading"
></q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 22, 2000"
avatar="https://cdn.quasar.dev/img/avatar3.jpg"
:body="body"
>
</q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 21, 2000"
icon="delete"
:body="body"
>
</q-timeline-entry>
<q-timeline-entry heading body="November, 2017"></q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 22, 2000"
:body="body"
>
</q-timeline-entry>
</q-timeline>
</div>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {
body: "Lorem ipsum dolor sit amet"
}
});
</script>
</body>
</html>
layout can be set to dense , comfortable or loose .
And side can be left or right .
Responsive Timeline
We can add a responsive timeline by setting the layout prop dynamically:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout view="lHh Lpr lFf" container style="height: 100vh;">
<div class="q-pa-md">
<q-timeline color="secondary" :layout="layout">
<q-timeline-entry
heading
body="Timeline heading"
></q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 22, 2000"
avatar="https://cdn.quasar.dev/img/avatar3.jpg"
:body="body"
>
</q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 21, 2000"
icon="delete"
:body="body"
>
</q-timeline-entry>
<q-timeline-entry heading body="November, 2017"></q-timeline-entry>
<q-timeline-entry
title="Event Title"
subtitle="February 22, 2000"
:body="body"
>
</q-timeline-entry>
</q-timeline>
</div>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {
body: "Lorem ipsum dolor sit amet"
},
computed: {
layout() {
return this.$q.screen.lt.sm
? "dense"
: this.$q.screen.lt.md
? "comfortable"
: "loose";
}
}
});
</script>
</body>
</html>
We add the layout computed property, which returns the value of layout by checking the screen size and returning the corresponding value.
Conclusion
We can add timelines with various options with Quasar’s timeline component.