बग प्राथमिकता बढ़ाने के लिए कृपया Chrome बग को स्टार करें
यह क्रोम में एक बग है। कृपया इस मुद्दे को बढ़ाने के लिए इसे जोड़ने के लिए एक स्टार जोड़ें, इसे तय किया जाना चाहिए:
https://bugs.chromium.org/p/chromium/issues/detail?id=375693
इस समय के दौरान, मैंने इन तीन कोड पेन उदाहरणों को बनाया ताकि यह दिखाया जा सके कि मुद्दे के आसपास कैसे काम किया जाए। वे उदाहरणों के लिए CSS ग्रिड का उपयोग करके बनाए गए हैं लेकिन फ्लेक्सबॉक्स के लिए समान तकनीकों का उपयोग किया जा सकता है।
किंवदंती के बजाय aria-labelledby का उपयोग करना
यह समस्या से निपटने के लिए अधिक स्पष्ट तरीका है। नकारात्मक पक्ष यह है कि आपको हर नकली किंवदंती तत्व पर लागू अद्वितीय आईडी बनाने से निपटना होगा।
https://codepen.io/daniel-tonon/pen/vaaGzZ
<style>
.flex-container {
display: flex;
}
</style>
<fieldset aria-labelledby="fake-legend">
<div class="flex-container">
<div class="flex-child" id="fake-legend">
I am as good accessibilty wise as a real legend
</div>
...
</div>
</fieldset>
क्षेत्र और किंवदंती के बजाय भूमिका = "समूह" और aria-labelledby का उपयोग करना
यदि आपको एक सहोदर तत्व की ऊंचाई तक खिंचाव करने में सक्षम होने के लिए फ्लेक्स-कंटेनर की आवश्यकता है और फिर उस खिंचाव को अपने बच्चों पर से गुजरना है, तो आपको role="group"इसके बजाय उपयोग करने की आवश्यकता होगी<fieldset>
https://codepen.io/daniel-tonon/pen/BayRjGz
<style>
.flex-container {
display: flex;
}
</style>
<div role="group" class="flex-container" aria-labelledby="fake-legend">
<div class="flex-child" id="fake-legend">
I am as good accessibilty wise as a real legend
</div>
...
</div>
स्टाइल के प्रयोजनों के लिए एक नकली डुप्लिकेट किंवदंती बनाना
यह ऐसा करने के लिए कहीं अधिक हैकी तरीका है। यह अभी भी उतना ही सुलभ है लेकिन इस तरह से करते समय आपको आईडी से निपटने की आवश्यकता नहीं है। मुख्य पक्ष यह है कि असली किंवदंती तत्व और नकली किंवदंती तत्व के बीच नकली सामग्री होने जा रही है।
https://codepen.io/daniel-tonon/pen/zLLqjY
<style>
.screen-reader-only {
position: absolute;
opacity: 0;
pointer-events: none;
}
.flex-container {
display: flex;
}
</style>
<fieldset>
<legend class="screen-reader-only">
I am a real screen-reader accessible legend element
</legend>
<div class="flex-container">
<div class="flex-child" aria-hidden="true">
I am a fake legend purely for styling purposes
</div>
...
</div>
</fieldset>
किंवदंती एक प्रत्यक्ष निर्णायक होना चाहिए
जब आप पहली बार खुद को ठीक करने की कोशिश कर रहे हैं, तो आप शायद ऐसा करने की कोशिश करेंगे:
<!-- DO NOT DO THIS! -->
<fieldset>
<div class="flex-container">
<legend class="flex-child">
Broken semantics legend text
</legend>
...
</div>
</fieldset>
आपको पता चलेगा कि यह काम करता है, और फिर आप शायद इसे दूसरा विचार दिए बिना आगे बढ़ेंगे।
समस्या यह है कि फील्डसेट और किंवदंती के बीच एक दिव्य आवरण डालने से दोनों तत्वों के बीच संबंध टूट जाता है। यह फ़ील्डसेट / किंवदंती के शब्दार्थ को तोड़ता है।
तो ऐसा करके, आपने पहली जगह में फ़ील्डसेट / किंवदंती का उपयोग करने के पूरे उद्देश्य को हरा दिया है।
इसके अलावा, यदि आप उस फ़ील्डसेट को एक किंवदंती नहीं देते हैं, तो किसी फ़ील्डसेट का उपयोग करने में कोई मतलब नहीं है।