Welcome to this comprehensive showcase of the Retro-Compatible Zola Theme! This article demonstrates all the features, elements, shortcodes, and styling options available in this unique theme designed for maximum backward compatibility with browsers dating back to the 90s.

Changelog

DateChange
2025-07-11Improved accessibility with skip links, focus indicators, and screenreader support
2025-06-16Initial version of the theme showcase
2025-06-16Added code block styling with retro terminal look
2025-06-16Integration of additional fonts (Visitor, PixelOperator, Petiote, Virtual DJ, 5x5, Ambitsek, AddStandardBitmap)
2025-06-16Headings highlighted with color (Purple)
2025-06-16Added changelog table

What is Zola?

Zola is a blazing-fast static site generator (SSG) written in Rust. It takes your content written in Markdown, applies templates, and generates a complete HTML website that can be served by any web server. Some key features of Zola include:

  • Speed: Built with Rust for exceptional performance
  • Simplicity: Easy to use with a single binary
  • Flexibility: Powerful templating with Tera
  • Built-in Features: Syntax highlighting, search, and more
  • Live Reload: Instant preview of changes during development

About This Theme

The Retro-Compatible Zola Theme combines nostalgic aesthetics with modern functionality, offering:

  • Maximum Backward Compatibility: Support for browsers dating back to the 90s
  • Responsive Design: Optimized for desktop, tablet, and mobile devices
  • Retro Shortcodes: Special retro-style formatting elements
  • Pixel Fonts: VT323 and Perfect DOS VGA 437 for the authentic look
  • Three-Column Layout: Classic web design with modern responsiveness
โ„น๏ธ THEME PURPOSE

This theme was specifically designed to provide a nostalgic web experience while maintaining compatibility with both vintage and modern browsers. Itโ€™s perfect for retro computing enthusiasts, digital preservation projects, or anyone who appreciates the aesthetic of early web design.


Compatibility Features

Browser Compatibility

This theme is designed to work with browsers dating back to the 90s, including:

  • Netscape Navigator 3.0 and earlier
  • Internet Explorer 3.0 and earlier
  • Opera 3.0 and earlier
  • Early WebTV browsers
  • Text-based browsers like Lynx

Technical Compatibility Features

  • HTML 4.01 Strict Doctype: For maximum compatibility
  • Table-based layouts: Instead of Flexbox or Grid
  • Simple color definitions: Using hexadecimal color codes
  • No JavaScript dependencies: All features work without JavaScript
  • Email-based forms: For guestbook and contact functionality

Font Showcase

This theme uses special pixel fonts to create an authentic retro look. Hereโ€™s a showcase of the main fonts used:

Main Fonts

VT323: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

Perfect DOS VGA 437: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

Commodore 64: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

Consolas: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

Courier New: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

Visitor: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

PixelOperator: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

Petiote: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

Virtual DJ: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

5x5: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

Ambitsek: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()

AddStandardBitmap: The quick brown fox jumps over the lazy dog. 1234567890 !@#$%^&*()


Special Font: SerenityOS-Emoji

๐Ÿ˜€ ๐Ÿ˜ƒ ๐Ÿ˜„ ๐Ÿ˜ ๐Ÿ˜† ๐Ÿ˜… ๐Ÿ˜‚ ๐Ÿคฃ ๐Ÿฅฒ โ˜บ๏ธ ๐Ÿ˜Š ๐Ÿ˜‡ ๐Ÿ™‚ ๐Ÿ™ƒ ๐Ÿ˜‰ ๐Ÿ˜Œ ๐Ÿ˜ ๐Ÿฅฐ ๐Ÿ˜˜ ๐Ÿ˜— ๐Ÿ˜™ ๐Ÿ˜š ๐Ÿ˜‹ ๐Ÿ˜› ๐Ÿ˜ ๐Ÿ˜œ

Font Combinations

Header Style (VT323, Perfect DOS VGA 437)

This is a paragraph in VT323 font. It's designed to look like old terminal text but with better readability for longer content blocks.

This is code text in Perfect DOS VGA 437 font.

Font Sizes Comparison

Heading 1 (26px)

Heading 2 (22px)

Heading 3 (20px)

Regular paragraph text (20px)

Small text (16px)

Extra small text (14px)

Shortcodes

The theme includes various shortcodes to enhance your content with retro-style elements.

Infoboxes

Infoboxes are used to highlight important information in different styles:

Information Box

โ„น๏ธ INFORMATION

This is a standard information box for general notices and information.

Warning Box

โš ๏ธ WARNING

This is a warning box for important notices and potential issues.

Tip Box

๐Ÿ’ก TIP

This is a helpful tip to improve your experience with the theme.

Retro Dividers

Dividers help separate content sections with retro-style lines:

Single Line Divider


Double Line Divider


Dashed Line Divider


ASCII Art

The theme supports ASCII art through a dedicated shortcode:

____      _             ____            _          
 / ___|_ __(_) |_ _   _  | __ )  __ _ ___(_) ___ ___ 
| |   | '__| | __| | | | |  _ \ / _` / __| |/ __/ __|
| |___| |  | | |_| |_| | | |_) | (_| \__ \ | (__\__ \
 \____|_|  |_|\__|\__, | |____/ \__,_|___/_|\___|___/
                  |___/
_____  _____  _____  _____  _____  _____  _____  _____  _____  _____ 
|_____||_____||_____||_____||_____||_____||_____||_____||_____||_____|
                                                                      
 _____                                                         _____ 
|_____|  _____ _____ _____ _____ _____ _____ _____ _____      |_____|
        |_____||_____||_____||_____||_____||_____||_____|            
 _____                                                         _____ 
|_____|  _____ _____ _____ _____ _____ _____ _____ _____      |_____|
        |_____||_____||_____||_____||_____||_____||_____|            
 _____                                                         _____ 
|_____||_____||_____||_____||_____||_____||_____||_____||_____||_____|
_______ _    _ ______  __  __  ______      _______ _    _ _____  ______          _______ ______ 
 |__   __| |  | |  ____|/_ |/_ |/ __ \ \    / / ____| |  | |  __ \|  ____|   /\   |__   __|  ____|
    | |  | |__| | |__    | | | | |  | \ \  / / (___ | |__| | |  | | |__     /  \     | |  | |__   
    | |  |  __  |  __|   | | | | |  | |\ \/ / \___ \|  __  | |  | |  __|   / /\ \    | |  |  __|  
    | |  | |  | | |____  | | | | |__| | \  /  ____) | |  | | |__| | |____ / ____ \   | |  | |____ 
    |_|  |_|  |_|______| |_| |_|\____/   \/  |_____/|_|  |_|_____/|______/_/    \_\  |_|  |______|
                                                                                                  
  _______ _    _ ______  __  __  ______      _______ _    _ _____  ______          _______ ______ 
 |__   __| |  | |  ____|/_ |/_ |/ __ \ \    / / ____| |  | |  __ \|  ____|   /\   |__   __|  ____|
    | |  | |__| | |__    | | | | |  | \ \  / / (___ | |__| | |  | | |__     /  \     | |  | |__   
    | |  |  __  |  __|   | | | | |  | |\ \/ / \___ \|  __  | |  | |  __|   / /\ \    | |  |  __|  
    | |  | |  | | |____  | | | | |__| | \  /  ____) | |  | | |__| | |____ / ____ \   | |  | |____ 
    |_|  |_|  |_|______| |_| |_|\____/   \/  |_____/|_|  |_|_____/|______/_/    \_\  |_|  |______|
                                                                                                  
  _______ _    _ ______  __  __  ______      _______ _    _ _____  ______          _______ ______ 
 |__   __| |  | |  ____|/_ |/_ |/ __ \ \    / / ____| |  | |  __ \|  ____|   /\   |__   __|  ____|
    | |  | |__| | |__    | | | | |  | \ \  / / (___ | |__| | |  | | |__     /  \     | |  | |__   
    | |  |  __  |  __|   | | | | |  | |\ \/ / \___ \|  __  | |  | |  __|   / /\ \    | |  |  __|  
    | |  | |  | | |____  | | | | |__| | \  /  ____) | |  | | |__| | |____ / ____ \   | |  | |____ 
    |_|  |_|  |_|______| |_| |_|\____/   \/  |_____/|_|  |_|_____/|______/_/    \_\  |_|  |______|

Additional Code Examples

Rust Example (Zola is written in Rust!)

use std::collections::HashMap;

fn main() {
    // Create a new HashMap to store user scores
    let mut scores = HashMap::new();
    
    // Insert some values
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    scores.insert(String::from("Red"), 25);
    
    // Access a value
    let team_name = String::from("Blue");
    let score = scores.get(&team_name).unwrap_or(&0);
    
    println!("Team {} score: {}", team_name, score);
    
    // Iterate over all key-value pairs
    for (key, value) in &scores {
        println!("{}: {}", key, value);
    }
}

HTML Example

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>Retro Web Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style type="text/css">
        body {
            background-color: #000000;
            color: #33ff33;
            font-family: "Courier New", monospace;
        }
        table {
            border-collapse: collapse;
            width: 100%;
        }
        td {
            border: 1px solid #444444;
            padding: 8px;
        }
    </style>
</head>
<body>
    <h1>Welcome to My Retro Website</h1>
    <p>This is a simple example of HTML 4.01 Strict.</p>
    <table>
        <tr>
            <td>Row 1, Cell 1</td>
            <td>Row 1, Cell 2</td>
        </tr>
        <tr>
            <td>Row 2, Cell 1</td>
            <td>Row 2, Cell 2</td>
        </tr>
    </table>
</body>
</html>

Layout Features

The theme uses a three-column layout:

  1. Left Sidebar: Navigation, search, and status panels
  2. Main Content: Articles and primary content
  3. Right Sidebar: Additional links, visitor counter, and GIF panels

The layout automatically collapses on mobile devices for better readability.

Retro Panels

The theme includes various retro-style panels:

  1. Status Panel: Displays an animated GIF showing the current status
  2. Links Panel: List of useful web links with matching emojis
  3. Obligatory GIFs Panel: Display of animated GIFs in retro style
  4. Visitor Counter: Simulated visitor counter that grows over time

Improved Accessibility

The theme has been equipped with numerous accessibility improvements:

  • Skip Links: Allow skipping the navigation to get directly to the main content.
  • Focus Indicators: Clearly visible focus styles for all interactive elements.
  • Screen Reader Support: Use of ARIA attributes and semantic HTML.
  • High Contrast: High-contrast color scheme for better readability.

Customization Options

The theme offers extensive customization options:

  • Central configuration in sass/partials/_variables.scss
  • Customizable header with background image
  • Adjustable logo sizes for desktop and mobile
  • Configurable GIF panels in different areas of the page
  • Button styling and appearance settings
๐Ÿ’ก CUSTOMIZATION TIP

All design elements can be configured centrally in the file sass/partials/_variables.scss, making it easy to maintain a consistent look throughout your site.

Form Elements

The theme includes retro-styled form elements:

Tables

The Retro-Compatible Zola Theme offers three different table shortcodes, each optimized for different use cases.

Table with Custom Column Widths

The table shortcode allows you to set the width of each column individually. The column widths are specified as percentages and must add up to 100%.

Syntax:

{โ€‹% table(cols="30%,70%") %โ€‹}
| Property | Description |
|----------|-------------|
| Name     | The name of the property |
| Value    | A longer description that needs more space |
{โ€‹% end %โ€‹}

Example:

PropertyDescription
NameThe name of the property
ValueA longer description that needs more space

Example with 4 Columns of Different Sizes

You can define any number of columns with different widths:

{โ€‹% table(cols="15%,25%,20%,40%") %โ€‹}
| ID | Category | Priority | Description |
|----|----------|----------|-------------|
| 001 | Hardware | High | New graphics card for workstation |
| 002 | Software | Medium | Operating system update |
| 003 | Network  | Low      | Office Wi-Fi optimization |
{โ€‹% end %โ€‹}

The result looks like this:

IDCategoryPriorityDescription
001HardwareHighNew graphics card for workstation
002SoftwareMediumOperating system update
003NetworkLowOffice Wi-Fi optimization

Shortcut Table

The shortcut_table shortcode is specifically optimized for displaying keyboard shortcuts. It uses fixed column widths (40% for the first column, 60% for the second) to ensure a consistent presentation.

Syntax:

{โ€‹% shortcut_table() %โ€‹}
| Action | Shortcut |
|--------|----------|
| Copy | Ctrl+C |
| Paste | Ctrl+V |
{โ€‹% end %โ€‹}

Example:

ActionShortcut
CopyCtrl+C
PasteCtrl+V
SaveCtrl+S
OpenCtrl+O

Changelog Table

The changelog_table shortcode is optimized for changelogs. It gives the date column a fixed width (100px) so that dates are displayed uniformly.

Syntax:

{โ€‹% changelog_table() %โ€‹}
| Date | Changes |
|------|--------|
| 2025-01-01 | Initial release |
| 2025-01-15 | Bug fixes |
{โ€‹% end %โ€‹}

Example: The changelog table at the beginning of this page uses the changelog_table shortcode.

Note on Displaying Shortcode Examples

To display shortcode examples in the documentation without them being executed, a special trick is used: invisible spaces (Zero-Width Spaces \u200b) are inserted between the curly braces and the percent signs. This prevents Zola from recognizing and executing the shortcodes, but they are not visible to the user.

Example: {\u200b% shortcode %\u200b} instead of {% shortcode %} (with an invisible space between { and % and between % and })

Markdown Troubleshooting

Common Layout Issues

When working with this theme (or any Markdown-based system), certain formatting issues can break your layout. Here are some common problems and solutions:

HTML-Like Syntax in Markdown

โš ๏ธ AVOID RAW HTML TAGS IN TEXT

Using angle brackets (< and >) in your Markdown text can cause layout problems because they might be interpreted as HTML tags. This can break the entire page layout if the โ€œtagโ€ is never closed.

Problem Example:

Select **<Yes>** to enable automatic updates.

In this example, <Yes> might be interpreted as an HTML tag named โ€œYesโ€, causing layout issues.

Solutions:

  1. Use quotes instead of angle brackets:

    Select **"Yes"** to enable automatic updates.
    
  2. Use backticks to format as code:

    Select **`<Yes>`** to enable automatic updates.
    
  3. Use HTML entities:

    Select **&lt;Yes&gt;** to enable automatic updates.
    
  4. Use escape characters:

    Select **\<Yes\>** to enable automatic updates.
    

Other Common Markdown Issues

  • Unclosed code blocks: Always ensure your code blocks have opening and closing backticks on their own lines.
  • Malformed tables: Tables require a specific format with headers and separators.
  • Nested HTML: Be careful when nesting HTML elements inside Markdown content.
๐Ÿ’ก DEBUGGING LAYOUT ISSUES

If your page layout breaks, try removing sections of content one by one until the layout displays correctly. This can help identify which specific content is causing the problem.



Getting Started

โ„น๏ธ GETTING STARTED

To get started with this theme:

  1. Clone the repository into your Zola themes directory
  2. Activate the theme in your config.toml
  3. Run zola serve to see a preview

For detailed instructions, see the Main Documentation.


Conclusion

The Retro-Compatible Zola Theme offers a unique combination of nostalgic design and modern functionality. Itโ€™s perfect for:

  • Retro computing enthusiasts
  • Digital preservation projects
  • Personal websites with a nostalgic touch
  • Anyone who appreciates the aesthetic of early web design