”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 字体大小变量命名困境

字体大小变量命名困境

发布于2025-05-03
浏览:824

通常,一个项目将具有一组预先确定的字体大小,通常为变量,以寻求某种秩序和一致性的方式命名。任何相当大的项目都可以使用类似的项目。总是有标题,段落,列表等。您可以明确,直接设置字体大小(例如字体大小:18px)。原始CSS。我确实偶尔会看到 - 不仅要混合大小,还混合了诸如PX,REM和EM等单元。 这就是为什么项目的CSS通常使用变量或混合素的原因 - 我们正在为结构,可维护性以及最终的一致性拍摄。我们都知道命名很难,而且比命名字体尺寸变量来了解原因并不多。我们应该如何命名一个小字体尺寸变量,以便显然它小于大字体尺寸变量?如果我们需要在它们之间插入一个新变量,会发生什么 - 那是一个清楚地解释其与其他大小变量的关系的方式?

我们将继续讨论这篇文章中字体大小变量的命名。但是,实际上,该问题超出了字体大小到任何形式的尺寸或长度值。想想桨,边距,宽度,高度,边界半径等。这些东西也需要结构和一致性!

如何在项目中定义字体大小?它看起来像这样的自定义变量:

:根 { / *字体大小变量 */ - 小:12px; - 中等:16px; - 大:24px; }

美好的。过了一会儿,假设设计师添加了一个新的

,则为英雄部分。它是
:root {
  /* Font size variables */
  --small: 12px;
  --medium: 16px;
  --large: 24px;
}

第二天,设计师制作了一个不错的表单标签,该标签再次具有新的字体尺寸。但是,这个新尺寸比小的大,但比中等大。

开始了。 你应该怎么称呼它? $中小型? $ Small-2? $ smedium?无论您命名如何,您都不会对此感到满意。因为没有这个话。

,或者您应该重构吗?创建一个新的$ XSMALL,然后将$ SMILL的所有实例更改为$ XSMALL?然后,您可以将$ SMILL用于表单标签?您会忘记在某个地方更改的风险很小,嘿,Presto:一个错误。下次会发生什么,当引入大小大于$ Medium Variable值的东西时会发生什么?我们还必须重构$大和$ xlarge吗?

我建议始终遵守规模。一个简单的修复方法是进一步抽象,也许抛弃数字和大小支持功能名称,例如$ form-label而不是$ small-2或$ xsmall。

,但想象一下具有这样的字体大小:

这是一个损坏的比例。这是一个尺寸概念,一个组件概念混合在一起。它提出了问题。是否应该允许警报或按钮使用$表格标签? yuck。

也许您有一件希腊的事情,命名变量$ alpha,$ beta,$ gamma?然后让我问你,那是什么大于$ alpha? $ alpha-large?还是等待,$ alpha是

small

一个?

$small: 12px;
$form-label: 14px;
$medium: 16px;
$large: 24px;
也许您只使用一种基本字体大小和百分比?当然,但是我想说您需要变量以达到百分比。这就是杰夫(Geoff)处理字体尺寸的方式,甚至他也承认该设置会引起自己的眉毛。用主观命名变量的计算可能对您来说很清楚,但对于其他任何人跳入项目的人来说都是疯狂的,而且很复杂。

h1 { 字体大小:夹具(var(-text-size-large),calc(var(-text-size-base) * var( - text-size-scaler)),var(-text-size-huge)); }

我们需要一个更好的系统 不断添加和删除东西

工作的方式。这是现代发展 - MVP

我们需要的是一个比例语法,它允许更改空间。在不引入破坏变化的情况下,在规模上添加新尺寸应该很容易。我正在考虑一种既定比例,既是

的比例。它必须比$ small,$中和$大。
h1 {
  font-size: clamp(var(--text-size-large), calc(var(--text-size-base) * var(--text-size-scaler)), var(--text-size-huge));
}
intuitive

。最好是,您不必在设置文件或配置中查找变量名称,或者在存储这些内容的任何地方。如果$ epsilon出现在$ sigma之前或之后,我没有任何线索。你?

使用现有系统 在尝试发明新事物之前,我们可以利用现有的语法或系统吗?这是我遇到的一些。 国际单位系统 肯定,您熟悉诸如“ kilobyte”和“ megabyte”之类的术语。欧洲人非常习惯“毫米”和“厘米”。其他例子是“ Giga”,“ Tera”和“ PETA”。这些前缀可用于长度,重量,体积等。 $ CENTI字体尺寸可以工作吗?它在一定程度上是直观的,也就是说,如果您熟悉度量系统。这是一个有限的量表。而且没有添加新尺寸的空间,因为它们已经设置了。

传统点大小名称 很久以前,在计算机和桌面出版之前,书籍和报纸被铅类型打印。类型的设置器具有不同尺寸的不同名称。尺寸具有对点大小(PT)的引用,从理论上讲,可以用于像素大小(PX)。 说,我确实喜欢这种系统,因为这就像过去时代的旧工艺品一样。但是这些名称是如此奇怪,专门用于类型的大小,以至于感觉就像是用于断点和间距之类的东西。 [2

如何使用我们日常生活中的东西?说辣椒。

有多种辣椒。 $ habarero,比$ cayenne高,比$ jalapeno热。那会很有趣,是吗? ,但我喜欢编写字体大小的想法:$ tabasco,我看到了两个问题。如果您不喜欢辣椒,那么您将不知道哪种胡椒比另一个胡椒粉更热 - 因此,它不是普遍直观的。另外,贝尔辣椒在斯科维尔秤上为0,没有什么。卡罗来纳州收割者是世界上最热门的胡椒,所以秤是有限的。 ,是的,辣椒尺度的尺度不大或更小,它们更热。坏概念。也许更常见的东西,例如球类型?

有各种各样的球。您有手球,足球,排球等。需要比药球更大的东西吗?使用$海滩。比网球小的东西?使用$ pingpong。这是非常直观的,我想象每个人在某个时候都玩过各种球,或者至少从运动中熟悉它们。

,但是乒乓球比高尔夫球大吗?谁知道?此外,保龄球和足球实际上是相同的大小。所以……再次,不是完美的。

扩大行星可以起作用,但是您必须在天文学上有知识。

直接数字怎么样?我们无法单独使用数字,因为像Stylelinter这样的工具会抗议。但是会像这样的工作:

$ font-14:14px; $ font-16:16px; $ font-24:24px;

好吧,这是无限的,因为总是有新的添加空间。但这也是非常具体的,并且有一些缺点使实际价值成为此类名称的一部分。假设$ font-18在许多地方使用。他们说,现在,所有具有18px的地方都必须更改为19px(因为原因)。现在,我们需要将变量从$ font-18重命名为$ font-19,然后将$ font-19的值从18px更改为19px。这是在我们最终使用$ font-18到$ font-19更新所有位置之前。这几乎就像使用RAW CSS一样。可维护性低得分。

动物王国怎么样?

大自然在地球上提供了无数的物种,这种物种在这种情况下派上用场。想象一下这样的东西:

需要比鼠标小的东西?使用$ bee,$ ant或$跳蚤。比熊大?尝试$驼鹿或$ hippo。比大象大?好吧,您有$鲸鱼或heck,我们可以史前并使用$ t-rex。这里总是有一只动物可以挤在这里。非常通用,非常直观,也无限(几乎)。而且很有趣 - 我不介意做字体大小:$松鼠。 ?

,但是再说一次,即使我们确切地知道我们的字体大小动物园中包含哪些动物,也可能需要引用变量。但这也许只要缩放就没什么大不了的。

我花了太多时间来思考这个

还是我?代码库是您花费工作时间的地方。就像椅子和监视器一样,这是您的工作环境。工作场所应该是一个不错的地方。

如何处理字体尺寸尺度?您是否有一个用于字体的系统,另一个用于利润率之类的系统?谁能直接跳入您的代码并了解一切的组织方式?请在评论中说出!

最新教程 更多>
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-07-16
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-07-16
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-07-16
  • PHP未来:适应与创新
    PHP未来:适应与创新
    PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。 引言在编程世界中,PHP一直是网页开发的中流砥柱。作为一个从1994年就开始发展...
    编程 发布于2025-07-16
  • 如何高效地在一个事务中插入数据到多个MySQL表?
    如何高效地在一个事务中插入数据到多个MySQL表?
    mySQL插入到多个表中,该数据可能会产生意外的结果。虽然似乎有多个查询可以解决问题,但将从用户表的自动信息ID与配置文件表的手动用户ID相关联提出了挑战。使用Transactions和last_insert_id() 插入用户(用户名,密码)值('test','test...
    编程 发布于2025-07-16
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-07-16
  • Python元类工作原理及类创建与定制
    Python元类工作原理及类创建与定制
    python中的metaclasses是什么? Metaclasses负责在Python中创建类对象。就像类创建实例一样,元类也创建类。他们提供了对类创建过程的控制层,允许自定义类行为和属性。在Python中理解类作为对象的概念,类是描述用于创建新实例或对象的蓝图的对象。这意味着类本身是使用类关...
    编程 发布于2025-07-16
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-07-16
  • 如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    编程 发布于2025-07-16
  • Python中嵌套函数与闭包的区别是什么
    Python中嵌套函数与闭包的区别是什么
    嵌套函数与python 在python中的嵌套函数不被考虑闭合,因为它们不符合以下要求:不访问局部范围scliables to incling scliables在封装范围外执行范围的局部范围。 make_printer(msg): DEF打印机(): 打印(味精) ...
    编程 发布于2025-07-16
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-07-16
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 考虑文档中给出的示例:这是内部发生的事情: 现在在3月3日添加另一个月,因为2月在2001年只有2...
    编程 发布于2025-07-16
  • 将图片浮动到底部右侧并环绕文字的技巧
    将图片浮动到底部右侧并环绕文字的技巧
    在Web设计中围绕在Web设计中,有时可以将图像浮动到页面右下角,从而使文本围绕它缠绕。这可以在有效地展示图像的同时创建一个吸引人的视觉效果。 css位置在右下角,使用css float and clear properties: img { 浮点:对; ...
    编程 发布于2025-07-16
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-07-16
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-07-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3