การใช้ alt tag สำหรับ anchor link ถูกต้องหรือไม่


124

การใช้ alt tag สำหรับ anchor link ถูกต้องหรือไม่เช่น

<a href="#" class="test" alt="Something" src="sfasfs" ></a>

คำตอบ:


130

สิ่งเหล่านี้ตอบได้ดีที่สุดโดยดูจากข้อกำหนดอย่างเป็นทางการ:

  1. ไปที่ข้อกำหนด: https://www.w3.org/TR/html5/

  2. ค้นหา " aelement": https://www.w3.org/TR/html5/text-level-semantics.html#the-a-element

  3. ตรวจสอบ "แอตทริบิวต์เนื้อหา" ซึ่งแสดงรายการแอตทริบิวต์ที่อนุญาตทั้งหมดสำหรับaองค์ประกอบ:

    • แอตทริบิวต์ส่วนกลาง
    • href
    • target
    • download
    • rel
    • hreflang
    • type
  4. ตรวจสอบ "แอตทริบิวต์ส่วนกลาง" ที่เชื่อมโยง: https://www.w3.org/TR/html5/dom.html#global-attributes

ดังที่คุณจะเห็นaltไม่อนุญาตให้ใช้แอตทริบิวต์ในaองค์ประกอบ
นอกจากนี้คุณจะสังเกตเห็นว่าsrcแอตทริบิวต์ไม่ได้รับอนุญาตเช่นกัน

เมื่อตรวจสอบความถูกต้องของ HTMLข้อผิดพลาดเหล่านี้จะถูกรายงานถึงคุณ


หมายเหตุว่าข้างต้นสำหรับHTML5ซึ่งเป็นมาตรฐาน HTML W3C จาก 2014 ในปี 2016, HTML 5.1กลายเป็นมาตรฐาน HTML ถัดไป การค้นหาแอตทริบิวต์ที่อนุญาตจะทำงานในลักษณะเดียวกัน คุณจะเห็นว่าaองค์ประกอบสามารถมีแอตทริบิวต์อื่นใน HTML rev5.1:

คุณสามารถค้นหารายละเอียด HTML ทั้งหมด (รวมถึงมาตรฐานล่าสุด) บนของ W3Cสถานะ HTML ปัจจุบัน


2
ฉันไม่เห็นtitleแอตทริบิวต์ในแอตทริบิวต์aทั่วโลกว่าควรใช้titleแอตทริบิวต์ดังกล่าวในaหรือไม่
Yousef Altaf

1
@YousefAltaf: คุณดูหน้าไหน? ที่เชื่อมโยงหนึ่งทั่วโลกแอตทริบิวต์titleรายการ
ถึง

ฉันได้รับมันจึงแสดงรายการภายใต้แอตทริบิวต์ทั่วโลก แต่จะมีผลต่อคุณภาพของหน้าหรือไม่หากฉันใช้หรือไม่?
Yousef Altaf

@YousefAltaf: นั่นเป็นคำถามที่แตกต่างซึ่งไม่ควรพูดถึงที่นี่ดีกว่า อ้างถึงคำจำกัดความของ หากคุณยังคงมีข้อสงสัยโปรดสร้างคำถามแยกต่างหาก (แต่ควรค้นหาก่อนหากยังไม่ได้ถาม)
ถึง

4
คำตอบบุ๊กมาร์กเป็น "วิธีค้นหาแอตทริบิวต์ HTML" ขอบคุณ
Codebling

59

สำหรับจุดยึดคุณควรใช้ชื่อเรื่องแทน alt ไม่ถูกต้องเป็นองค์ประกอบของไฟล์. ดูhttp://w3schools.com/tags/tag_a.asp


@FabioPoloni ขอบคุณฉันคาดหวังว่าทุกคนจะพบลิงค์ร้องบนหน้า :-)
tomis

ฉันคิดว่าถ้ามีคนไม่รู้มากเกี่ยวกับหัวข้อนี้เขาจะไม่พบมัน ;-)
Fabio Poloni

8
ข้อมูลนี้ถูกต้องที่ w3schools แต่ w3schools ไม่เป็นทางการและไม่น่าเชื่อถือโปรดดูw3fools.com
Jukka K. Korpela

ขอบคุณพวก ... นอกเหนือจากนั้นความต้องการของฉันขึ้นอยู่กับมาตรฐานการช่วยสำหรับการเข้าถึงเท่านั้นรวมถึงการปฏิเสธค่าใช้จ่ายด้านประสิทธิภาพ ฉันใช้ภาพ spirte ในขณะเดียวกันก็ต้องการให้แอตทริบิวต์ alt ซึ่งไม่สามารถใช้ภาพพื้นหลังได้ แต่ฉันมีวิธีแก้ปัญหาที่ช่วย ..
user2067736

1
"title" btw ไม่ได้อยู่ใน w3schools อีกต่อไป แต่คุณสามารถใช้ title ได้เนื่องจากเป็นแอตทริบิวต์ส่วนกลาง: w3.org/TR/html5/dom.html#global-attributes
rosell.dk

28

"title" ถูกนำไปใช้อย่างแพร่หลายในเบราว์เซอร์ ลอง:

<a href="#" title="hello">asf</a>

3
นี่คือลักษณะของคำตอบแทนที่จะเป็นคำตอบ 10 นาทีข้างต้น แต่คำตอบนี้ควรมีลิงค์ด้วย: w3schools.com/tags/att_global_title.asp
mikael1000

ฉันยอมรับว่าข้างต้นไม่ได้ตอบคำถามอย่างไรก็ตามตามนั้นtitleไม่ถูกต้องตามข้อกำหนด HTML5 (แม้ว่าเบราว์เซอร์ส่วนใหญ่จะใช้งานก็ตาม)
felwithe

6

ไม่อนุญาตให้ใช้altแอตทริบิวต์ (ซึ่งจะเป็นแอตทริบิวต์ไม่ใช่แท็ก) สำหรับaองค์ประกอบในข้อกำหนด HTML หรือแบบร่าง และดูเหมือนว่าเบราว์เซอร์จะไม่ได้รับการยอมรับว่ามีความสำคัญใด ๆ

เป็นเรื่องลึกลับเล็กน้อยว่าทำไมผู้คนถึงพยายามใช้มัน แต่คำอธิบายที่เป็นไปได้คือพวกเขากำลังทำเช่นนั้นในแบบอะนาล็อกพร้อมaltแอตทริบิวต์สำหรับimgองค์ประกอบโดยคาดว่าจะเห็น "คำแนะนำเครื่องมือ" เมื่อวางเมาส์เหนือ มีสองสิ่งที่ผิดกับสิ่งนี้ ขั้นแรกแต่ละองค์ประกอบมีคุณลักษณะของตัวเองซึ่งกำหนดไว้ในข้อกำหนดสำหรับแต่ละองค์ประกอบ ประการที่สอง "คำแนะนำเครื่องมือ" การแสดงaltคุณลักษณะในเบราว์เซอร์โบราณบางตัวเป็น / เป็นเรื่องแปลกประหลาดหรือแม้แต่ข้อบกพร่องมากกว่าที่จะคาดหวัง altแอตทริบิวต์ควรจะนำเสนอให้กับผู้ใช้และถ้าหากภาพที่ตัวเองไม่ได้นำเสนอด้วยเหตุผลใด

หากต้องการสร้าง "คำแนะนำเครื่องมือ" ให้ใช้titleแอตทริบิวต์แทนหรือที่ดีกว่านั้นคือ Google สำหรับ "คำแนะนำเครื่องมือ CSS" และใช้คำแนะนำเครื่องมือที่ใช้ CSS ตามความต้องการของคุณ (อาจมีลักษณะเป็น "เลเยอร์" ที่ซ่อนอยู่ซึ่งจะปรากฏให้เห็นเมื่อวางเมาส์เหนือ)


ฉันจะใช้ลิงก์ที่สร้างโดยทางโปรแกรมโดยใช้คำแนะนำเครื่องมือที่ใช้ CSS ได้อย่างไร
Salvador Valencia

6

คุณควรใช้แอตทริบิวต์หัวเรื่องสำหรับแท็กจุดยึดหากคุณต้องการใช้ข้อมูลเชิงอธิบายในลักษณะเดียวกับที่คุณต้องการสำหรับแอตทริบิวต์ alt แอตทริบิวต์หัวเรื่องใช้ได้กับแท็กจุดยึดและไม่มีจุดประสงค์อื่นใดนอกจากการให้ข้อมูลเกี่ยวกับหน้าที่เชื่อมโยง

W3C แนะนำว่าค่าของแอตทริบิวต์ title ควรตรงกับค่าของหัวเรื่องของเอกสารที่เชื่อมโยง แต่ไม่บังคับ

http://www.w3.org/MarkUp/1995-archive/Elements/A.html


อีกทางเลือกหนึ่งและน่าจะเป็นประโยชน์มากกว่าคุณสามารถใช้แอตทริบิวต์การช่วยการเข้าถึง ARIA aria-label(เพื่อไม่ให้สับสนaria-labeledby) aria-labelทำหน้าที่เช่นเดียวกับแอตทริบิวต์ alt สำหรับรูปภาพ แต่สำหรับองค์ประกอบที่ไม่ใช่รูปภาพและรวมถึงการวัดการเพิ่มประสิทธิภาพบางอย่างตั้งแต่การปรับให้เหมาะสมสำหรับโปรแกรมอ่านหน้าจอ

http://www.w3.org/WAI/GL/wiki/Using_aria-label_to_provide_labels_for_objects


หากคุณต้องการอธิบายแท็กจุดยึดโดยปกติแล้วควรใช้แท็ก rel หรือ rev แต่คุณ จำกัด ค่าเฉพาะไม่ควรใช้สำหรับคำอธิบายที่มนุษย์อ่านได้

Rel ทำหน้าที่อธิบายความสัมพันธ์ของหน้าที่เชื่อมโยงกับเพจปัจจุบัน (เช่นถ้าหน้าที่เชื่อมโยงอยู่ถัดไปในอนุกรมตรรกะมันจะเป็น rel = next)

แอตทริบิวต์ rev เป็นความสัมพันธ์ย้อนกลับของแอตทริบิวต์ rel Rev อธิบายความสัมพันธ์ของเพจปัจจุบันกับเพจที่เชื่อมโยง

คุณสามารถดูรายการค่าที่ถูกต้องได้ที่นี่: http://microformats.org/wiki/existing-rel-values


5

ฉันใช้ชื่อและมันได้ผล!

แอตทริบิวต์ title ให้ชื่อของลิงก์ มีข้อยกเว้นประการหนึ่งคือคำแนะนำเท่านั้น ค่าคือข้อความ ข้อยกเว้นสำหรับลิงก์สไตล์ชีตโดยที่แอตทริบิวต์ title กำหนดชุดสไตล์ชีตทางเลือก

<a class="navbar-brand" href="http://www.alberghierocastelnuovocilento.gov.it/sito/index.php" title="sito dell'Istituto Ancel Keys">A.K.</a>

1

ผมแปลกใจที่จะเห็นคำตอบทั้งหมดที่ระบุการใช้altแอตทริบิวต์ในaแท็กไม่ถูกต้อง นี่เป็นสิ่งที่ผิดอย่างยิ่ง

Html ไม่บล็อกคุณโดยใช้แอตทริบิวต์ใด ๆ :

<a your-custom-attribute="value">Any attribute can be used</a>

หากคุณถามว่าการใช้altแอตทริบิวต์aนั้นถูกต้องตามความหมายหรือไม่ฉันจะตอบว่า:

NO <img alt="image description" />มันถูกใช้เพื่ออธิบายภาพชุด

มันเป็นเรื่องของสิ่งที่คุณจะทำกับคุณลักษณะ นี่คือตัวอย่าง:

a::after {
  content: attr(color); /* attr can be used as content */
  display: block;
  color: white;
  background-color: blue;
  background-color: attr(color); /* This won't work */
  display: none;
}
a:hover::after {
  display: block;
}
[hidden] {
  display: none;
}
<a href="#" color="red">Hover me!</a>
<a href="#" color="red" hidden>In some cases, it can be used to hide it!</a>

อีกครั้งหากคุณถามว่าการใช้แอตทริบิวต์ที่กำหนดเองถูกต้องตามความหมายหรือไม่ฉันจะพูดว่า:

ไม่ใช้data-*แอตทริบิวต์สำหรับการใช้ความหมาย


อ๊ะคำถามถูกถามในปี 2013

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.