欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > CSS3的aria-hidden学习

CSS3的aria-hidden学习

2025/1/14 7:23:55 来源:https://blog.csdn.net/m0_72030584/article/details/145117762  浏览:    关键词:CSS3的aria-hidden学习

前言

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>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com