Refactor CSS
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
This commit is contained in:
parent
80205a7117
commit
6179b05fd5
14 changed files with 661 additions and 753 deletions
|
@ -2,6 +2,8 @@
|
|||
// TODO: Refactor to use bootstrap sass variable for theming.
|
||||
@import 'bootstrap/scss/bootstrap';
|
||||
|
||||
@import 'include-media/dist/_include-media';
|
||||
|
||||
// The Mulish font, we use font-weight 300 - 700
|
||||
@import '@fontsource/mulish/300';
|
||||
@import '@fontsource/mulish/index'; // 400
|
||||
|
@ -9,6 +11,8 @@
|
|||
@import '@fontsource/mulish/600';
|
||||
@import '@fontsource/mulish/700';
|
||||
|
||||
@import './variables';
|
||||
|
||||
// layouts
|
||||
@import './layouts/main';
|
||||
@import './layouts/list';
|
||||
|
@ -34,6 +38,11 @@
|
|||
@import './sections/publications';
|
||||
|
||||
|
||||
// components
|
||||
@import './components/cards';
|
||||
@import './components/buttons';
|
||||
|
||||
|
||||
// override
|
||||
@import './override';
|
||||
|
||||
|
|
15
assets/styles/components/buttons.scss
Normal file
15
assets/styles/components/buttons.scss
Normal file
|
@ -0,0 +1,15 @@
|
|||
.tags {
|
||||
text-align: left;
|
||||
|
||||
li {
|
||||
font-size: 0.5em;
|
||||
list-style-type: none;
|
||||
display: inline-block;
|
||||
background: #248aaa;
|
||||
margin-left: 0.1em;
|
||||
margin-right: 0.1em;
|
||||
}
|
||||
a {
|
||||
color: #f9fafc;
|
||||
}
|
||||
}
|
66
assets/styles/components/cards.scss
Normal file
66
assets/styles/components/cards.scss
Normal file
|
@ -0,0 +1,66 @@
|
|||
.post-card {
|
||||
width: calc(100% / 3);
|
||||
display: inline-flex;
|
||||
|
||||
.post-card-link {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.card {
|
||||
margin: 5px;
|
||||
position: relative;
|
||||
box-shadow: none;
|
||||
transition: all 0.3s ease-out;
|
||||
overflow: hidden;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
box-shadow: 0px 8px 56px rgba(15, 80, 100, 0.16);
|
||||
border: 1px solid #fff;
|
||||
transition: all 0.3s ease-out;
|
||||
|
||||
.card-img-top {
|
||||
transform: scale(1.2);
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
}
|
||||
|
||||
.card-head {
|
||||
height: 172px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
overflow: hidden;
|
||||
|
||||
.card-img-top {
|
||||
transition: all 0.3s ease-out !important;
|
||||
}
|
||||
}
|
||||
.card-body {
|
||||
text-align: justify;
|
||||
padding: 1.25rem !important;
|
||||
padding-bottom: 0 !important;
|
||||
|
||||
.post-summary {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
max-height: 144px;
|
||||
/* fallback */
|
||||
-webkit-line-clamp: 5;
|
||||
/* number of lines to show */
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
.card-footer {
|
||||
background: #fff;
|
||||
margin-top: auto;
|
||||
|
||||
span {
|
||||
font-size: 10pt;
|
||||
color: #6c757d !important;
|
||||
padding-top: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,9 @@
|
|||
// in Hugo, Page kind can be either "section" or "page".
|
||||
// if it is section, then it's a page with a list of items, for example /posts
|
||||
// if it is page, then it is a single page.
|
||||
body.kind-section, body.kind-term, body.kind-page{
|
||||
body.kind-section,
|
||||
body.kind-term,
|
||||
body.kind-page {
|
||||
.wrapper {
|
||||
display: flex;
|
||||
padding: 0;
|
||||
|
@ -34,42 +36,6 @@ body.kind-section, body.kind-term, body.kind-page{
|
|||
flex-flow: wrap;
|
||||
}
|
||||
|
||||
.post-card-holder .post-card {
|
||||
width: calc(100% / 3);
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.post-card-holder .card {
|
||||
margin: 5px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.post-card-holder .card .card-footer span {
|
||||
font-size: 10pt;
|
||||
color: #6c757d !important;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.post-card-holder .card .card-footer {
|
||||
background: #fff;
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.post-summary {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
max-height: 144px;
|
||||
/* fallback */
|
||||
-webkit-line-clamp: 5;
|
||||
/* number of lines to show */
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.post-card-holder .post-card-link {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.paginator {
|
||||
width: -moz-fit-content;
|
||||
width: fit-content;
|
||||
|
@ -98,22 +64,6 @@ body.kind-section, body.kind-term, body.kind-page{
|
|||
width: fit-content;
|
||||
}
|
||||
|
||||
.taxonomy-terms-card {
|
||||
text-align: left;
|
||||
}
|
||||
.taxonomy-terms-card li {
|
||||
font-size: 0.5em;
|
||||
list-style-type: none;
|
||||
display: inline-block;
|
||||
background: #248aaa;
|
||||
margin-left: 0.1em;
|
||||
margin-right: 0.1em;
|
||||
}
|
||||
|
||||
.taxonomy-terms-card a {
|
||||
color: #f9fafc;
|
||||
}
|
||||
|
||||
/* ============= Device specific fixes ======= */
|
||||
|
||||
/* Large screens such as TV */
|
||||
|
@ -124,9 +74,6 @@ body.kind-section, body.kind-term, body.kind-page{
|
|||
flex: 85%;
|
||||
max-width: 85%;
|
||||
}
|
||||
.post-card-holder .post-card {
|
||||
width: calc(100% / 5);
|
||||
}
|
||||
}
|
||||
|
||||
/* Extra large devices (large desktops, 1200px and up) */
|
||||
|
@ -135,9 +82,6 @@ body.kind-section, body.kind-term, body.kind-page{
|
|||
.post-card-holder {
|
||||
margin-left: 0px;
|
||||
}
|
||||
.post-card-holder .post-card {
|
||||
width: calc(100% / 3);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
|
@ -185,31 +129,6 @@ body.kind-section, body.kind-term, body.kind-page{
|
|||
position: relative;
|
||||
transition: all ease-out 0.3s;
|
||||
}
|
||||
|
||||
.post-card-holder .post-card {
|
||||
width: calc(100% / 3);
|
||||
}
|
||||
|
||||
.content-section.hide .post-card-holder .post-card {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Large devices (desktops, 992px and up) */
|
||||
|
||||
@media (max-width: 992px) {
|
||||
.post-card-holder .post-card {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.content-section.hide .post-card-holder .post-card {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Medium devices (tablets, 768px and up) */
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
}
|
||||
|
||||
/* Small devices (landscape phones, 576px and up) */
|
||||
|
@ -246,22 +165,32 @@ body.kind-section, body.kind-term, body.kind-page{
|
|||
transition: all ease-out 0.3s;
|
||||
}
|
||||
|
||||
.post-card-holder .post-card {
|
||||
}
|
||||
@include media('<=small') {
|
||||
.post-card {
|
||||
margin-left: 1%;
|
||||
margin-right: 1%;
|
||||
width: 98%;
|
||||
}
|
||||
}
|
||||
|
||||
/* iPhoneX, iPhone 6,7,8 */
|
||||
@media only screen and (max-width: 375px) {
|
||||
}
|
||||
|
||||
/* Galaxy S5, Moto G4 */
|
||||
@media only screen and (max-width: 360px) {
|
||||
}
|
||||
|
||||
/* iPhone 5 or before */
|
||||
@media only screen and (max-width: 320px) {
|
||||
@include media('>=medium') {
|
||||
.post-card {
|
||||
width: calc(100% / 2);
|
||||
}
|
||||
}
|
||||
@include media('>=large') {
|
||||
.post-card {
|
||||
width: calc(100% / 3);
|
||||
}
|
||||
}
|
||||
@include media('>=very-large') {
|
||||
.post-card {
|
||||
width: calc(100% / 4);
|
||||
}
|
||||
}
|
||||
@include media('>=extra-large') {
|
||||
.post-card {
|
||||
width: calc(100% / 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,8 @@ Yellow: #FFC212
|
|||
simpler css approach.
|
||||
See: https://css-tricks.com/snippets/jquery/smooth-scrolling/
|
||||
*/
|
||||
*, html {
|
||||
*,
|
||||
html {
|
||||
scroll-behavior: smooth !important;
|
||||
}
|
||||
|
||||
|
@ -27,7 +28,7 @@ Yellow: #FFC212
|
|||
See: https://stackoverflow.com/questions/4086107/fixed-page-header-overlaps-in-page-anchors
|
||||
*/
|
||||
:target::before {
|
||||
content: "";
|
||||
content: '';
|
||||
display: block;
|
||||
height: 2em; /* fixed header height*/
|
||||
margin: -2em 0 0; /* negative fixed header height */
|
||||
|
@ -35,7 +36,7 @@ Yellow: #FFC212
|
|||
|
||||
body {
|
||||
background-color: #f9fafc;
|
||||
font-family: "Mulish";
|
||||
font-family: 'Mulish';
|
||||
}
|
||||
|
||||
h1,
|
||||
|
@ -139,11 +140,11 @@ Yellow: #FFC212
|
|||
margin-left: auto;
|
||||
}
|
||||
|
||||
.card {
|
||||
box-shadow: none;
|
||||
transition: all 0.3s ease-out;
|
||||
overflow: hidden;
|
||||
}
|
||||
// .card {
|
||||
// box-shadow: none;
|
||||
// transition: all 0.3s ease-out;
|
||||
// overflow: hidden;
|
||||
// }
|
||||
|
||||
.card-img-sm {
|
||||
width: 32px;
|
||||
|
@ -155,34 +156,34 @@ Yellow: #FFC212
|
|||
height: 24px;
|
||||
}
|
||||
|
||||
.card:hover,
|
||||
.card:focus {
|
||||
box-shadow: 0px 8px 56px rgba(15, 80, 100, 0.16);
|
||||
border: 1px solid #fff;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
// .card:hover,
|
||||
// .card:focus {
|
||||
// box-shadow: 0px 8px 56px rgba(15, 80, 100, 0.16);
|
||||
// border: 1px solid #fff;
|
||||
// transition: all 0.3s ease-out;
|
||||
// }
|
||||
|
||||
.card .card-head {
|
||||
height: 172px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
// .card .card-head {
|
||||
// height: 172px;
|
||||
// display: flex;
|
||||
// justify-content: center;
|
||||
// align-items: center;
|
||||
// overflow: hidden;
|
||||
// }
|
||||
|
||||
.card-img-top {
|
||||
transition: all 0.3s ease-out !important;
|
||||
}
|
||||
// .card-img-top {
|
||||
// transition: all 0.3s ease-out !important;
|
||||
// }
|
||||
|
||||
.card:hover .card-head .card-img-top,
|
||||
.card:focus .card-head .card-img-top {
|
||||
transition: all 0.3s ease-out;
|
||||
transform: scale(1.2);
|
||||
}
|
||||
// .card:hover .card-head .card-img-top,
|
||||
// .card:focus .card-head .card-img-top {
|
||||
// transition: all 0.3s ease-out;
|
||||
// transform: scale(1.2);
|
||||
// }
|
||||
|
||||
.card-body {
|
||||
text-align: justify;
|
||||
}
|
||||
// .card-body {
|
||||
// text-align: justify;
|
||||
// }
|
||||
|
||||
.sub-title {
|
||||
color: #c0ccda;
|
||||
|
@ -259,7 +260,8 @@ Yellow: #FFC212
|
|||
background: unset;
|
||||
}
|
||||
|
||||
.gist table td, .gist table tc{
|
||||
.gist table td,
|
||||
.gist table tc {
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
|
||||
|
@ -297,13 +299,15 @@ Yellow: #FFC212
|
|||
color: #1c2d41;
|
||||
}
|
||||
|
||||
a.header-anchor i, a.header-anchor svg {
|
||||
a.header-anchor i,
|
||||
a.header-anchor svg {
|
||||
font-size: 10pt;
|
||||
color: #3c4858;
|
||||
display: none;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
a.header-anchor:hover i, a.header-anchor:hover svg {
|
||||
a.header-anchor:hover i,
|
||||
a.header-anchor:hover svg {
|
||||
display: inline-block;
|
||||
}
|
||||
a.header-anchor code {
|
||||
|
@ -514,4 +518,3 @@ Yellow: #FFC212
|
|||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -299,21 +299,9 @@ body.kind-page {
|
|||
#scroll-to-top.show {
|
||||
visibility: visible;
|
||||
}
|
||||
.taxonomy-terms {
|
||||
.tags {
|
||||
text-align: center;
|
||||
}
|
||||
.taxonomy-terms li {
|
||||
font-size: 0.8em;
|
||||
list-style-type: none;
|
||||
display: inline-block;
|
||||
background: #248aaa;
|
||||
margin-left: 0.2em;
|
||||
margin-right: 0.2em;
|
||||
}
|
||||
|
||||
.taxonomy-terms a {
|
||||
color: #f9fafc;
|
||||
}
|
||||
|
||||
/* ============= Device specific fixes ======= */
|
||||
|
||||
|
|
|
@ -8,104 +8,28 @@
|
|||
padding-bottom: 55px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.card {
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
@include media('<=small') {
|
||||
.post-card {
|
||||
margin-left: 1%;
|
||||
margin-right: 1%;
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
.card .card-footer span {
|
||||
font-size: 10pt;
|
||||
color: #6c757d !important;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.card .card-footer {
|
||||
background: #fff;
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.post-card-link {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.post-summary {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
/* line-height: 24px; fallback */
|
||||
max-height: 144px; /* fallback */
|
||||
-webkit-line-clamp: 5; /* number of lines to show */
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.taxonomy-terms {
|
||||
text-align: left;
|
||||
}
|
||||
.taxonomy-terms li {
|
||||
font-size: 0.5em;
|
||||
list-style-type: none;
|
||||
display: inline-block;
|
||||
background: #248aaa;
|
||||
margin-left: 0.2em;
|
||||
margin-right: 0.2em;
|
||||
}
|
||||
|
||||
.taxonomy-terms a {
|
||||
color: #f9fafc;
|
||||
}
|
||||
|
||||
/* ============= Device specific fixes ======= */
|
||||
|
||||
/* Large screens such as TV */
|
||||
@media only screen and (min-width: 1824px) {
|
||||
}
|
||||
|
||||
/* Extra large devices (large desktops, 1200px and up) */
|
||||
|
||||
@media (max-width: 1400px) {
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
}
|
||||
|
||||
/* IPad Pro */
|
||||
@media (max-width: 1024px) {
|
||||
}
|
||||
|
||||
/* Large devices (desktops, 992px and up) */
|
||||
|
||||
@media (max-width: 992px) {
|
||||
}
|
||||
|
||||
/* Medium devices (tablets, 768px and up) */
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
@include media('<=medium') {
|
||||
.container {
|
||||
max-width: 100%;
|
||||
}
|
||||
.post-card {
|
||||
width: 50%;
|
||||
width: calc(100% / 2);
|
||||
}
|
||||
}
|
||||
|
||||
/* Small devices (landscape phones, 576px and up) */
|
||||
|
||||
@media only screen and (max-width: 576px) {
|
||||
@include media('<=large') {
|
||||
.post-card {
|
||||
width: 100%;
|
||||
width: calc(100% / 3);
|
||||
}
|
||||
}
|
||||
|
||||
/* iPhoneX, iPhone 6,7,8 */
|
||||
@media only screen and (max-width: 375px) {
|
||||
@include media('<=very-large') {
|
||||
}
|
||||
|
||||
/* Galaxy S5, Moto G4 */
|
||||
@media only screen and (max-width: 360px) {
|
||||
}
|
||||
|
||||
/* iPhone 5 or before */
|
||||
@media only screen and (max-width: 320px) {
|
||||
@include media('<=extra-large') {
|
||||
}
|
||||
}
|
8
assets/styles/variables.scss
Normal file
8
assets/styles/variables.scss
Normal file
|
@ -0,0 +1,8 @@
|
|||
$breakpoints: (
|
||||
small: 640px,
|
||||
medium: 768px,
|
||||
large: 1024px,
|
||||
very-large: 1280px,
|
||||
extra-large: 1536px,
|
||||
ultra-large: 2560px,
|
||||
);
|
|
@ -46,14 +46,7 @@
|
|||
<h1>{{ .Page.Title }}</h1>
|
||||
</div>
|
||||
{{ if site.Params.features.tags.enable }}
|
||||
<div class="taxonomy-terms">
|
||||
<ul style="padding-left: 0;">
|
||||
{{ range .Params.tags }}
|
||||
{{ $url:= printf "tags/%s/" . }}
|
||||
<li class="rounded"><a href="{{ $url | urlize | relLangURL }}" class="btn, btn-sm">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{partial "misc/tags.html" .Params.tags }}
|
||||
{{ end }}
|
||||
<div class="post-content" id="post-content">
|
||||
{{ .Page.Content }}
|
||||
|
|
|
@ -7,18 +7,11 @@
|
|||
<div class="card-body">
|
||||
<h5 class="card-title">{{ .Title }}</h5>
|
||||
<p class="card-text post-summary">{{ .Summary }}</p>
|
||||
{{ if and site.Params.features.tags.enable site.Params.features.tags.on_card }}
|
||||
{{ partial "misc/tags.html" .Params.tags }}
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
{{ if and site.Params.features.tags.enable site.Params.features.tags.on_card }}
|
||||
<div class="taxonomy-terms-card">
|
||||
<ul style="padding-left: 0;">
|
||||
{{ range .Params.tags }}
|
||||
{{ $url:= printf "tags/%s/" . }}
|
||||
<li class="rounded"><a href="{{ $url | urlize | relLangURL }}" class="btn, btn-sm">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{ end }}
|
||||
<span class="float-left">{{ .Date.Format "January 2, 2006" }}{{ if site.Params.features.readingTime }} | {{ .ReadingTime }} minute{{ if (ne .ReadingTime 1) }}s{{ end }}{{ end }}</span>
|
||||
<a
|
||||
href="{{ .RelPermalink | relLangURL }}"
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
<div class="col-lg-4 col-md-6 pt-2 post-card">
|
||||
<a href="{{ .RelPermalink }}" title="{{ .Title }}" class="post-card-link">
|
||||
<div class="card">
|
||||
<div class="card-head">
|
||||
<img class="card-img-top" src='{{ partial "helpers/get-hero.html" . }}'
|
||||
alt="Card image cap"
|
||||
/>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ .Title }}</h5>
|
||||
<p class="card-text post-summary"> {{ .Summary }}</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
{{ if and site.Params.features.tags.enable site.Params.features.tags.on_card }}
|
||||
<div class="taxonomy-terms">
|
||||
<ul style="padding-left: 0;">
|
||||
{{ range .Params.tags }}
|
||||
{{ $url:= printf "tags/%s/" . }}
|
||||
<li class="rounded"><a href="{{ $url | urlize | relLangURL }}" class="btn, btn-sm">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{ end }}
|
||||
<span class="float-left">{{ .Date.Format "January 2, 2006" }}{{ if site.Params.features.readingTime }} | {{ .ReadingTime }} minute{{ if (ne .ReadingTime 1) }}s{{ end }}{{ end }}</span>
|
||||
<a href="{{ .RelPermalink }}" title="{{ i18n "read" }}" class="float-right btn btn-outline-info btn-sm">{{ i18n "read" }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
8
layouts/partials/misc/tags.html
Normal file
8
layouts/partials/misc/tags.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<div class="tags">
|
||||
<ul style="padding-left: 0;">
|
||||
{{ range . }}
|
||||
{{ $url:= printf "tags/%s/" . }}
|
||||
<li class="rounded"><a href="{{ $url | urlize | relLangURL }}" class="btn, btn-sm">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
|
@ -20,7 +20,7 @@
|
|||
<div class="container">
|
||||
<div class="row" id="recent-post-cards">
|
||||
{{ range first $numShow (where (where site.RegularPages.ByDate.Reverse "Type" "posts" ) "Layout" "!=" "search") }}
|
||||
{{ partial "cards/recent-post.html" . }}
|
||||
{{ partial "cards/post.html" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
"mark.js": "^8.11.1",
|
||||
"mermaid": "^9.2.1",
|
||||
"plyr": "^3.7.2",
|
||||
"popper.js": "^1.16.1"
|
||||
"popper.js": "^1.16.1",
|
||||
"include-media": "^1.4.10"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue