Semantic Columns Without Presentational Classes: Jeet's Fraction Mixins
Jeet's preprocessor mixins let you define fractional column widths in CSS instead of HTML classes, keeping markup semantic—but the project appears unmaintained, so verify before adopting.
19 Nov 2025, 02:01 UTC

The problem: presentational classes leak into HTML
Many CSS grids ask you to write markup like col-md-4 or grid-col-6. Those classes describe presentation, not content. When a designer changes a layout from thirds to fourths, you often have to edit HTML templates across the site instead of updating a single stylesheet. For teams that value semantic HTML, that coupling between structure and layout is a recurring friction point.
Jeet's approach: fractions in the stylesheet
Jeet is a preprocessor-based CSS grid system available for Stylus, Sass, and Less. A preprocessor is a tool that extends CSS with features like variables and reusable rule blocks. Jeet provides mixins—reusable blocks of styles—such as col(1/3) that generate fractional column widths directly in CSS. Companion mixins like gut() handle spacing between columns, and shift() adjusts source order without changing the HTML document order. Because the rules live in your stylesheet, your HTML can remain descriptive: <article>, <aside>, <section>, rather than presentational class attributes.
Worked example: a two-column layout in Sass
Assume you are using Sass and have Jeet installed in your project. The following is a minimal stylesheet fragment, not a claim that it was tested in production.
@import "jeet";
.main-content {
@include col(2/3);
@include gut();
}
.sidebar {
@include col(1/3);
@include gut();
}
Run the compiler from your project root. The command below assumes Sass is installed locally or globally and that the Jeet files are reachable from your import path. You need read access to the source stylesheet and write access to the output folder; no elevated permissions are required.
sass src/styles.scss dist/styles.css
After compiling, open dist/styles.css or use browser dev tools to inspect the generated rules. Check that .main-content receives a width matching two-thirds of its container and that .sidebar receives one-third, with gutters applied between them. If the output contains no width declarations, the import path or mixin name may be incorrect for your installed Jeet version.
Trade-offs and limitations
- Build step required: Jeet depends on a CSS preprocessor. Projects using plain CSS, PostCSS without a compatible plugin, or utility-first tooling may find it adds unnecessary complexity.
- Maintenance status is uncertain: The research brief notes Jeet appears largely unmaintained, with unclear recent releases and community activity as of 2026. Treat new feature support and security patches as unverified.
- Browser verification needed: Documentation is older. Fractional widths and gutter behavior should be checked in current Chrome, Firefox, Safari, and mobile browsers before shipping.
Practical verification before adoption
- Inspect the Jeet repository or npm package README to confirm which preprocessors and mixin signatures are supported. Look for the
col(),gut(), andshift()definitions. - Compile a minimal file using
col(1/2)andgut(), then inspect the generated CSS in browser dev tools. - Test the grid at your target viewport sizes to confirm columns stack or resize as expected.
If Jeet passes those checks, it can keep your HTML clean and layout logic centralized in one stylesheet. If the package appears abandoned or the preprocessor step conflicts with your stack, a modern native CSS grid implementation may be the safer long-term choice.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.