CSS3的aria-hidden学习

embedded/2025/1/15 22:51:22/

前言

aria-hidden 属性可用于隐藏非交互内容,使其在无障碍 API 中不可见。即当aria-hidden="true" 添加到一个元素会将该元素及其所有子元素从无障碍树中移除,这可以通过隐藏来改善辅助技术用户的体验:

  1. 纯装饰性内容,如图标或图片
  2. 重复的内容,如重复的文本
  3. 屏幕外或折叠的内容,如菜单

tips: 不要在可以获得焦点的元素上使用 aria-hidden="true"。因元素的隐藏状态基于其是否被渲染通常由 CSS 控制。

[aria-hidden="true"] {display: none;
}

弹窗显隐demo

<template><!-- 弹窗内容 --><div id="myModal" class="modal" aria-hidden="true" style="display: none;"><div class="modal-content"><span class="close-button" @click="closeModal">&times;</span><p>这是一个弹窗内容。</p></div></div><!-- 触发弹窗的按钮 --><button @click="openModal">打开弹窗</button>
</template><script setup>
const openModal = () => {var modal = document.getElementById('myModal');modal.style.display = 'flex'; // 显示弹窗modal.setAttribute('aria-hidden', 'false'); // 使弹窗对辅助技术可见
}
const closeModal = () => {var modal = document.getElementById('myModal');modal.style.display = 'none'; // 显示弹窗modal.setAttribute('aria-hidden', 'true'); // 使弹窗对辅助技术可见
}
</script>
<style lang="scss">
.modal {position: fixed;left: 0;top: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5);display: flex;justify-content: center;align-items: center;
}.modal-content {background-color: #fff;padding: 20px;border-radius: 5px;position: relative;
}.close-button {position: absolute;top: 10px;right: 10px;cursor: pointer;font-size: 20px;
}
</style>

input获取焦点提示demo

<template><div class="input-container"><input type="text" v-model="inputValue" :aria-describedby="tooltipId" @focus="showTooltip = true"@blur="showTooltip = false" /><transition name="fade"><div v-show="showTooltip" class="tooltip" :id="tooltipId" ref="tooltip" role="tooltip">这是当输入聚焦时出现的工具提示。</div></transition></div>
</template><script>
import { ref, computed } from 'vue';export default {setup () {const inputValue = ref('');const showTooltip = ref(false);const tooltip = ref(null);const tooltipId = computed(() => showTooltip.value ? 'tooltip' : '');return {inputValue,showTooltip,tooltip,tooltipId};}
};
</script><style scoped>
.input-container {position: relative;display: inline-block;
}.tooltip {position: absolute;bottom: 100%;left: 0;top: 25px;background-color: green;border: 1px solid green;color: #fff;padding: 10px;border-radius: 5px;height: 80px;z-index: 999;width: 200px;
}.fade-enter-active,
.fade-leave-active {transition: opacity 0.1s ease-in-out;
}.fade-enter-from,
.fade-leave-to {opacity: 0;
}
</style>

追更

<template><input type="text" v-model="inputValue" @focus="showTooltip" @blur="hideTooltip" placeholder="单击或聚焦我" ref="inputRef"><transition name="fade"><div v-if="isTooltipVisible" class="tooltip" :style="tooltipStyle">这是一个工具提示!</div></transition>
</template><script setup>
import { ref, onMounted, reactive } from 'vue';const inputValue = ref('');
const isTooltipVisible = ref(false);
const inputRef = ref(null);const tooltipStyle = reactive({left: '0px',top: '0px'
});const showTooltip = () => {isTooltipVisible.value = true;positionTooltip();
};const hideTooltip = () => {isTooltipVisible.value = false;
};const positionTooltip = () => {if (inputRef.value) {const inputRect = inputRef.value.getBoundingClientRect();tooltipStyle.left = `${inputRect.left + window.scrollX}px`;tooltipStyle.top = `${inputRect.bottom + window.scrollY + 10}px`; // 10px的间距}
};onMounted(() => {// 可以在这里做一些额外的初始化工作,比如监听窗口滚动事件来重新定位tooltip等// 但在这个简单示例中,我们不需要这样做
});
</script><style scoped>
.tooltip {position: absolute;background-color: #333;color: #fff;text-align: center;border-radius: 5px;padding: 5px;z-index: 1000;white-space: nowrap;/* 防止文本换行 */
}.fade-enter-active,
.fade-leave-active {transition: opacity 0.3s;
}.fade-enter,
.fade-leave-to/* .fade-leave-active in <2.1.8 */{opacity: 0;
}
</style>

http://www.ppmy.cn/embedded/153936.html

相关文章

42_Lua table表

Lua中的table是一种极其灵活且强大的数据结构,它是Lua语言中唯一的一种复合数据类型。它既可以作为数组(array),也可以作为字典(dictionary)来使用,并且可以用于构建其他复杂的数据结构,如记录、集合、队列等。下面我将详细介绍Lua表的基本概念、创建方式、操作方法以及…

Oracle 创建index时 自动收集index 统计信息 但partition index要特别注意

Index drop 后重建可以自动收集index 统计信息 但如果 unusable index&#xff0c;如果这个index是partition 的&#xff0c;在rebuild index partition时 有个重大的问题&#xff0c;只是gather 了索引 partition上的statistics&#xff0c;没有gather 索引的 global stati…

状态模式详解与应用

状态模式&#xff08;State Pattern&#xff09;&#xff0c;是一种行为型设计模式。它允许一个对象在其内部状态改变时改变它的行为&#xff0c;使得对象看起来似乎修改了它的类。通过将不同的行为封装在不同的状态类中&#xff0c;状态模式可以避免大量的条件判断语句&#x…

Golang——rune和byte

本文详细介绍Golang中的两种字符类型rune和byte&#xff0c;介绍他们的区别&#xff0c;编码方式和简单的使用。 文章目录 byte 类型rune 类型UTF-8 与 Unicode 的关系byte和rune的主要区别Go的默认编码方式遍历方式遍历 byte遍历 rune补充 字符还原从 byte 序列还原字符串从 r…

C# OpenCV机器视觉:转速测量

在一个看似平常却又暗藏神秘能量的日子里&#xff0c;阿杰正在他那充满科技感的实验室里&#xff0c;对着一堆奇奇怪怪的仪器发呆。突然&#xff0c;手机铃声如一道凌厉的剑气划破寂静&#xff0c;原来是工厂的赵厂长打来的紧急电话&#xff1a;“阿杰啊&#xff0c;咱们工厂新…

unity免费资源2025-1-10

https://assetstore.unity.com/packages/3d/characters/humanoids/humans/streetwear-girl-2-8-casual-wear-girls-pack-3-274536 零元购码DAVIDGRETTE2025

特制一个自己的UI库,只用CSS、图标、emoji图 第二版

图&#xff1a; 代码&#xff1a; index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…

在 Ubuntu 下通过 Docker 部署 MySQL 服务器

引言 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包成一个标准化的单元。MySQL 是一个广泛使用的关系型数据库管理系统&#xff0c;因其高性能、可靠性和易用性&#xff0c;成为许多应用的首选数据库。结合 Docker 和 MySQL&#xff0c;可以轻松地创…