• 在网页中实现响应性字体


    在网页中实现响应性字体

    在设计网站时,我们经常关注美学和页面功能功能。然而,网页设计中经常被忽视的一个方面是:字体无障碍。一个常见但有问题的做法是使用"像素"单元(px)来定义字体大小,因为它们能阻止用户根据自己的偏好调整字体大小。一些人,由于视力条件不同,可能需要增加或减少字体大小来满足自身的可读性和可用性。在本文中,我们将探索与使用px会出现的相关问题,并引入解决方案,使我们可以在网站上创建更容易访问和响应的字体。

    px的问题

    在网页设计中使用像素(px)作为字体大小是一个主要习惯,主要是因为它允许对文本元素进行精确的控制。然而,它在无障碍方面带来了重大挑战。

    基于px的字体尺寸的主要问题是它们的刚性。像素是一个绝对单位,这意味着在像素中指定的字体大小是固定的,不响应用户的偏好而调整。这就导致了一个基本问题,因为在字体大小方面,并非所有用户都有相同的视觉能力或偏好。

    在无障碍上网领域,必须确保尽可能多的人,包括有不同程度视觉障碍的人都能使用网站。一些用户可能会因视力老化或其他视觉障碍而要求更大的文本字体以提高可读性,而另一些人可能会因各种原因而偏爱较小的文本,例如在屏幕上容纳多个窗口或减少眼疲劳。基于像素的字体尺寸,这些用户没有灵活性来调整内容以适应他们的具体需要。这种缺乏可调整性可能会导致我们的一部分用户的流失。

    解决方案

    为了解决与基于px的字体大小相关的固有的可访问性问题,网站设计人员和开发人员被鼓励考虑使用remsrems的主要优点是它们的相对性质,它们是根据根元素(通常是HTML元素)的字体大小来计算的。这意味着可根据用户的偏好调整rems,允许更好的可伸缩性和可读性。当用户改变浏览器设置以增加或减少默认字体大小时,rems会自动调整,以保持一致和可访问的阅读体验。

    虽然remsems都是相对单位,但两者之间有很大的区别,这使得rems在许多情况下成为首选选择。与它们的父元素的字体大小相关,这可能导致级联效应。这种级联行为有时会导致文本在网页不同部分的意外和不一致的缩放,使得保持一致性设计变得非常困难。相比之下,rems则植根于HTML元素一致的字体大小,提供了更好的文本大小控制,而不需要考虑由ems的级联行为带来的复杂性。

    要将px定义的文本大小转换为rem,可以使用以下公式:

    calc(original_fontsize(px) / root_fontsize * 1rem)
    
    //example
    .header{
      font-size: calc(24px / 16 * 1rem);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    响应字体

    创建响应字体可能是一个繁琐的任务,特别是当我们需要跨多个元素或类更新字体大小时。以下是一些让字体响应的方法:

    1.使用自定义属性:

    自定义属性提供了一个优雅的解决方案。通过使用根元素中的自定义属性定义字体大小,我们可以很容易地在整个网站上更改字体大小。这样就无需更新每个单独的类了。

    :root {
      --font-small: calc(12px/16*1rem); /* Convert 12px to rem */
    }
    
    @media screen and (min-width: 480px) {
      --font-small: calc(10px/16*1rem);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    通过这样设置字体大小,我们可以使用自定义属性进行全局更改,影响所有元素,确保一致性并节省时间。

    2.使用clamp实现响应字体:

    一个更有效的方法来实现响应字体是通过使用clamp函数。这个函数在一个范围内夹住一个值,使它成为响应字体大小的理想。通过指定一个最小值、首选值和最大值,我们就可以确保网站上的字体无缝地适应不同的屏幕尺寸,采用以下公式:

    clamp(minimum_value, preferred_value, maximum_value)
    
    • 1

    假设我们的h1标签上有一个24px大小的字体,我们希望它在小屏幕上是18px,在大屏幕上是28px。你可以用下列的代码来实现这个目标:

    h1 {
      font-size: clamp(calc(18px/16*1rem), calc(24px/16*1rem), calc(28px/16*1rem));
      color: #eb4034;
    }
    
    • 1
    • 2
    • 3
    • 4

    这个代码保证字体大小在小屏幕上为18px,在大屏幕上为28px,同时保持可访问性。

    避免使用vm

    虽然viewport(vm)可能看起来是一个有吸引力的选择响应字体大小,但是它们有其缺点。通过vm设置的字体大小与屏幕的宽度有关,这可能导致大屏幕上的字体太大,小屏幕上的字体又太小的问题。在极端情况下,缺乏微调控制会使文本难以读懂。

    结论

    字体的响应性是网页设计的一个重要方面,不容忽视。为提高网站的可读性和可用性,请考虑以下建议:

    • 将像素单位(px)替换为rems,以提高访问性。
    • 选择rems,而不是ems,以更精确地控制字体大小。
    • 实现自定义属性,有效地管理整个网站的字体大小变化.
    • 使用clamp函数以创建响应性和可访问的字体大小。
    • 避免使用viewport单位(vm),以保持对不同屏幕上字体大小的控制。

    通过遵循这些指导方针,并将响应性字体技术纳入我们的网页设计,可以使我们的网站更具包容性和用户友好性,容纳各种各样的字体大小偏好,以提高访问性。

  • 相关阅读:
    html css制作正六边形
    基于一致性算法的微电网分布式控制MATLAB仿真模型
    基于粒子(Points)模拟雨雪天气效果
    Kubernetes CNI 插件之Fabric
    聪明人和傻子和程序员
    设计模式(9) 观察者模式
    springcloud21:Nacos总结
    java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统
    Centos编译安装python3.9
    linux下的 BIO、NIO
  • 原文地址:https://blog.csdn.net/qq_42880714/article/details/134257647