Hướng dẫn arrow box css - hộp mũi tên css
Mình xin tiếp tục series bài viết "Có thể bạn biết rồi", lần này mình sẽ lại nói về một vấn đề được nhiều người biết tới nhưng mình nghĩ ít ai hiểu rõ nguyên lý đằng sau nó, đó là CSS Arrow"Có thể bạn biết rồi", lần này mình sẽ lại nói về một vấn đề được nhiều người biết tới nhưng mình nghĩ ít ai hiểu rõ nguyên lý đằng sau nó, đó là CSS Arrow Show Bản chất về hình khối trong CSSNếu bạn chưa biết, thì CSS Arrow là một kĩ thuật giúp tạo ra một hình tam giác/mũi tên đính vào một thẻ div nào đó, thường được sử dụng để làm các tooltip hoặc các hộp thoại (giống như hộp lời thoại trong truyện tranh vậy) Vì trong CSS, tất cả mọi element đều được thể hiện dưới dạng hộp (box), có thể là hình chữ nhật hoặc hình vuông, đôi khi sẽ là hình tròn hoặc hình chữ nhật có góc bo nếu bạn sử dụng Sử dụng CSS ArrowThông thường, để tạo ra các mũi tên này, chúng ta thường sử dụng website http://cssarrowplease.com/ Vào đây chọn các thông số rồi copy đoạn CSS nó tạo ra, dán vào dự án và sử dụng. Hoặc với một số bạn, có lẽ sẽ tìm vào các blog như trang này https://css-tricks.com/snippets/css/css-triangle/ để copy đoạn CSS tương ứng cho từng loại arrow mình cần. Một đoạn CSS đơn giản thể hiện mũi tên hướng lên trên như sau:
Quá dễ phải không? Vậy có bao giờ bạn tự hỏi, làm thế quái nào mà đoạn code trên nó tạo ra được một hình khối dạng mũi tên chưa? Và làm cách nào để tuỳ biến nó theo ý mình mà không phải ngồi mò, thay đổi từng thông số trong đoạn CSS kia cho đến khi nó vừa ý? Như thế này =)) Cách tạo ra CSS ArrowNhìn vào đoạn code trên, chúng ta thấy đa phần là liên quan tới việc xử lý
Vậy Thuộc tính
Kết quả của đoạn code trên tạo ra một hình chữ nhật có viền bao quanh màu đen cho 4 cạnh, có độ dày 2 pixel: OK. Cái này quá dễ, ai cũng biết rồi. Vậy nếu chúng ta đặt 4 màu khác nhau cho 4 cạnh của hình chữ nhật trên, thì nó sẽ trông như thế nào?
Đoạn code trên đặt 4 màu khác nhau cho 4 cạnh của hình chữ nhật, mỗi cạnh có đường viền dày 5 pixel, và đây là kết quả: Các bạn có nhận thấy điều gì không? Đó là giao điểm của các cạnh là những đường chéo, đến đây có lẽ các bạn cũng đã hình dung ra được tại sao chúng ta cần dùng border để tạo khối hình tam giác cho các thẻ div rồi đúng không? OK, bây giờ chúng ta thử tăng độ dày của các 4 và 5 của thẻ div về 6 xem sao nhé:
Kết quả sẽ như thế này: Vậy là chúng ta đã có được 4 hình tam giác xuất hiện với 4 màu khác nhau, tương ứng với màu của 4 cạnh rồi. Vấn đề bây giờ là làm sao để triệt tiêu 3 hình tam giác kia để lấy 1 hình tam giác theo hướng chúng ta cần thôi? Xem lại đoạn code mẫu bên trên, chúng ta thấy có các cạnh được gán màu là 7, vậy chúng ta sẽ thử gán màu này cho 3 cạnh 8, 9 và 0 xem sao:
Tada! Vậy là chúng ta đã tạo được khối hình tam giác màu xanh: Điều này có nghĩa là gì? Kĩ thuật tạo hình tam giác, thực chất là lợi dụng việc trình duyệt hiển thị giao điểm của các cạnh trong một element dưới dạng đường chéo, chúng ta set độ cao và màu sắc cho một cạnh chúng ta cần tạo ra hình tam giác, và các cạnh còn lại để cho nó trong suốt ( 7)Ở ví dụ trên, bạn có thể bỏ luôn thuộc tính 2 vì nó không nhất thiết phải nằm ở đó nữa. Tương tự như thế, với các hướng mũi tên khác, chúng ta chỉ việc giữ lại các cạnh tương ứng, làm trong suốt các cạnh còn lại là xong.Vậy là chúng ta đã hiểu cơ chế tạo ra CSS Arrow, vậy làm cách nào để tuỳ biến nó? Trong ví dụ này, chúng ta sẽ chỉ xét hình tam giác có đỉnh hướng lên trên: Tăng chiều cao của tam giácĐể tăng chiều cao cho hình tam giác này, chúng ta tăng kích thước border của cạnh 3 như sau:
Kết quả: Tăng chiều rộngNgược lại, nếu muốn tăng chiều rộng của hình tam giác, chúng ta sẽ tăng độ rộng của 2 cạnh 8 và 9:
Kết quả: Tăng chiều rộng Ngược lại, nếu muốn tăng chiều rộng của hình tam giác, chúng ta sẽ tăng độ rộng của 2 cạnh 8 và 9:Dựa vào cơ chế trên, các bạn có thể tự tìm ra cách để tuỳ biến cho các khối hình tam giác có hướng xoay khác (trái, phải, hướng xuống dưới,...) Hẹn gặp lại các bạn trong các bài viết sau ;) |