AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-14400772

Shtole's questions

Martin Hope
Shtole
Asked: 2025-04-15 22:05:07 +0800 CST

role=slider WAI ARIA 对触摸屏的要求

  • 5

我有一个自定义的滑块实现。当滑块为 时:focus:visible,我会处理箭头键(Up/Left和Right/ Down)来移动滑块。我想,这足以role="slider"在桌面浏览器中声明该控件了。

我应该在触摸屏设备上支持什么?

MDN只是说:

警告:要更改滑块值,基于触控的辅助技术需要通过合成按键事件来响应用户增加或减少值的手势。在使用滑块角色(以及所有范围微件)之前,请在以触控为主要输入机制的设备上,使用辅助技术对滑块微件进行全面测试。

更新我真的相信这里不需要 MRE,因为我的实现非常简单:

  1. 我对拇指使用了标准的可拖动行为。有很多可拖动实现,例如jQuery UI捆绑的一个,但我更喜欢interact.js 的可拖动功能(Y 轴锁定,即一维)。

  2. 为了让那些行动不便的人和屏幕阅读器用户能够方便地进行控制,我还处理了箭头键:

    function onArrowKey(e)
    {
        if (mouseDraggingIsInProcess)
            return;
    
        if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(e.key))
        {
            e.stopImmediatePropagation();
            e.preventDefault();
    
            if (e.type == 'keydown')
            {
                const thumbPositionY = match(e)
                (
                    when(e => e.ctrlKey, 1),
                    when(e => e.shiftKey, (1 + options.stepsCount) / 2),
                    otherwise(options.stepsCount)
                );
    
                if ('ArrowDown' == e.key || 'ArrowRight' == e.key)
                    onThumbPositionChange(0, thumbPositionY);
                else if ('ArrowUp' == e.key || 'ArrowLeft' == e.key)
                    onThumbPositionChange(0, -thumbPositionY);
            }
            else if (e.type == 'keyup')
            {
                reset();
            }
        }
    }
        
    control.on('keydown keyup', onArrowKey);

onThumbPositionChange(0, thumbPositionY);与可拖动行为调用的处理程序完全相同。

另外,我添加了div以下属性:

<div aria-label="A joystick. Use arrow keys to move it fast.
Shift makes it move at medium speed. Control makes it move at slow speed.
After releasing the keys it returns to initial position." …>
accessibility
  • 1 个回答
  • 25 Views
Martin Hope
Shtole
Asked: 2025-01-07 03:32:09 +0800 CST

我是否需要使用 aria-hidden 来在 <button> 内装饰 <svg>?

  • 5

如果我有一个按钮:

<button>
    <svg width="1em" class="inline"><use href="#start-icon"></use></svg>
    Start
</button>

屏幕阅读器会忽略它吗<svg>(这是期望的行为)或者我应该隐藏它(aria-hidden例如,使用)?

html
  • 3 个回答
  • 46 Views
Martin Hope
Shtole
Asked: 2024-12-17 23:04:15 +0800 CST

将描边渐变定义从 SVG 移至 CSS [重复]

  • 5
此问题这里已有答案:
如何在 <line> 之类的元素上使用“内联” SVG 渐变? (2 个答案)
18 小时前关闭。

有一个渐变,定义如下:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="out-of-flow">
    <defs>
        <!-- Gradients for circle charts. -->
        <linearGradient id="circle-graph-blue-greenish-gradient">
            <stop offset="0" stop-color="#00d5bd" />
            <stop offset="100" stop-color="#24c1ed" />
        </linearGradient>
    </defs>
</svg>

它在 CSS 类中引用,并应用于<path>另一个类<svg>:

.circle-graph-blue-greenish {
  stroke: url(#circle-graph-blue-greenish-gradient);
  stroke-width: 5;
  fill: transparent;
  stroke-linecap: round;
  stroke-linejoin: round;
}

svg {
  height: 50vh;
}
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="out-of-flow">
    <defs>
        <!-- Gradients for circle charts. -->
        <linearGradient id="circle-graph-blue-greenish-gradient">
            <stop offset="0" stop-color="#00d5bd" />
            <stop offset="100" stop-color="#24c1ed" />
        </linearGradient>
    </defs>
</svg>

<svg class="rotate-90" width="75%" viewBox="0 0 100 100">
    <path class="circle-graph-underlay" d="M5,50 A45,45,0 1 1 95,50 A45,45,0 1 1 5,50"></path>
    <path d="M5,50 A45,45,0 1 1 95,50 A45,45,0 1 1 5,50" class="circle-graph circle-graph-blue-greenish"
        style="stroke-dashoffset: 251.677;stroke-dasharray: 282.783;"></path>
</svg>

它完美地工作了。我想将渐变定义移到 CSS 类中:

.circle-graph-blue-greenish
{
    stroke: linear-gradient(0deg, rgba(0,213,189,1) 0%, rgba(36,193,237,1) 100%);
    stroke-width: 5;
    fill: transparent;
    stroke-linecap: round;
    stroke-linejoin: round;
}

但不幸的是,它已经停止工作了(没有明显的冲程)。

为什么这两个定义不等效以及如何stroke在 CSS 中定义渐变?

UPD看来我可以移动颜色值:

<stop offset="0" stop-color="var(--circle-graph-blue-greenish-gradient-color-1)" />

总比没有好。

UPD 2不幸的是,这里的答案不能令我满意。

似乎不可能使用这样的变量:

.circle-graph-blue-greenish
{
    /*stroke: url(#circle-graph-blue-greenish-gradient);*/
    --color1: blue;
    --color2: red;
    stroke: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3ClinearGradient id='gradient'%3E%3Cstop offset='0' stop-color='var(--color1)' /%3E%3Cstop offset='1' stop-color='var(--color2)' /%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E#gradient");
    stroke-width: 5;
    fill: transparent;
    stroke-linecap: round;
    stroke-linejoin: round;
}

使用重复的值违反了 DRY 并且(特别是在引号字符串内)很容易被忽视。

html
  • 1 个回答
  • 52 Views
Martin Hope
Shtole
Asked: 2024-12-10 23:23:41 +0800 CST

内联 <svg> 文本的可访问性

  • 5

我有以下代码:

<h2>
    Deadpool
    <svg width="53" height="64" class="inline" aria-label="and">
        <use href="#oleo-ampersand"></use>
    </svg>
    Wolverine:<br>
    A StackOverflow Example
</h2>

“&”符号的样式如下:

在此处输入图片描述

现在,我想让屏幕阅读器将其叙述为常规短语(即“死侍和金刚狼”)。添加aria-label="and"到<svg>似乎被忽略了。有办法实现这一点吗?也许,我应该制作整个块aria-hidden并添加一个视觉上隐藏的元素?

此外,如果能以相同的方式复制块就太酷了Ctrl+C,但我猜如果没有 JS 拦截这是不可能的。

html
  • 3 个回答
  • 40 Views
Martin Hope
Shtole
Asked: 2024-12-10 04:04:59 +0800 CST

<nav> 中的 <ul> 是否需要 aria-label?

  • 5

我有以下代码:

<nav class="navbar navbar-expand-md">
    <div class="container px-0">

        <div id="navbarCollapse" class="collapse navbar-collapse">
            <ul class="navbar-nav mx-auto">
                <li class="nav-item">
                    <a href="#about" class="nav-link">About</a>
                </li>
                <li class="nav-item">
                    <a href="#project1" class="nav-link">Project 1</a>
                </li>
                <li class="nav-item">
                    <a href="#project2" class="nav-link">Project 2</a>
                </li>
                <li class="nav-item">
                    <a href="#contact" class="nav-link">Contact</a>
                </li>
            </ul>

        </div>
    </div>
</nav>

自动可访问性测试工具显示一个问题:“未找到可访问的文本”,其叙述者子系统将其叙述为:“进入导航 - 包含 4 个项目的列表”。

我应该添加aria-label="Navigation links"到吗<ul>?

html
  • 1 个回答
  • 22 Views
Martin Hope
Shtole
Asked: 2024-11-26 05:17:11 +0800 CST

通过 aria-labelledby 引用带有标签的输入

  • 5

如果我有一个aria-label设置为的输入1,并且关联标签设置为2,那么引用该输入,什么将被计算为元素的 aria 标签?

<input type="radio" id="cpp-search-video-btn" aria-label="1" role="tab">
<label for="cpp-search-video-btn" aria-hidden="true">2</label>
<div id="cpp-search-video-tab" aria-labelledby="cpp-search-video-btn" role="tabpanel">…</div>

咏叹调标签是什么div#cpp-search-video-tab:1、2,或者可能未设置?(我希望它是“1”)。

据我所知,MDN上没有关于替代品的信息。

html
  • 2 个回答
  • 27 Views
Martin Hope
Shtole
Asked: 2024-11-26 03:05:06 +0800 CST

aria-label 对于 tablist 角色有用吗?

  • 6

如果我们看一下 Bootstrap标签示例:

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA3dLNH46c0X0pANo8jQd+2uAGeZHuFr8iI1wCdh0Pej1krpDTRj9PI4y3eC9S" crossorigin="anonymous">

<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item" role="presentation">
    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="true">Home</button>
  </li>
  …
</ul>

…我们看到,Bootstrap 作者没有指定aria-labeltablist ( <ul>)。这样可以吗?也许描述一下 tablist 会更好?

html
  • 1 个回答
  • 19 Views
Martin Hope
Shtole
Asked: 2024-08-02 23:05:48 +0800 CST

jQuery data() 方法的默认值

  • 8

我有以下代码:

let visiblePart = $(this).data('visible-part');

if (visiblePart === undefined)
    visiblePart = 0.5;

我想将请求data-visible-part值与检查其存在性合并,以使代码更紧凑。不幸的是,没有.data()带defaultValue参数的重载。如何实现?

javascript
  • 1 个回答
  • 27 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve