Welcome to this exciting exploration of how you can track user interaction on your website using only CSS, without the need for JavaScript. This method, known as Crooked Style Sheets, leverages some clever tricks in CSS to gather basic user information while offering a glimpse into their interactions with your website. While it may seem unconventional, this technique showcases the remarkable flexibility and potential of CSS.
The Essentials of Crooked Style Sheets
With Crooked Style Sheets, you can dive into various user interactions, including:
- Screen resolution detection.
- Browser detection.
- Link click and hover detection.
- Font detection.
- Measurement of hover duration.
- Input detection through form fields.
How It Works
The magic of this method lies in the ability of CSS to load external images as needed. For instance, consider a waiter at a restaurant who brings you a dish only when you order it. Similarly, CSS uses the url(foo.bar); property to load external resources only when required. Here’s how it unfolds:
css#link2:active::after
content: url(track.php?action=link2_clicked);
In this example, the CSS selector for a link activates an URL call only when the link is clicked, allowing the server-side PHP script to log the action and timestamp.
Breakdown of Key Features
1. Browser Detection
Browser detection can be done through CSS property checks. It’s akin to a friend asking if you know of a specific restaurant by mentioning its special dish:
css@supports (-webkit-appearance:none)
#chrome_detect::after
content: url(track.php?action=browser_chrome);
Here, if the browser supports a specific property, the CSS fetches the corresponding tracking URL.
2. Font Detection
Imagine you are looking for a rare book in a library. The CSS method applies a font-family rule and checks if the specified font exists:
@font-face
font-family: Font1;
src: url(track.php?action=font1);
#font_detection1
font-family: Calibri, Font1;
If the font isn’t found, it will trigger the tracking script to be executed, akin to an empty shelf causing a librarian to note that a book was missing.
3. Hover Duration Measurement
Hover duration can be tracked through cleverly defined animations. Think of it as measuring how long a friend lingers at the dessert table:
@keyframes pulsate
0% background-image: url(track.php?duration=00)
20% background-image: url(track.php?duration=20)
40% background-image: url(track.php?duration=40)
100% background-image: url(track.php?duration=100);
#duration:hover::after
animation: pulsate 5s infinite;
In this context, every stage of the hover duration triggers a URL call, allowing you to see how long users engage with specific elements.
4. Input Detection
Using the :checked selector, you can track whether a user interacts with checkboxes:
css#checkbox:checked
content: url(track.php?action=checkbox);
This method is a straightforward way to log user interactions with form elements.
Troubleshooting
As with any creative solution, challenges may arise while implementing Crooked Style Sheets. Here are some troubleshooting tips:
- Ensure your CSS syntax is correct; common errors can lead to tracking failures.
- Verify that the PHP scripts are properly set up and accessible by the CSS rules.
- Check that the resources being loaded are correctly formatted and linked.
For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.
Final Thoughts
Despite some limitations, such as only being able to track the first interaction with links or difficulties in capturing true screen dimensions, Crooked Style Sheets reveals the potential of utilizing CSS for basic analytics.
At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

