FE Bits Vol.21 | Blog Christmas Effects and Moe Copy Update, AntV Launches Infographic

发表于 2025-12-31 21:49 1181 字 6 min read

cos avatar

cos

FE / ACG / 手工 / 深色模式强迫症 / INFP / 兴趣广泛养两只猫的老宅女 / remote

FE Bits Vol.26 | Gatsby Supports React 19, Rspress 2.0 ReleasedFE Bits Vol.25 | Yarn 6 to Be Rewritten in Rust, CSS Grid Lanes ProgressFE Bits Vol.24 | Rolldown 1.0 RC, Anime.js v4.3 Auto Layout, and Chrome 145 100vw Scrollbar AwarenessFE Bits Vol.23 | jQuery 4 Released, Chrome Adds Vertical Tabs, Astro Acquired by CloudflareFE Bits Vol.22 | CSS @scope Now Widely Available, ViteLand December RecapFE Bits Vol.21 | Blog Christmas Effects and Moe Copy Update, AntV Launches InfographicFE Bits Vol.20 | Blog Updates and FEDAY Highlights, Shadcn Create ReleasedFE Bits Vol.19|New Site Features and React Discloses Two New RSC VulnerabilitiesFE Bits Vol.17|WebGPU Now Supported by All Major Browsers, Ant Design 6 Officially ReleasedFE Bits Vol.16|Cloudflare Incident Report Released, CSSWG Confirms Masonry Layout Syntax grid-lanesFE Bits Vol.15|Chrome Width/Height Animation Reflow Optimization, Node Type Stripping Goes StableFE Bits Vol.14|Chrome Supports Split Views, npm Enforces 2FA, Rspack 1.6FE Bits Vol.13|TypeScript Becomes GitHub's Most-Used Language for the First Time, VoidZero Raises $12.5M Series AFE Bits Vol.12|Next.js 16 Released, Docusaurus 3.9 AI Search, ChatGPT Atlas LaunchedFE Bits Vol.11|React Native 0.82 New Architecture Lands, Bun 1.3 Full-Stack RuntimeFE Bits Vol.10|React Compiler v1.0 Released, React Foundation Established, Vite Documentary and Vite+ LaunchFE Bits Vol.9|Chrome DevTools Launches MCP, Nuxt UI Pro Goes Open Source and FreeFE Bits Vol.8|PyCon Trip, Cloudflare's Big Bug, and NPM Sandworm AlertFE Bits Vol.7|Security Alerts for chalk, debug and Other npm Packages; Remotion Sponsors MediabunnyFE Bits Vol.6|What Changes and What Stays, Chrome's 17th Anniversary and CSS Mixins DraftFE Bits Vol.5|Nx Package Compromised, ESLint Multi-threaded Linting, and Firefox Experimental PWAFE Bits Vol.4|Next 15.5, RN 0.81, and Some Handy ToolsFE Bits Vol.3|CSS attr() Typed Evolution, PostCSS Retrospective After 12 YearsFE Bits Vol.2|V8 Speeds Up JSON.stringify 2x, Vite Weekly Downloads Surpass Webpack for the First TimeFE Bits Vol.1|Hello World, TanStack DB First Beta Release
This issue covers personal projects and frontend news, including CSS-only LQIP (Low Quality Image Placeholders) for the blog, a toggleable Christmas effects module, and the Moe Copy AI plugin v0.2.0 update. Also introduces new CSS features like text-decoration-inset, anchor positioning fallback detection, and container style queries, along with frontend community highlights and useful tools.

This article has been machine-translated from Chinese. The translation may contain inaccuracies or awkward phrasing. If in doubt, please refer to the original Chinese version.

This issue’s URL: https://blog.cosine.ren/post/weekly-21 This newsletter aims to update every Sunday. Subscribe to the RSS feed. WeChat Official Account: FE Bits (前端周周谈 FE Bits). Click the original link to view the full article. QQ discussion group 598022684 for frontend tech & life chat. You can also submit your own articles there. Feel free to join — it’s more of a fan group in nature. The newsletter content is also open-sourced at fe-bits-weekly. Follow for updates.

Today is December 31, 2025, Wednesday.

New Year’s holiday — skipping one issue, so today I’m publishing last Sunday’s.

The year-end review is in progress, but I’m not sure I’ll finish it today.

Personal Projects

This week was Christmas, and the frontend community was pretty quiet. But I happened to make a bunch of updates to my own projects.

Looking back today, there were actually quite a few.

I published a blog post: “The Complete Worktrunk Guide: Making Git Worktree and Claude Code Coexist Peacefully” — I really love this tool so I wrote a post about it.

Blog Project

First, some blog updates.

LQIP

Initially, I wanted to implement CSS-only LQIP (Low Quality Image Placeholders) in my blog, similar to Minimal CSS-only blurry image placeholders, using a single CSS custom property —lqip to encode a blurry preview of the image.

The technical principle behind that article is encoding image information using a 20-bit integer (8-bit Oklab base color + 12-bit luminance components), decoding in CSS through bitwise operations (mod(), round(down), pow(), etc.), rendering the blur effect using overlapping radial gradients, and achieving smooth transitions with quadratic easing.

I chose a simpler implementation, not pursuing CSS-only, since I planned to handle blog-internal images first and optimize external images in articles later. Here’s the final effect:

Just run nr generate:lqips and it generates a lqips.json file under assets. If this file doesn’t exist, no placeholders are provided.

Later, I saw someone propose a better implementation, which has been added to the TODO!

Christmas Effects

Ultra-fancy!! Christmas arrived, and I wanted to add some holiday atmosphere to the blog. I ended up implementing a toggleable Christmas effects module including snowflakes, string lights, and a Christmas color scheme.

The snowflake effect was learned from Just snow on Shadertoy! The string lights were based on Toby J’s CodePen, with performance optimizations and adjustments to Christmas colors (red, green, gold).

I knew some people would call it over-the-top, so I added a toggle switch. Enjoy!

Christmas effects showcase 1

If it’s distracting while reading, you can toggle it off.

Christmas effects showcase 2

Notice the snow has two layers — the content container is sandwiched between snowflakes. Background snowflakes drift behind the article while foreground snowflakes float in front, creating a parallax effect that I’m pretty happy with.

Christmas effects showcase 3

The snowflake effect above is the initial version. The current version has been further optimized.

Usage Guide and Feedback

I put together a basic blog usage guide, and switched the day/night mode transition animation to sweep from left to right. While I wouldn’t recommend using it at this stage, you’re welcome to fork and modify it. I plan to focus on refactoring and performance optimization during the New Year holiday, then open up a cleaned-up repository for easy deployment — that’s when you can start playing with it!

Then I discovered that alma’s feedback page looks great. It uses featurebase.app, so I wanted to try it too and made a feedback page for the blog theme (whether anyone uses it remains to be seen):

Moe Copy AI Plugin Update

The Moe Copy AI plugin also got a major overhaul, and I received a PR from a good friend! Published v0.2.0 — it’s getting better and better.

The PR builds on the original direct fetch approach, adding “open in background tab” and “navigate in current page” options for fetching. The next-page button selector now uses XPath, and auto-pagination was added for cross-page batch scraping. Thanks to @hyoban for this PR #15.

Welcome to use it! Feedback welcome! Docs are here.

Articles & Community Updates

CSS New Features

text-decoration-inset

See the Pen VYaPVgr by mrdanielschwarz (@mrdanielschwarz) on CodePen.

CSS text-decoration-inset allows developers to trim the left and right edges of text decorations (such as underlines), much like setting padding, to precisely align decorations with text content. The property supports relative units like em, enabling decorations to scale with font size, and can be combined with animations and transitions to create more native, eye-catching dynamic text decoration effects.

Tools

  • BentoPDF: A powerful, privacy-focused open-source PDF toolkit that can be self-hosted, offering over 50 PDF operation tools covering editing, conversion, security, optimization, and more.

CodePen Picks

CSS-Only Stacking Cards

Stacking cards implemented with CSS Scroll-Timeline, no JavaScript needed:

See the Pen YPWXqmx by karabharat (@karabharat) on CodePen.

easy rainbow segments card border cases

See the Pen RNRPEqb by thebabydino (@thebabydino) on CodePen.

Article: Ever wanted to have a rotating rainbow segments border

Implementing a rotating border effect composed of equally-divided rainbow color segments. The author notes that when the container’s aspect ratio is far from square, using CSS conic-gradient() alone can’t maintain equal segments, and separator lines are hard to keep perpendicular to the border. Therefore, the article proposes a better solution: using SVG <rect> elements to precisely control each segment’s shape and animation, achieving a more stable and visually perfect effect.

喜欢的话,留下你的评论吧~

© 2020 - 2026 cos @cosine
Powered by theme astro-koharu · Inspired by Shoka