Custom HTML Websites
Information
Custom-coded websites offer unlimited flexibility for embedding gettickr.app timers. This guide is designed for developers and covers integration methods from basic HTML to advanced framework implementations.
Quick Start Overview
| Implementation | Difficulty | Best For | Time Required |
|---|---|---|---|
| Basic HTML | Easy | Static sites | 2 minutes |
| Responsive CSS | Easy | Mobile-friendly sites | 5 minutes |
| JavaScript | Medium | Dynamic loading | 10 minutes |
| Static Builders | Medium | JAMstack sites | 5 minutes |
| React/Vue | Medium | SPAs, modern apps | 10 minutes |
| Advanced | Hard | Complex integrations | 30+ minutes |
Tip
Basic HTML Integration
The simplest integration method uses a standard HTML iFrame element.
Minimal Implementation
HTML Attributes Reference
| Attribute | Required | Example Value | Purpose |
|---|---|---|---|
src | ✅ Yes | https://gettickr.app/r/#abc123 | Timer URL |
width | ✅ Yes | 800 or 100% | iFrame width |
height | ✅ Yes | 400 | iFrame height |
frameborder | ⬜ No | 0 | Remove border (legacy) |
style | ⬜ No | border: none; | CSS styling |
title | ⬜ Yes | "Countdown Timer" | Accessibility description |
aria-label | ⬜ No | "Time remaining: 3 hours" | Screen reader description |
loading | ⬜ No | lazy | Lazy loading |
allow | ⬜ No | fullscreen | Feature permissions |
sandbox | ⬜ No | allow-scripts allow-same-origin | Security restrictions |
referrerpolicy | ⬜ No | no-referrer-when-downgrade | Referrer header policy |
CSS Styling and Layout
Centered Timer
Grid Layout with Multiple Timers
Hero Section Timer
Static Site Generators
Jekyll
Hugo
Gatsby (React)
Eleventy (11ty)
Tip
Framework Integration
React Component
Vue 3 Component
Angular Component
Information
Performance Optimization
Lazy Loading
Preload Critical Timers
Async Loading Script
Performance Best Practices
| Practice | Implementation | Benefit |
|---|---|---|
| Lazy Loading | Add loading="lazy" attribute | Faster initial page load |
| DNS Prefetch | <link rel="dns-prefetch"> | Faster connection |
| Preconnect | <link rel="preconnect"> | Faster resource loading |
| Async JavaScript | Load after page load event | Non-blocking load |
| Intersection Observer | Load when scrolling into view | Deferred loading |
| Minimize Timer Count | 1-3 timers per page max | Better performance |
| Appropriate Dimensions | Match design size | Reduce unnecessary render |
| Remove Unused Attributes | Strip unnecessary HTML | Smaller DOM |
Security Best Practices
Content Security Policy (CSP)
Sandbox Attribute (if required)
Warning
HTTPS Only
Information
Troubleshooting
Common Issues
| Problem | Possible Cause | Solution |
|---|---|---|
| Timer not appearing | Incorrect URL | Verify timer ID and URL |
| Black/blank iframe | Network issue | Check browser console for errors |
| Content Security Policy | CSP blocking iframe | Add gettickr.app to frame-src |
| Mixed content warning | HTTP on HTTPS page | Use https:// in timer URL |
| Timer too small | Container size too small | Adjust container width/height |
| Overlapping content | CSS conflicts | Use isolation or z-index |
| Slow loading | No lazy loading | Add loading="lazy" attribute |
| JavaScript errors | Syntax error in code | Check browser console, validate JS |
Next Steps
- iFrame Integration - Basic iFrame documentation
- WordPress Integration - If also using WordPress
- Shopify Integration -
For e-commerce sites
Tip