Tìm kiếm bài viết

Mẹo hay có thể bạn chưa biết trong CSS

09.11.2020

5.0/5 (1 Reviews)

Sau đây là 1 số Mẹo hay có thể bạn chưa biết trong CSS. Hãy trải nghiệm xem CSS có thể làm gì mà bạn chưa biết nhé.

    Chào các bạn, hôm nay mình xin chia sẻ 1 số mẹo khi mình làm và gặp trong các dự án, những mẹo này có thể bạn chưa biết, đã biết nhưng ít dùng hoặc đã dùng nhuần nhuyễn như cái cách bạn "múa" invoker ở tầm rank Herald :3

    css

    Nhưng dù ở mức độ nào thì nếu có gì sai sót và không chính xác trong bài viết, mong mọi người sẽ để lại bình luận bên dưới để mình hoàn thiện hơn cho bài viết và cùng nhau chia sẻ kinh nghiệm nhé. Xin cảm ơn mọi người.

    Vô hiệu hóa event click trên thẻ div

    Đôi khi, vì 1 vài lý do đặc biệt nào đó, mà chúng ta muốn disable sự kiện click trên 1 thẻ div. Ta có thể disable nó 1 cách đơn giản bằng thuộc tính của css là pointer-events: none;, muốn nó nhả ra lại để bạn bấm thì có set là cho nó là auto

    Link tham khảo về property này: https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events

    Position: sticky; trên IE < 15

    Đối với các bạn đã biết thì IE trong giới web developer là 1 cái gì đó rất là ... , =.=! và nó luôn làm chúng ta phải đau đầu để xử lý riêng cho nó. Nó giống như 1 cô gái đỏng đảnh vậy, dù chúng ta không ưa gì cô ấy (không phải phân biệt hay chê xấu gì đâu, chỉ đơn giản là cô ấy lạc hậu và không theo trend gì cả). Nhưng cô ấy luôn bắt chúng ta phải đối xử với cô ấy theo 1 cách riêng, và nâng niu so với những cô gái khác như Chrome hay Firefox, vì nếu chúng ta không làm vậy, sẽ bị "thằng khác" (khách hàng) nó đấm cho vì không đối xử theo cách riêng với cô ấy T.T

    Một trong những vấn đề thỉnh thoảng mình gặp là mình phải xử lý position: sticky trên IE < 15, trên 15 thì đã được hỗ trợ rồi. Vì cái sự lạc hậu quê mùa không chịu update của IE ( và của ai đó khi dùng web) nên mình sẽ dùng đoạn code dưới đây để xử lý :

    HTML

    <div class="header">
        <h1>Hello IE!!!</h1>
      </div>
      <ul class="menu">
        <li><a href="#">Tab 1</a></li><li>
        <a href="#">Tab 2</a></li><li>
        <a href="#">Tab 3</a></li><li>
      </ul>
      <div class="container">
          <p>1</p>
          <p>2</p>
          <p>3</p>
      </div>
    

    CSS

    body {
       margin: 0; 
    }
    
    .header {
        height: 100px;
        background-color: #ddcbaf;
        text-align: center;
    }
    
    .header h1 {
        margin-top: 0;
        padding-top: 20px;
    }
    
    .menu {
        margin: 0;
        padding: 0;
        width: 100%;
        background-color: #BFFFF3;
    }
    
    .menu li {
        display: inline-block;
        text-align: center;
        width: 25%;
    }
    
    .menu li:hover,
    .menu li:focus {
        background-color: #66FFE3;
    }
    
    .menu a {
        display: block;
        padding: 10px 0;
        text-decoration: none;
    }
    
    .container {
      padding: 0 20px;
      color: #e3e3e3;
    }
    

    JS

    const menu = document.querySelector('.menu')
    const menuPosition = menu.getBoundingClientRect().top;
    window.addEventListener('scroll', function() {
        if (window.pageYOffset >= menuPosition) {
            menu.>

    Bạn có thể copy nó và chạy thử trên IE, mặc dù có thể không mượt mà như sticky trên Chrome nhưng ít ra có còn hơn không phải không nào. :v

    Truncate nhiều dòng

    Chắc hẳn nhiều bạn cũng đã phải xử lý trường hợp khi text quá dài, phải hiển thị dấu '...' ở cuối text đó với cú pháp quen thuộc

    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis; 
    

    Và nó hoạt động rất tốt đúng không (y). Vậy nếu phải làm việc đó với text khi quá 2 dòng, 3 dòng thì sao? Hừm, cũng đừng lo lắng quá, chỉ cần copy and paste đoạn dưới đây vào là ổn ngày (y)

    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: <số dòng bạn muốn hiển thị dấu '...'>;
    overflow: hidden;
    

    Night mode

    Hiện nay các trang web và app đang có xu hướng thêm night mode vào để người dùng có thể dùng sản phẩm vào ban đêm. Và nếu bạn chưa tìm được 1 cách hữu hiện và nhanh chóng nào để áp dụng nó lên sản phẩm của mình, bạn có thể tham khảo cách này:

    Sử dụng bộ lọc invert và hue-rotate, trong đó:

    • Bộ lọc: invert() theo thang từ 0 đến 1 – trong đó 1 thay đổi màu trắng thành màu đen.
    • Bộ lọc: hue-rotation() làm thay đổi nội dung màu sắc của các thành phần của bạn theo cách chúng ít nhiều giữ lại cùng một mức độ tách biệt với nhau. Giá trị của nó nằm trong khoảng từ 0deg đến 360deg.

    Bằng cách kết hợp các hiệu ứng này trên thẻ body, bạn đã có thể thêm night mode cho sản phẩm của mình. Nhưng cơ bản mà nói thì property này hoạt động dựa trên việc lọc màu nên bạn phải set màu của nó trước đã, trong ví dụ thì mình set background là màu trắng

    body {
        background: #FFFFFF;
        filter: invert(1) hue-rotate(210deg);
    }
    

    Cảm ơn các bạn đã đọc qua bài chia sẻ của mình, hy vọng trong bài viết tới mình có thể chia sẻ với các bạn những mẹo mới để áp dụng vào dự án

    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    Kubernetes bài 6 - Vận hành k8s Day-Two Operations và Quản trị bằng GitOps

    22.05.2026

    Khi cụm Kubernetes của bạn đã được bảo mật cấu hình, tối ưu tài nguyên và thiết lập tự phục hồi, câu hỏi đặt ra là làm sao để duy trì sự ổn định đó trong nhiều năm tiếp theo mà không bị phụ thuộc

    thumbnail

    Kubernetes bài 5 - bảo mật Cloud Native và chuẩn DevSecOps cho K8s

    22.05.2026

    Việc siết chặt an ninh (Hardening) không phải là cấu hình một vài thông số rồi bỏ đó, mà là một tư duy phòng thủ chiều sâu.

    thumbnail

    Kubernetes bài 4 - Tối ưu Resource Auto-Healing và Scale Zero-Downtime

    22.05.2026

    Bài viết này sẽ đi sâu vào các cơ chế ở tầng Kernel giúp hệ thống tự phục hồi, chống lại các đợt tấn công cạn kiệt tài nguyên và cập nhật phiên bản mới mà người dùng không hề hay biết.

    thumbnail

    Kubernetes bài 3 - Bảo mật cấu hình k8s và config Security trên Production

    22.05.2026

    Kubernetes giải quyết bài toán này bằng hai đối tượng chuyên biệt nhưng nếu không hiểu rõ bản chất bảo mật ở tầng dưới, bạn đang tự tay dâng toàn bộ chìa khóa hệ thống cho hacker.

    thumbnail

    Kubernetes bài 2 - Mạng lưới k8s và luồng Traffic ở Packet Level

    22.05.2026

    Pod không chỉ là một container: Rất nhiều người nhầm lẫn Pod 1-1 với Container. Thực chất, Pod là đơn vị triển khai nhỏ nhất, có thể chứa một hoặc nhiều container

    Mục lục bài viết