<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>CSS架构 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《用 Web Components 构建框架无关的设计系统（实践指南）》</title><link>https://channel.meo-ai.com/posts/650</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/650</guid><pubDate>Sat, 30 May 2026 00:08:24 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《用 Web Components 构建框架无关的设计系统（实践指南）》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23WebComponents&quot; title=&quot;#WebComponents&quot;&gt;#WebComponents&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%AE%BE%E8%AE%A1%E7%B3%BB%E7%BB%9F&quot; title=&quot;#设计系统&quot;&gt;#设计系统&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Elena&quot; title=&quot;#Elena&quot;&gt;#Elena&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23VitePress&quot; title=&quot;#VitePress&quot;&gt;#VitePress&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CSS&quot; title=&quot;#CSS&quot;&gt;#CSS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%97%A0%E9%9A%9C%E7%A2%8D&quot; title=&quot;#无障碍&quot;&gt;#无障碍&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;本文是一份超详细的实战教程，手把手教你用 Web Components（通过 Elena 库）和 VitePress 搭建一个框架无关、可发布的设计系统。核心思路是&quot;最低可行层级&quot;——用 web 标准直接写原子组件，避免框架锁定；组件保持&quot;最笨&quot;状态，把复杂业务逻辑留给应用层。文章涵盖 monorepo 结构搭建、Elena 组件脚手架、条件渲染、&lt;a href=&quot;https://t.me/scope&quot; target=&quot;_blank&quot; title=&quot;@scope&quot;&gt;@scope&lt;/a&gt; 样式隔离、CSS 自定义属性主题化，以及通过 JSDoc + Custom Elements Manifest 自动生成 Props 表格的文档工作流。最终产出的是一个可独立发布的组件包 + 可部署的静态文档站。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 设计系统从第一天就绑定特定框架（如 React）是&quot;令人费解的&quot;——web 标准组件才是可移植、可组合、经得起时间考验的选择&lt;br /&gt;2. Elena 是&quot;刚好够用的抽象&quot;：处理跨框架的 prop/attribute 同步、事件委托等脏活，但不掩盖 web 标准本质&lt;br /&gt;3. 组件应保持&quot;最笨&quot;——被告知显式状态和内容的声明式组件，比内置复杂状态管理的&quot;聪明&quot;组件更健康&lt;br /&gt;4. 设计决策应该在代码中而非 Figma 中完成：现代色彩空间、相对单位、对数排版比例等，设计工具只能模拟浏览器的很小一部分能力&lt;br /&gt;5. 用 &lt;a href=&quot;https://t.me/scope&quot; target=&quot;_blank&quot; title=&quot;@scope&quot;&gt;@scope&lt;/a&gt; 实现样式隔离 + 组件级 CSS 自定义属性作为&quot;最终层 token&quot;，既保证封装又有主题化回退&lt;br /&gt;6. JSDoc 注释即文档：Elena 自动生成 custom-elements.json，VitePress 通过 data loader 直接渲染 PropsTable 和 ComponentHeader&lt;br /&gt;7. 文档即测试场：在 VitePress 中实时预览组件，确保跨框架可移植性；开发时 concurrent 运行 watch + docs:dev 实现热更新&lt;br /&gt;8. 条件渲染示例：同一个组件通过 href prop 自动切换 button/a 标签，CTA 链接按钮的常见需求也能语义化实现&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://piccalil.li/blog/framework-agnostic-design-systems-part-1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://piccalil.li/blog/framework-agnostic-design-systems-part-1/&quot;&gt;https://piccalil.li/blog/framework-agnostic-design-systems-part-1/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://piccalil.li/blog/framework-agnostic-design-systems-part-1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Baking framework lock-in into your design system from day one is a recipe for obsolescence. Component documentation is often tedious and out-of-sync with development. Let’s build a documentation-first, framework-agnostic component library using web standards…&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Piccalilli&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Framework-agnostic design systems: a practical approach to web components&quot; src=&quot;/static/https://cdn4.telesco.pe/file/c5MKnRW_4RxCmUAd723zvjHh4L-nLO0G5lNM1Rh-VVrBb9er230bEw9ZYF4VsuuvxN0BVi0YyOXkUFWq_AH9w49QAI6VMwvxXkDpdbB0gIDD7JCyX5AuJ-Ny1v7brQ_shLRPNX7gf8Ay5l_SATf0p3zFlSNh8IGQdLmviOU5QsWPjJRhu8kA0x5HjeMOkTFPFRTGasUhlk6IDbOVvfbHOqbHmEPWU6n08YbW6SS-PHyBD2nmeqUrbZ2UZL9gZQztNv7Dn7GUuYzet9bvQl3-ds-AwqZZkw1-Bv37QOg9VeUCezZYVhY90R8b3s7XeNV8n08Fs1UfIk9tOVbATrIxUQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Framework-agnostic design systems: a practical approach to web components&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Baking framework lock-in into your design system from day one is a recipe for obsolescence. Component documentation is often tedious and out-of-sync with development. Let’s build a documentation-first, framework-agnostic component library using web standards…&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《告别Tailwind，重新学习组织CSS》</title><link>https://channel.meo-ai.com/posts/642</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/642</guid><pubDate>Sun, 24 May 2026 00:07:06 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《告别Tailwind，重新学习组织CSS》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CSS&quot; title=&quot;#CSS&quot;&gt;#CSS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TailwindCSS&quot; title=&quot;#TailwindCSS&quot;&gt;#TailwindCSS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CSS%E6%9E%B6%E6%9E%84&quot; title=&quot;#CSS架构&quot;&gt;#CSS架构&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%93%8D%E5%BA%94%E5%BC%8F%E8%AE%BE%E8%AE%A1&quot; title=&quot;#响应式设计&quot;&gt;#响应式设计&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%AF%AD%E4%B9%89%E5%8C%96HTML&quot; title=&quot;#语义化HTML&quot;&gt;#语义化HTML&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 作者从Tailwind迁移到语义化HTML+原生CSS，发现Tailwind其实教会了她很多系统性思维（如重置样式、配色、字体层级），现在正把这些系统用原生CSS重新实现。&lt;br /&gt;2. 采用&quot;组件化&quot;&lt;mark class=&quot;highlight&quot;&gt;CSS架构&lt;/mark&gt;：每个组件有独立类名和文件，CSS互不覆盖，编辑时只需关注100行左右的局部代码，大幅降低心智负担。&lt;br /&gt;3. 保留Tailwind的实用系统：直接复制preflight重置样式，沿用配色变量和字体尺寸变量，让原生CSS也能像Tailwind一样快速决策&quot;要大一点就用xl&quot;。&lt;br /&gt;4. 响应式设计新思路：减少媒体查询，改用CSS Grid的auto-fit和grid-template-areas实现自适应布局，这是Tailwind难以做到的&quot;奇怪玩法&quot;。&lt;br /&gt;5. 迁移原因：新版Tailwind强依赖构建工具；作者CSS能力提升后想突破Tailwind的限制；受《Tailwind与CSS的女性气质》一文影响，决定认真对待CSS这门技术而非逃避它。&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://jvns.ca/blog/2026/05/15/moving-away-from-tailwind--and-learning-to-structure-my-css-/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://jvns.ca/blog/2026/05/15/moving-away-from-tailwind--and-learning-to-structure-my-css-/&quot;&gt;https://jvns.ca/blog/2026/05/15/moving-away-from-tailwind--and-learning-to-structure-my-css-/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://jvns.ca/blog/2026/05/15/moving-away-from-tailwind--and-learning-to-structure-my-css-&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Hello! 8 years ago, I wrote excitedly about discovering Tailwind.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Julia Evans&lt;/div&gt;
  
  &lt;div class=&quot;link_preview_title&quot;&gt;Moving away from Tailwind, and learning to structure my CSS&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Hello! 8 years ago, I wrote excitedly about discovering Tailwind.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>#tailwindcss #CSS 《Tailwind 与原生 CSS 结合》Tailwind CSS 4 通过全面转向原生 CSS 变量和改进的配置方式，实现了与传统 CSS 的无缝融合，解决了之前版本的争议性问题</title><link>https://channel.meo-ai.com/posts/426</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/426</guid><pubDate>Thu, 07 Aug 2025 11:22:19 GMT</pubDate><content:encoded>&lt;a href=&quot;/search/result?q=%23tailwindcss&quot; title=&quot;#tailwindcss&quot;&gt;#tailwindcss&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CSS&quot; title=&quot;#CSS&quot;&gt;#CSS&lt;/a&gt; 《Tailwind 与原生 CSS 结合》Tailwind CSS 4 通过全面转向原生 CSS 变量和改进的配置方式，实现了与传统 CSS 的无缝融合，解决了之前版本的争议性问题。它引入了“非病毒”模式(“Non-Viral”)，允许开发者在不影响现有 CSS 架构或设计系统的情况下灵活使用 Tailwind 的工具类或纯 CSS，极大地提升了开发体验，让作者从批评者转变为支持者，标志着 Tailwind 与原生 CSS 的完美结合。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://thathtml.blog/2025/08/tailwind-and-css-friends-at-last/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://thathtml.blog/2025/08/tailwind-and-css-friends-at-last/&quot;&gt;https://thathtml.blog/2025/08/tailwind-and-css-friends-at-last/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://thathtml.blog/2025/08/tailwind-and-css-friends-at-last&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Freely compose UI using native CSS variables &amp;amp; syntax, Tailwind design tokens in CSS, and Tailwind utility classes.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;That HTML Blog&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Friends at Last: Tailwind &amp;amp; CSS…whodathunkit?!&quot; src=&quot;/static/https://cdn4.telesco.pe/file/IGVXRskIa03RA4UfCy71rj2Xxa2Fljt2rg8JY8iqxpFdANTNlfpOIy4x_WuDdq8FsN-4d4SlT-oVrZ_0XDXh_u4O0yyS6IwN8XSwI4HDGepb4M8yYNSwySngGgUMJl3OF8F4TwLPMDdeuvAe8quXxVN6zrsffYVnSzBmhCNu7YXnTrZ0xCS2xuEwmagt0el0r0sbOTgfx5rC929R97UrQClHGajh1u3Y12aDnRxudGgoY9tVvXhicuP4LOuflj2p_mLI8BrjrPP9ETJPEp6GG78pjdL6LSrNAOuEvmorp1XnJwb5vIdza1ZfdAHCPuSO5m_0VpiW45CMDHer5ALz2g.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Friends at Last: Tailwind &amp;amp; CSS…whodathunkit?!&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Freely compose UI using native CSS variables &amp;amp; syntax, Tailwind design tokens in CSS, and Tailwind utility classes.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>