暗模式对文本可读性的影响:使用可变字体的CSS解决方案
黑暗模式虽然美学上令人愉悦,但通常会带来一个挑战:在黑暗的背景下,文本看起来更重。本文使用CSS自定义属性和可变字体探讨解决方案来解决此问题,从而确保跨光和黑暗模式的文本外观一致。
问题不是幻想。较轻的角色在深色背景上确实看起来更大胆。当比较光和暗模式文本时,这很容易观察到,并且在倒转颜色时变得更加清晰。
使用可变字体的解决方案
可变字体提供了强大的解决方案。理想的效果涉及在黑暗模式下巧妙地变薄的文本,而不会改变字符宽度。我们可以通过几种策略来实现这一目标:
手动调整
font-weight
:这涉及在黑模式媒体查询中直接修改font-weight
值。功能性虽然具有许多元素,但它变得繁琐。font-weight
乘数:一种更优雅的方法使用CSS自定义属性(--font-weight-multiplier
)来控制重量调整。此乘数在暗模式下修改了每个元素的默认font-weight
。例如,设置--font-weight-multiplier
为0.85可将重量降低15%。通用选择器和乘数:此高级技术利用CSS变量范围和通用选择器(
*
)在全球应用乘数计算。这简化了CSS,但需要仔细考虑以避免对特定元素的意外影响。font-variation-settings
和轴操纵:某些可变字体提供诸如“ grad”(级)或“ drkm”(暗模式)之类的轴,它们直接控制明显的重量而不会影响字符宽度。 Roboto Flex利用“ Grad”,而Dalton Maag的Darkmode字体具有“ Drkm”轴。
策略1: font-weight
操纵
最简单的方法是在暗模式媒体查询中手动调整每个元素的font-weight
。但是,随着元素数量的增加,这将变得易于管理。
/ *默认(灯模式)CSS */ 身体{字体权重:400; } 强{字体重量:700; } / *黑模式CSS */ @Media(prefers-color-scheme:dark){ 身体{字体权重:350; } 强{字体重量:600; } }
策略2:具有自定义属性的font-weight
乘数
使用自定义属性( --font-weight-multiplier
)提供了更可维护的解决方案。
/ *暗模式特定的自定义属性 */ @Media(prefers-color-scheme:dark){ :root { - -font-weight-Multiplier:.85; } } / *默认的CSS样式... */ Body {font-jight:calc(400 * var( - font-weight-multiplier,1)); } strong {font-jight:calc(700 * var( - font-weight-multiplier,1)); }
策略3:通用选择器和乘数
这种方法一次将乘数应用于所有元素。
/ *默认自定义属性 */ :root { - -font-jight:400; - 联合体重 - 武力:1; } 强{ - - 五大:700; } / *暗模式特定的自定义属性 */ @Media(prefers-color-scheme:dark){ :root { - -font-weight-Multiplier:.85; } } / *应用自定义属性... */ * {font-权重:calc(var( - font-pronger,400) * var( - font-weight-multiplier,1)); }
策略4:用font-variation-settings
轴操纵
具有“毕业”或“ DRKM”轴的字体可直接控制重量。
/ *对于Roboto Flex(“毕业”轴) */ :root {-grad:0; } @Media(prefers-color-scheme:dark){:root { - grad:-.75; }}} 身体{font-variation-settings:“ grad” var( - grad,0); }
其他考虑因素
- 高分辨率屏幕:对视网膜显示器的效果不太明显。相应地调整乘数。
- 混合字体:仔细考虑对具有不同轴或不可变化字体的字体的影响。
- 信件间隔:降低字体重量可以缩小字符。根据需要调整字母间隔。
通过利用这些技术,开发人员可以确保跨光和深色模式的一致且清晰的文本,从而增强整体用户体验。可以提供展示这些策略的演示[链接到演示]。
以上是使用CSS自定义属性在黑模式下调整可变字体权重的详细内容。更多信息请关注PHP中文网其他相关文章!

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

我知道,我知道:有大量的内容管理系统选项可用,而我进行了几个测试,但实际上没有一个是一个,y'知道吗?怪异的定价模型,艰难的自定义,有些甚至最终成为整个&

链接CSS文件到HTML可以通过在HTML的部分使用元素实现。1)使用标签链接本地CSS文件。2)多个CSS文件可通过添加多个标签实现。3)外部CSS文件使用绝对URL链接,如。4)确保正确使用文件路径和CSS文件加载顺序,优化性能可使用CSS预处理器合并文件。

选择Flexbox还是Grid取决于布局需求:1)Flexbox适用于一维布局,如导航栏;2)Grid适合二维布局,如杂志式布局。两者在项目中可结合使用,提升布局效果。

包含CSS文件的最佳方法是使用标签在HTML的部分引入外部CSS文件。1.使用标签引入外部CSS文件,如。2.对于小型调整,可以使用内联CSS,但应谨慎使用。3.大型项目可使用CSS预处理器如Sass或Less,通过@import导入其他CSS文件。4.为了性能,应合并CSS文件并使用CDN,同时使用工具如CSSNano进行压缩。

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver Mac版
视觉化网页开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

WebStorm Mac版
好用的JavaScript开发工具