Tùy chọn chọn CSS

Trong một thời gian dài, thật khó để tạo kiểu cho phần tử trên tất cả các trình duyệt. Hóa ra, một tập hợp các phong cách hợp lý có thể tạo ra một hộp lựa chọn nhất quán và hấp dẫn trên các trình duyệt mới trong khi vẫn ổn trong các trình duyệt cũ hơn. Có một số thành phần của hộp chọn có thể được tạo kiểu, đặc biệt là chiều cao, chiều rộng, phông chữ, đường viền, màu sắc, phần đệm, bóng hộp và màu nền. Tiêu đề của tài liệu. hộp { chiều rộng. 120px; . 30px; . 1px cố định #999; . 18px; . #1c87c9; . #eee; . 5px; . 4px 4px #ccc;

Hộp chọn theo kiểu

Một hộp chọn bình thường

Hộp chọn theo kiểu

Tuy nhiên, mũi tên thả xuống khó chịu liên tục giữ nguyên. Không có cách trực tiếp để tạo kiểu cho nó, nhưng có một số thủ thuật có thể được sử dụng để thay đổi mũi tên thả xuống mặc định. Hãy thảo luận về một số phương pháp dưới đây

Để ẩn mũi tên mặc định của trình đơn thả xuống, hãy đặt thuộc tính giao diện CSS thành giá trị "không", sau đó thêm mũi tên riêng của bạn với sự trợ giúp của thuộc tính tốc ký nền. Lưu ý rằng thuộc tính xuất hiện vẫn được coi là một công nghệ thử nghiệm và bạn cần sử dụng tiền tố -moz- (đối với Firefox) và -webkit- (đối với Chrome, Safari, Opera) để tương thích tối đa với trình duyệt. Tiêu đề của tài liệu select { chiều rộng. 140px; . 35px; . 5px 35px 5px 5px; . 18px; . 2px rắn #ccc; . không có; . không có; . không ai; . url("/uploads/media/default/0001/02/f7b4d3d2ba3fe1d8518e6e63d7740e1e73921abf. png") 96%/15% không lặp lại #eee; }

Đầu tiên, đặt phần tử hộp vào vùng chứa có chiều rộng cố định và đặt phần tràn thành "ẩn". Sau đó, cung cấp cho phần tử chiều rộng lớn hơn 20 pixel so với chiều rộng

yếu tố. Điều này sẽ ẩn mũi tên thả xuống mặc định (vì tràn. ẩn trên vùng chứa), và bây giờ có thể áp dụng hình nền ở phía bên phải của

.

Phương pháp này rất tốt để sử dụng vì tất cả các trình duyệt đều hỗ trợ tràn hiệu quả. ẩn giấu

Lưu ý rằng nhược điểm của phương pháp này là các tùy chọn được mở rộng trực quan hơn so với menu chọn



  
    Title of the document
    
  
  
    

Thuộc tính sự kiện con trỏ CSS có thể được sử dụng để tạo danh sách thả xuống riêng lẻ, bằng cách phủ một phần tử lên mũi tên thả xuống gốc (để tạo tùy chỉnh) và không cho phép sự kiện con trỏ trên đó. Phương pháp này hoạt động tốt và có hỗ trợ trình duyệt tuyệt vời. Khá đẹp khi sử dụng các dấu ưa thích của bạn thay vì dấu hiệu thả xuống khó chịu của hộp

Đặt các dấu trong thuộc tính nội dung và đặt phông chữ tương ứng để trông đẹp mắt. Ở đây, chúng tôi đặt "Consolas" và "monospace". Sau đó, bạn cần xoay các dấu chấm câu bằng thuộc tính biến đổi CSS

Ở đây, hộp được chèn vào một phần tử để chúng ta có thể đặt con trỏ cho nó ngay cả khi thuộc tính pointer-events được đặt thành "none". Tiêu đề của tài liệu select { chiều rộng. 140px; . 35px; . 4px; . 4px; . 2px 2px 8px #999; . #eee; . không có; . không có; . chặn Nội tuyến; . không có; . không có; . không ai; . con trỏ; . liên quan đến; . sau { nội dung. ''; . 11px "Consolas", đơn cách; . #666; . xoay (90 độ); . xoay (90 độ); . xoay (90 độ); . 8px; . 2px; . 0 0 2px; . 1px rắn #ddd; . tuyệt đối; . không ai; . trước { nội dung. ''; . 6px; . 0px; . 20px; . 20px; . #eee; . tuyệt đối; . không ai; . khối;

In this series on Web Forms, we’ve been learning how to create and style various form controls. In the last installment, we learned how to style radio buttons and checkboxes by first hiding them using the appearance CSS property. We’ll once again be putting the appearance property to use in order to customize the appearance of the element, while the next one will cover the multiple element consists of several constituent parts, including a read-only text field that shows the currently selected item, an arrow icon, and a drop-down list:

Tùy chọn chọn CSS

 

In terms of markup, the that lets the user choose a favorite single from a completely random music artist:


Cách đặt lại kiểu CSS

Như chúng tôi đã làm với các nút radio và hộp kiểm trước đây, chúng tôi sẽ xóa điều khiển gốc bằng thuộc tính xuất hiện. CSS sau đây cũng sẽ xóa mũi tên thả xuống

select {
  // styles reset, including removing the default dropdown arrow
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  
  background-color: transparent;
  border: none;
  padding: 0 1em 0 0;
  margin: 0;
  width: 100%;
  font-family: inherit;
  font-size: inherit;
  cursor: inherit;
  line-height: inherit;

  // Stack above custom arrow
  z-index: 1;

  // Remove focus outline, will add on alternate element
  outline: none;
}

The padding is a short-hand property that sets a value to each of the by targeting the

that encloses the at this point:

Tùy chọn chọn CSS

 

Lưu ý rằng nó vẫn thiếu mũi tên xuống. Hãy thêm nó ngay bây giờ

Creating the Custom Arrow in CSS

Để hiển thị mũi tên thả xuống, chúng tôi sẽ sử dụng thuộc tính CSS hiện đại có tên là clip-path. Các đường dẫn clip cho phép chúng tôi tạo tất cả các loại hình dạng bằng cách “cắt bớt” các hình dạng hình vuông và hình chữ nhật khác mà chúng tôi lấy làm mặc định cho hầu hết các phần tử. Trước khi có thuộc tính clip-path, SVG sẽ là giải pháp phù hợp. Tuy nhiên, nó không hoạt động tốt dưới dạng nền vì chúng tôi không thể thay đổi giao diện của nó theo bất kỳ cách nào mà không xác định lại toàn bộ SVG. Nó cũng sẽ không hỗ trợ việc sử dụng các biến tùy chỉnh CSS

We’ll define the arrow as an :after pseudo-element of the .select

:

.select {
  //custom select rules...
  
  //Custom arrow
  &::after {
    content: "";
    justify-self: end;
    width: 0.8em;
    height: 0.5em;
    background-color: var(--select-arrow);
    clip-path: polygon(100% 0%, 0 0%, 50% 100%);
  }
}

Bạn có thể tự hỏi những gì &. sau khi làm. Nó là một phần của Sass (Syntactally Awesome StyleSheets), là một phần mở rộng CSS biên dịch thành CSS thẳng. Nó làm cho CSS dễ viết mã hơn và loại bỏ rất nhiều sự trùng lặp. Nó thực hiện điều đó – ít nhất là một phần – thông qua việc lồng ghép. Ký tự dấu và đề cập đến bộ chọn gốc khi lồng

Định vị mũi tên

In order to accommodate the :after‘s width, we have to update the .select rule to use a CSS grid layout. Then, to position the arrow, we’ll define a grid-template-areas called “select” and add a rule that assigns it to the