10 tính năng hữu ích của HTML5, có thể bạn chưa sử dụng

Nội dung bài viết

HTML5 không phải là một điều gì quá mới đối với developers. Chúng tôi đã sử dụng một số tính năng của nó kể từ lần phát hành đầu tiên (tháng 1 năm 2008). Như một phần sáng kiến cảu dự án #100DaysOfCode, tôi đã xem xét kỹ lại danh sách tính năng HTML5. Xem những gì tôi tìm thấy? Tôi đã không thực sự sử dụng chúng cho đến bây giờ! 


Một bài viết được dịch với sự cho phép của tác giả Tapas Adhikary, và tôi cho là một trong những bài viết rất chất lượng về HTML5. Nay chia sẻ đến các bạn lập trình ở Việt Nam và cụ thể hơn là những bạn của fan page tips javascript. Xin phép không sửa đổi lời của tác giả 


Trong bài viết này, tôi liệt kê ra 10 tính năng HTML5 mà trước đây tôi không sử dụng nhiều nhưng giờ đây tôi thấy chúng hữu ích vô cùng. Tôi cũng đã tạo một nhiều ví dụ về cách hoạt động và được lưu trữ trên Netlify. Hy vọng bạn cũng thấy nó hữu ích. html5-tips.netlify.app 


Tuyệt vời, vì vậy hãy để chúng tôi bắt đầu với phần giải thích, code và các mẹo nhanh về từng thứ. Bạn có thể theo dõi tôi trên twitter để nắm bắt các bài viết và công việc trong tương lai của tôi.


🔥 Details Tag

Các thẻ details cung cấp các chi tiết nhu cầu cho người dùng. Nếu bạn có nhu cầu hiển thị nội dung cho người dùng theo yêu cầu, hãy sử dụng thẻ này. Theo mặc định, tiện ích được đóng. Khi mở, nó sẽ mở rộng và hiển thị nội dung bên trong. Các thẻ summary được sử dụng với details chỉ định một tiêu đề rõ ràng cho điều đó. 

Code:

<details>
     <summary>Click Here to get the user details</summary>
         <table>
                <tr>
                    <th>#</th>
                    <th>Name</th>
                    <th>Location</th>
                    <th>Job</th>
                </tr>
                <tr>
                    <td>1</td>
                    <td>Adam</td>
                    <td>Huston</td>
                    <td>UI/UX</td>
                </tr>
          </table>
  </details>

Bạn có xem demo từ đây:  html5-tips.netlify.app  

Gợi ý sử dụng 

Sử dụng nó trong Readme GitHub để hiển thị thông tin chi tiết theo yêu cầu.  Đây là một ví dụ  về cách tôi đã ẩn một danh sách khổng lồ các thuộc tính của thành phần phản ứng và chỉ hiển thị nó theo yêu cầu. Tuyệt, phải không?


🔥 Content Editable

contenteditable là một thuộc tính có thể được đặt trên một element để làm cho nội dung có thể chỉnh sửa được. Nó hoạt động với các element như, DIV, P, UL, v.v. Bạn phải chỉ định nó.

Notes: Khi contenteditable thuộc tính không được đặt trên một element, nó sẽ được kế thừa từ element gốc của nó.

CODE:

<h2> Shoppping List(Content Editable) </h2>
 <ul class="content-editable" contenteditable="true">
     <li> 1. Milk </li>
     <li> 2. Bread </li>
     <li> 3. Honey </li>
</ul>

Bạn có thể xem demo và thử tại đây:  html5-tips.netlify.app 


🔥 Map

Sử dụng map giúp trong việc xác định một bản đồ hình ảnh. Bản đồ hình ảnh là bất kỳ hình ảnh nào có một hoặc nhiều khu vực có thể nhấp trong đó. Thẻ bản đồ đi cùng vớithẻ để xác định các khu vực có thể nhấp. Các khu vực có thể nhấp có thể là một trong các hình dạng này, hình chữ nhật, hình tròn hoặc vùng đa giác. Nếu bạn không chỉ định bất kỳ hình dạng nào, nó sẽ xem xét toàn bộ hình ảnh. 


CODE:

<div>
    <img data-fr-src="circus.jpg" width="500" height="500" alt="Circus" usemap="#circusmap">

    <map name="circusmap">
        <area shape="rect" coords="67,114,207,254" href="elephant.htm">
        <area shape="rect" coords="222,141,318, 256" href="lion.htm">
        <area shape="rect" coords="343,111,455, 267" href="horse.htm">
        <area shape="rect" coords="35,328,143,500" href="clown.htm">
        <area shape="circle" coords="426,409,100" href="clown.htm">
    </map>
 </div>
 

Bạn có thể xem demo và thử tại đây:  html5-tips.netlify.app  

Lời khuyên 

map có những hạn chế riêng nhưng bạn có thể sử dụng nó để trình bày trực quan. Bạn hãy thử trải nghiệm với một bức ảnh gia đình và đi sâu vào bức ảnh của cá nhân (có thể là những bức ảnh cũ mà chúng ta luôn trân trọng!).


🔥 Mark Content

Sử dụng thẻ mark để đánh dấu bất kỳ nội dung văn bản nào mà bạn muốn nổi bật. 

CODE:

<p> Did you know, you can <mark>"Highlight something interesting"</mark> just with an HTML tag? </p>

Bạn có thể xem demo và thử tại đây:  html5-tips.netlify.app  

Lời khuyên 

Bạn luôn có thể thay đổi màu đánh dấu bằng css

mark {
  background-color: green;
  color: #FFFFFF;
}

🔥 data-* attribute

Các data-* attribute được sử dụng để lưu trữ dữ liệu tùy chỉnh riêng tư cho trang hoặc ứng dụng. Dữ liệu được lưu trữ có thể được sử dụng trong mã JavaScript để tạo thêm trải nghiệm người dùng. data-* attribute bao gồm hai phần: Tên thuộc tính không được chứa bất kỳ chữ cái viết hoa nào và phải dài ít nhất một ký tự sau tiền tố "data-" Giá trị thuộc tính có thể là bất kỳ chuỗi nào 

CODE:

<h2> Know data attribute </h2>
 <div 
       class="data-attribute" 
       id="data-attr" 
       data-custom-attr="You are just Awesome!"> 
   I have a hidden secret!
  </div>

 <button onclick="reveal()">Reveal</button>
 

Sau đó, trong JavaScript

 function reveal() {
   let dataDiv = document.getElementById('data-attr');
    let value = dataDiv.dataset['customAttr'];
   document.getElementById('msg').innerHTML = `${value}`;
}

Lưu ý: Để đọc các giá trị của các thuộc tính này trong JavaScript, bạn có thể sử dụng getAttribute() với tên HTML đầy đủ của chúng (tức là data-custom-attr) nhưng, tiêu chuẩn xác định một cách đơn giản hơn: sử dụng dataset property

Mẹo nhanh 

Bạn có thể sử dụng nó để lưu trữ một số dữ liệu trong trang và sau đó chuyển nó bằng lệnh gọi REST tới máy chủ. Một trường hợp sử dụng khác có thể là một cách, tôi hiển thị số lượng tin nhắn thông báo ở đây

🔥 Output Tag

Các thẻ output đại diện cho kết quả của một phép tính. Thông thường, element này xác định một vùng sẽ được sử dụng để hiển thị đầu ra văn bản từ một số phép tính. 

CODE

 <form oninput="x.value=parseInt(a.value) * parseInt(b.value)">
   <input type="number" id="a" value="0">
          * <input type="number" id="b" value="0">
                = <output name="x" for="a b"></output>
</form>

Bạn có thể xem demo và thử tại đây:  html5-tips.netlify.app  

Lời khuyên 

Nếu bạn đang thực hiện bất kỳ tính toán nào trong JavaScript phía máy khách và muốn kết quả phản ánh trên trang, hãy sử dụng thẻ output. Bạn không phải thực hiện các bước bổ sung để sử dụng một element getElementById().

🔥 Datalist

Sử dụng datalist danh sách các tùy chọn được xác định trước và cho phép người dùng gắn thêm vào nó. Nó cung cấp một tính năng autocomplete cho phép bạn có được các tùy chọn mong muốn

CODE

<form action="" method="get">
    <label for="fruit">Choose your fruit from the list:</label>
    <input list="fruits" name="fruit" id="fruit">
        <datalist id="fruits">
           <option value="Apple">
           <option value="Orange">
           <option value="Banana">
           <option value="Mango">
           <option value="Avacado">
        </datalist>
     <input type="submit">
 </form>  

Bạn có thể xem demo và thử tại đây:  html5-tips.netlify.app  

Lời khuyên 

Nó khác gì so với select-option truyền thống ? Thẻ Select là để chọn một hoặc nhiều mục từ các tùy chọn, trong đó, bạn cần xem qua danh sách để chọn. Datalist là tính năng nâng cao với hỗ trợ tự động hoàn thành.

🔥 Range(Slider)

Sử dụng range là một loại đầu vào được cung cấp cho một loại thanh trượt có thể thấy ở những thư viện khác:

<form method="post">
    <input 
         type="range" 
         name="range" 
         min="0" 
         max="100" 
         step="1" 
         value=""
         onchange="changeValue(event)"/>
 </form>
 <div class="range">
      <output id="output" name="result">  </output>
 </div>

Bạn có thể xem demo và thử tại đây:  html5-tips.netlify.app 

🔥 Meter

<label for="home">/home/atapas</label>
<meter id="home" value="4" min="0" max="10">2 out of 10</meter><br>

<label for="root">/root</label>
<meter id="root" value="0.6">60%</meter><br>

Bạn có thể xem demo và thử tại đây:  html5-tips.netlify.app  

Lời khuyên 

Không sử dụng meter cho loại trải nghiệm người dùng chỉ báo tiến trình. Chúng tôi có Progress từ HTML5

<label for="file">Downloading progress:</label>
<progress id="file" value="32" max="100"> 32% </progress>

🔥 Inputs

Phần này hầu hết chúng ta đều biết đến việc sử dụng các kiểu nhập như, văn bản, mật khẩu, v.v. Có rất ít cách sử dụng đặc biệt của các kiểu nhập, 

CODE: required 

Đánh dấu trường đầu vào là bắt buộc

<input type="text" id="username1" name="username" required>

## autofocus

<input type="text" id="username2" name="username" required autofocus>

## validation with regex

<input type="password" 
            name="password" 
            id="password" 
            placeholder="6-20 chars, at least 1 digit, 1 uppercase and one lowercase letter" 
            pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$" autofocus required>

## Color picker

<input type="color" onchange="showColor(event)">
<p id="colorMe">Color Me!</p>

Lời kết 10 thủ thuật sử dụng trong HTML5 thật hữu ích phải không? Kiến thức chúng ta có hạn, bởi vậy thầm cảm ơn những bài viết như thế này. Một bài viết tuyệt vời. 

Link gốc: 10 useful HTML5 features, you may not be using

Có thể bạn đã bị missing