Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A responsive Hexo theme for photography and design portfolios, ported from the HTML5Up Phantom template.

A GatsbyJS starter that ports Christine Cha's Gridfolio portfolio theme with SCSS, ESLint, and Prettier.
Phantom is a free, responsive Hexo theme for photography and design portfolios, ported from the HTML5Up Phantom template by Jonathan Klughertz.
Phantom is a visual portfolio theme built on the Hexo static site generator. It takes a Hexo blog configured with the theme and generates a responsive site with a tile-based grid of cover images, individual post pages, image galleries, and social links. The theme is adapted from the HTML5Up Phantom template and requires the hexo-renderer-scss package because it processes styles with SCSS. Its external libraries include jQuery, FeatherLight.js for galleries, and Skel for responsive layouts.
Phantom is aimed at photographers and visual designers who want a clean, grid-based portfolio site generated from Hexo without hand-coding HTML. It also suits creative bloggers who want to emphasize imagery over text, and developers who want a minimal, configurable Hexo theme they can customize with SCSS.
Installation is done by cloning the repository into your Hexo blog's themes folder, e.g. git clone https://github.com/klugjo/hexo-theme-phantom themes/phantom, then setting theme: phantom in the main _config.yml. You must also install hexo-renderer-scss. Per-post configuration uses front matter: subtitle adds a tagline, cover_index sets the thumbnail, and cover_detail sets the post hero image.
show_dates is enabled; the theme's design is fixed to the HTML5Up grid unless you work in SCSS.Yes. It is based on the free HTML5Up Phantom template and is released as an open-source Hexo theme on GitHub.
No. Categories are not displayed anywhere in the theme, though posts can still use tags.
Set show_dates: true in the theme's _config.yml. By default dates are hidden.
The default index cover is 450x450 pixels and the default detail cover is 1300x500 pixels, both configurable in _config.yml.
Yes, but the documentation says if you specify both a Disqus shortname and a Facebook app ID, each post will show two comment sections — so it is recommended to choose one provider.