โฮมเพจ » UI / UX » วิธีการสร้าง UX ที่ดีขึ้นด้วย HTML5 Data- * คุณสมบัติ

    วิธีการสร้าง UX ที่ดีขึ้นด้วย HTML5 Data- * คุณสมบัติ

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

    โชคดีที่คุณไม่ต้องทำอะไรอีกเนื่องจาก HTML5 ได้เปิดตัวทั่วโลกใหม่ ข้อมูล-* แอตทริบิวต์ที่ทำให้สามารถฝังข้อมูลเพิ่มเติมในองค์ประกอบ HTML ใด ๆ ใหม่ ข้อมูล-* แอตทริบิวต์ ทำให้ HTML สามารถขยายได้มากขึ้น, ดังนั้น ช่วยให้คุณสร้างแอพที่ซับซ้อนมากขึ้น, และสร้างประสบการณ์ผู้ใช้ที่ซับซ้อนยิ่งขึ้นโดยไม่ต้องใช้เทคนิคที่ใช้ทรัพยากรมากเช่นการโทรอาแจ็กซ์หรือการสืบค้นฐานข้อมูลฝั่งเซิร์ฟเวอร์.

    การสนับสนุนเบราว์เซอร์ของคุณสมบัติใหม่ระดับโลกนั้นค่อนข้างดีเนื่องจากเบราว์เซอร์สมัยใหม่รองรับ (IE8-10 รองรับบางส่วน).

    ไวยากรณ์ของ ข้อมูล-* แอตทริบิวต์

    ไวยากรณ์ของใหม่ ข้อมูล-* คุณลักษณะคล้ายกับของคุณลักษณะที่มีคำนำหน้าอาเรีย คุณสามารถแทรกสตริงตัวพิมพ์เล็กแทนการ * * * * สัญญาณ นอกจากนี้คุณยังต้องกำหนดค่าให้กับแต่ละแอตทริบิวต์ในรูปแบบของสตริง.

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

     
    • จอห์นโด
    • Jane Doe

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

     
    • จอห์นโด
    • Jane Doe

    ตามกฎทั่วไปหากคุณต้องการเพิ่มแอตทริบิวต์ที่กำหนดเองของคุณเองไปยังองค์ประกอบ HTML คุณจะต้องนำหน้าด้วยเสมอ ข้อมูล- เชือก ในทำนองเดียวกันเมื่อคุณเห็นแอททริบิวต์ข้อมูลนำหน้าในรหัสของคนอื่นคุณสามารถรู้ได้ว่าเป็นแอททริบิวที่กำหนดเองที่ผู้แต่งแนะนำ.

    เวลาที่จะใช้และเมื่อใดที่จะไม่ใช้คุณสมบัติที่กำหนดเอง

    W3C กำหนดเอง ข้อมูล-* คุณลักษณะเช่นนั้น:

    “แอตทริบิวต์ข้อมูลที่กำหนดเองมีวัตถุประสงค์เพื่อจัดเก็บข้อมูลที่กำหนดเองเป็นส่วนตัวในหน้าหรือแอปพลิเคชันซึ่งไม่มีแอตทริบิวต์หรือองค์ประกอบที่เหมาะสมอีกต่อไป.”

    ควรพิจารณาใช้ ข้อมูล-* แอตทริบิวต์ เมื่อคุณไม่สามารถหาแอตทริบิวต์ความหมายอื่น ๆ สำหรับข้อมูลที่คุณต้องการจัดเก็บ.

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

    สิ่งสำคัญที่ควรทราบคือ ข้อมูล-* คุณลักษณะเก็บข้อมูลที่ ส่วนตัวไปยังหน้าหรือแอปพลิเคชัน, ซึ่งหมายความว่าตัวแทนผู้ใช้จะถูกเพิกเฉยเช่นบ็อตของเครื่องมือค้นหาและแอปพลิเคชันภายนอก แอ็ตทริบิวต์ที่นำหน้าด้วยข้อมูลสามารถเข้าถึงได้โดยรหัสที่ทำงานบนไซต์ที่โฮสต์ HTML เท่านั้น.

    กำหนดเอง ข้อมูล-* คุณลักษณะถูกใช้อย่างกว้างขวางโดยเฟรมเวิร์กส่วนหน้าเช่น Bootstrap และ Zurb Foundation เช่นกัน ข่าวดีก็คือคุณไม่จำเป็นต้องรู้วิธีการเขียน JavaScript หากคุณต้องการใช้คุณลักษณะที่มีคำนำหน้าข้อมูลเป็นส่วนหนึ่งของเฟรมเวิร์กเนื่องจากคุณเพียงแค่เพิ่มลงในโค้ด HTML เพื่อเรียกใช้ฟังก์ชันของ ปลั๊กอิน JavaScript ที่เขียนไว้ล่วงหน้า.

    ข้อมูลโค้ดด้านล่างเพิ่มคำแนะนำเครื่องมือทางด้านซ้ายเป็นปุ่มใน Bootstrap โดยใช้ประโยชน์จาก ข้อมูลสลับ และ ข้อมูลตำแหน่ง แอตทริบิวต์ที่กำหนดเองและกำหนดค่าที่เหมาะสมให้กับพวกเขา.

     

    เป้า ข้อมูล-* คุณสมบัติที่มี CSS

    แม้ว่าจะไม่แนะนำให้ใช้ ข้อมูล-* คุณลักษณะเฉพาะสำหรับวัตถุประสงค์ในการจัดแต่งทรงผมคุณสามารถเลือกองค์ประกอบ HTML ที่อยู่ในนั้นได้ด้วยความช่วยเหลือของตัวเลือกคุณสมบัติทั่วไป หากคุณต้องการเลือกแต่ละองค์ประกอบที่มีแอตทริบิวต์ข้อมูลนำหน้าให้ใช้ไวยากรณ์นี้ใน CSS ของคุณ:

     li [ผู้ใช้ข้อมูล] color: blue; 

    โปรดทราบว่าไม่ใช่ชื่อผู้ใช้ที่จะแสดงเป็นสีน้ำเงินในข้อมูลโค้ดด้านบน - หลังจากข้อมูลทั้งหมดที่จัดเก็บในแอตทริบิวต์ที่กำหนดเองไม่ปรากฏให้เห็น - แต่ชื่อของพนักงานที่อยู่ใน

  • องค์ประกอบ (ในตัวอย่าง “จอห์นโด” และ “Jane Doe”).

    หากคุณต้องการเลือกองค์ประกอบที่แอตทริบิวต์ prefixed data ใช้ค่าบางค่านี่เป็นไวยากรณ์ที่จะใช้:

     li [data-department = "IT"] border: solid blue 1px; 

    คุณสามารถใช้ CSS attribute selector ที่ซับซ้อนยิ่งขึ้นเช่นตัวเลือก sibling combinator selector ทั่วไป ([ข้อมูลค่า ~ = "foo"]) หรือตัวเลือกสัญลักษณ์แทน ([ข้อมูลค่า * = "foo"]) พร้อมแอ็ตทริบิวต์ที่นำหน้าด้วยข้อมูลเช่นกัน.

    ทางเข้า ข้อมูล-* คุณสมบัติกับ JavaScript

    คุณสามารถเข้าถึงข้อมูลที่เก็บไว้ในแบบกำหนดเอง ข้อมูล-* คุณสมบัติกับ JavaScript โดยใช้คุณสมบัติชุดข้อมูลหรือของ jQuery ข้อมูล() วิธี.

    JavaScript วานิลลา

    ชุด property เป็นทรัพย์สินของ HtmlElement อินเทอร์เฟซซึ่งหมายความว่าคุณสามารถใช้กับแท็ก HTML ใดก็ได้ ชุด คุณสมบัติให้การเข้าถึงแบบกำหนดเองทั้งหมด ข้อมูล-* คุณสมบัติขององค์ประกอบ HTML ที่กำหนด คุณลักษณะจะถูกส่งกลับเป็น DOMStringMap วัตถุที่มีหนึ่งรายการสำหรับแต่ละรายการ ข้อมูล-* คุณลักษณะ.

    ในบ้านเรา เกี่ยวกับเรา ตัวอย่างหน้าคุณสามารถตรวจสอบแอตทริบิวต์ที่กำหนดเองได้อย่างง่ายดาย “Jane Doe” มีโดยใช้ ชุด ด้วยวิธีต่อไปนี้:

     var jane = document.getElementById ("jane"); console.log (jane.dataset); // DOMStringMap ผู้ใช้: "janedoe", แผนก: "IT" 

    คุณจะเห็นว่าในการกลับมา DOMStringMap คัดค้าน ข้อมูล- คำนำหน้าจะถูกลบออกจากชื่อของคุณลักษณะ (ผู้ใช้งาน แทน ข้อมูลของผู้ใช้, และ แผนก แทน ข้อมูลแผนก) คุณต้องใช้แอททริบิวในรูปแบบเดียวกันหากคุณต้องการเข้าถึงค่าของแอททริบิวต์ที่นำหน้าด้วยข้อมูลบางอย่างเท่านั้น (แทนที่จะเป็นรายการแอททริบิวที่กำหนดเองทั้งหมดเช่นในโค้ดขนาดด้านบน).

    คุณสามารถดึงค่าของค่าเฉพาะได้ ข้อมูล-* คุณลักษณะเป็นคุณสมบัติของ ชุด คุณสมบัติ ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้คุณต้องละเว้น ข้อมูล- คำนำหน้าจากชื่อของคุณสมบัติดังนั้นหากคุณต้องการเข้าถึงค่าของ Jane ข้อมูลของผู้ใช้ คุณลักษณะคุณสามารถทำได้ด้วยวิธีนี้:

     var jane = document.getElementById ("jane"); console.log (jane.dataset.user) // janedoe

    ของ jQuery ข้อมูล() วิธี

    ข้อมูล() วิธีการ jQuery ทำให้สามารถรับค่าของแอตทริบิวต์คำนำหน้าข้อมูล ที่นี่คุณต้องละเว้น ข้อมูล- คำนำหน้าจากชื่อของแอตทริบิวต์เพื่อเข้าถึงอย่างถูกต้อง ในตัวอย่างของเราคุณสามารถแสดงข้อความแจ้งเตือนด้วยชื่อของแผนกที่ “เจน” ทำงานร่วมกับรหัสต่อไปนี้:

     $ ("# jane"). hover (function () var department = $ ("# jane"). data ("department"); alert (department););

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

     var town = $ ("# jane"). data ("town", "New York"); 

    ข้อมูลเพิ่มเติมที่คุณแนบมากับ jQuery ข้อมูล() เห็นได้ชัดว่าวิธีการจะไม่ปรากฏในรหัส HTML เป็นใหม่ ข้อมูล-* คุณลักษณะดังนั้นหากใช้เทคนิคทั้งสองในเวลาเดียวกันองค์ประกอบ HTML ที่กำหนดจะเก็บข้อมูลสองชุดชุดหนึ่งมี HTML และอีกชุดหนึ่งมี jQuery.

    ในตัวอย่างของเรา “เจน” ได้รับข้อมูลที่กำหนดเองใหม่ ("เมือง") กับ jQuery แต่คู่คีย์ - ค่าใหม่นี้จะไม่ปรากฏใน HTML เหมือนใหม่ ข้อมูลเมือง คุณลักษณะ การจัดเก็บข้อมูลด้วยวิธีที่ต่างกันสองวิธีไม่ใช่วิธีที่ดีที่สุดในการพูดอย่างน้อยที่สุด ใช้หนึ่งในสองวิธีเท่านั้นในคราวเดียว.

    การเข้าถึงและ ข้อมูล-* แอตทริบิวต์

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