Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

SSG 中样式变量的变化

Posted on 2023-11-27

社交-OG-bkgd-w-BW-徽标-ctrd-for-1280x6

当您以正确的方式构建网站时,有关样式变量的 CSS 或 Sass 问题就更容易回答。


自从CSS 变量在 2010 年代流行以来, Sass用户就想知道它们可以在多大程度上填充Sass 变量。虽然您当然可以选择仅使用这些样式变量类型中的一种,但最好的选择可能是两者的明智组合。如果您使用精通 Sass 的静态站点生成器 (SSG) 以智能方式构建网站,则尤其如此。

在继续之前,让我承认正确的术语是CSS 自定义属性而不是CSS 变量,但大多数人在谈论这个问题时似乎使用后一个术语,所以让我们放弃并将其称为CSS 变量。此外,这将使您更容易理解接下来的比较。

尽管一些 Web 开发专家表示应该使用 CSS变量或Sass 变量(第一组变量的数量显然在逐月增加),但每种类型的样式变量都有其自己的位置。而且,由于在 SSG 上启用 Sass 通常非常容易,因此您绝对可以使用这两种类型。事实上,你应该这样做。

这是一个简单的经验法则。如果您要使用 JavaScript 在浏览器运行时更​​改值,请将值存储在 CSS 变量中;否则,将其存储在 Sass 变量中。

为什么?好吧,除了无法在运行时更改 Sass 变量的明显原因之外,还因为在 Sass 变量中存储任何内容可以减少浏览器要做的工作,因为该值是由 Sass 编译过程提供的(再次强调,在典型配置的 SSG 中是“无需思考”级别的自动操作)。浏览器要做的工作越少,浏览器交付页面的效率就越高。

因此,假设您正在使用一个变量,例如font-family ,该变量在任何情况下都不应在浏览器中更改。那应该是一个 Sass 变量:

 $sans-serif : ui-sans-serif , system-ui , - apple-system , BlinkMacSystemFont , "Segoe UI" , Roboto , "Helvetica Neue" , Arial , "Noto Sans" , sans-serif , "Apple Color Emoji" , "Segoe UI Emoji" , "Segoe UI Symbol" , "Noto Color Emoji" ;  html , body { font-family : $sans-serif ; }

但是,如果您需要一个变量,其值将(或可以)根据某些运行时事件而改变(就像本页面基于 JavaScript 在浅色和深色模式之间切换的情况一样),那么它必须是 CSS 变量。考虑到这一点,下面是如何使用这两种变量类型的示例,每种变量类型都更有意义:

 // These values won't change, // so they're in Sass variables. $bkgd-light : #fefefe ; $bkgd-dark : #202020 ;  // But this one will, so it's // in a CSS variable... html , body { background-color : var ( -- bkgd ); }  // ... the value of which changes // conditionally (based on the // user-selected `data-theme`) // to the appropriate one of // the Sass variable values. [ data-theme = "light" ] { --bkgd : #{ $bkgd-light } ; } [ data-theme = "dark" ] { --bkgd : #{ $bkgd-dark } ; }

注意:正如您在上面看到的,在 CSS 变量中使用 Sass 变量需要插值(包装#{和} )。

尽管 vanilla CSS 不断进步,但Sass 仍然有很多东西可以提供。在更合适的时候使用 Sass 是在 Web 开发过程中遵循的合理策略。

通过电子邮件回复

原文: https://www.brycewray.com/posts/2023/11/variations-styling-variables-ssgs/?utm_campaign=RSS&utm_source=RSS&utm_medium=RSS

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme