Documentation

Personal Page With Blog

Multi-page personal site (home, portfolio, blog, post) from view/*.html partials on PDRenderKit 1.2.0, with JS masonry and Markdown viewer.

Overview

Item Value
Created 2023-06-21
Category Blog Examples
HTML files index.html, portfolio.html, blog.html, blog-content.html, view/nav.html, view/header.html, view/portfolio.html, view/service.html, view/about.html, view/skill.html, view/client.html, view/contact.html, view/footer.html, view/blog-content.html
Source target/20230621

Live Preview

Open the example in a new tab

Page Sections

Section Description
Nav (view/nav.html) Sticky nav with brand link and :for links HOME / PORTFOLIO / BLOG; hamburger @click=tab toggles the mobile menu below 800px.
Header (view/header.html) Headline, subheading and GitHub / LinkedIn buttons with reveal animation.
Portfolio (view/portfolio.html) JS masonry of placeholder figures from the page's global ary (8 on index, 24 on portfolio.html) with auto-built ALL/TAG1/TAG2/TAG3 filter tabs.
Service (view/service.html) 6 icon articles via :for over icon names with interpolated class fa-{{ e }}.
About (view/about.html) Photo with decorative image/about.svg, bio and two 3-item timelines.
Skill (view/skill.html) 8 circular pie indicators with shuffled :year values 1..8, animated when revealed.
Client (view/client.html) 5 testimonial cards in a horizontal looping carousel with prev/next buttons.
Contact (view/contact.html) :model form (name, email, message) with @click=send alert, beside an embedded Google Maps iframe.
Footer (view/footer.html) Copyright and :for icon links (GitHub, LinkedIn, mail).
Blog list (blog.html) Two-column layout: author card, 8 post links to blog-content.html, prev/next page links; sidebar with search, latest 4 posts, topics and tags; mobile floating bottom search bar.
Blog post (blog-content.html + view/blog-content.html) Article header, details/summary table of contents, PDMarkdownKit viewer rendering the PDMarkdownKit README, prev/next post links, same sidebar.

Interactions

Dependencies

Name Version Source
Font Awesome Free 6.5.2 https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.5.2/css/all.min.css
PDRenderKit 1.2.0 https://cdn.jsdelivr.net/npm/pdrenderkit@1.2.0/dist/PDRenderKit.js
PDMarkdownKit (ES module, blog pages) 1.6.0 https://cdn.jsdelivr.net/npm/pdmarkdownkit@1.6.0/dist/PDMarkdownKit.module.js
Google Maps embed iframe - https://www.google.com/maps/embed?pb=...
Google Analytics (gtag.js) - https://www.googletagmanager.com/gtag/js?id=G-L5VYEZPVXX
js/index.js (index.html, portfolio.html) - ./js/index.js
js/blog.js (blog.html, blog-content.html) - ./js/blog.js (type=module)

Styling

Item Value
SCSS entry sass/index.scss
Output CSS css/index.css
Partials function/_hsbTohsl.scss, _init.scss, _nav.scss, _header.scss, _blog.scss, _portfolio.scss, _service.scss, _about.scss, _skill.scss, _client.scss, _contact.scss, _footer.scss, animation/_section-3.scss, animation/_pie.scss, animation/_bg-move.scss

function/_hsbTohsl defines hsb()/hsba() SCSS functions converting HSB to HSL; _init holds reset, breakpoint vars ($_800: 50rem etc.) and HSB-derived color scales (brand/success/notify/error/info/border). index.scss defines the global .at/.delay/[done] reveal with a gradient wipe ::after and a rotated a.hint watermark. _skill @imports animation/_pie and uses @for over [done][year] for pie rotation; _blog covers list/post/sidebar (sticky), details TOC and .float-bottom; _client handles [row] layouts. animation/_bg-move is present but not imported. Inline <style> sets --col-brand-5 #f1c50e and --gradient-col.

cd target/20230621
npx sass sass/index.scss css/index.css --no-source-map || exit 1

Techniques

External Assets

中文