Chọn tùy chọn nội dung css

Tìm hiểu cách tạo hộp chọn tùy chỉnh bằng CSS và JavaScript

Hộp chọn tùy chỉnh

Tự mình thử »

Tạo Menu chọn tùy chỉnh

Bước 1] Thêm HTML

Ví dụ



                                          

Bước 2] Thêm CSS

Ví dụ

/* Vùng chứa phải được định vị tương đối. */
. chọn vị trí {
tùy chỉnh. họ hàng;
  họ phông chữ. Arial;
}

.custom-select select {
  hiển thị. không ai; . */
}

.select-selected {
  màu nền. DodgerBlue;
}

/* Tạo kiểu cho mũi tên bên trong phần tử chọn. */
. chọn lọc. sau {
  vị trí. tuyệt đối;
  nội dung. "";
  trên cùng. 14px;
  phải. 10px;
  chiều rộng. 0;
  chiều cao. 0;
  đường viền. 6px liền khối trong suốt;
  màu viền. #fff trong suốt trong suốt trong suốt;
}

/* Trỏ mũi tên lên trên khi hộp chọn đang mở [hoạt động]. */
. chọn lọc. chọn-mũi tên-hoạt động. sau {
  màu viền. trong suốt trong suốt #fff trong suốt;
  trên cùng. 7px;
}

/* tạo kiểu cho các mục [tùy chọn], bao gồm cả mục đã chọn. */
. div chọn mục,. đã chọn đã chọn {
  màu. #ffffff;
  phần đệm. 8px 16px;
  đường viền. 1px trong suốt;
  màu viền. rgba trong suốt trong suốt[0, 0, 0, 0. 1] trong suốt;
  con trỏ. con trỏ;
}

/* Mục kiểu dáng [tùy chọn]. */
. select-items {
  vị trí. tuyệt đối;
  màu nền. DodgerBlue;
  trên cùng. 100%;
  còn lại. 0;
  đúng. 0;
  chỉ mục z. 99;
}

/* Ẩn các mục khi đóng hộp chọn. */
. chọn-ẩn {
  hiển thị. không;
}

.select-items div:hover, .same-as-selected {
  background-color. rgb[0, 0, 0, 0. 1];
}

Bước 3] Thêm JavaScript

Ví dụ

var x, i, j, l, ll, selElmnt, a, b, c;
/* Tìm bất kỳ phần tử nào có lớp "chọn tùy chỉnh". */
x = tài liệu. getElementsByClassName["chọn tùy chỉnh"];
l = x. độ dài;
for [i = 0; i < l; i++] {
  selElmnt = x[i]. getElementsByTagName["select"][0];
  ll = selElmnt. độ dài;
  /* Đối với mỗi phần tử, hãy tạo một DIV mới sẽ đóng vai trò là mục đã chọn. */
  a = tài liệu. createElement["DIV"];
  a. setAttribute["class", "select-selected"];
  a. bên trongHTML = selElmnt. tùy chọn[selElmnt. mục lục được chọn]. innerHTML;
  x[i]. appendChild[a];
  /* Đối với mỗi phần tử, hãy tạo một DIV mới chứa danh sách tùy chọn. */
  b = tài liệu. createElement["DIV"];
  b. setAttribute["class", "select-items select-hide"];
  for [j = 1; j < ll; j++] {
    /* For . */
    create a new DIV that will act as an option item: */
    c = tài liệu. createElement["DIV"];
    c. bên trongHTML = selElmnt. tùy chọn[j]. innerHTML;
    c. addEventListener["click", function[e] {
        /* Khi một mục được nhấp, hãy cập nhật hộp chọn ban đầu,
        và mục đã chọn. */
        var y, i, k, s, h, sl, yl;
        s = this. cha mẹNode. cha mẹNode. getElementsByTagName["select"][0];
        sl = s. độ dài;
        h = cái này. cha mẹNode. anh chị em trước đó;
        for [i = 0; i < sl; i++] {
          if [s. tùy chọn [i]. InternalHTML == cái này. innerHTML] {
            s. đã chọnIndex = i;
            h. bên trongHTML = cái này. innerHTML;
            y = this. cha mẹNode. getElementsByClassName["same-as-selected"];
            yl = y. độ dài;
            for [k = 0; k < yl; k++] {
              y[k]. removeAttribute["class"];
            }
            cái này. setAttribute["class", "same-as-selected"];
            break;
          }
        }
        h.click[];
    }];
    b. appendChild[c];
  }
  x[i]. appendChild[b];
  a. addEventListener["click", function[e] {
    /* Khi hộp chọn được nhấp, hãy đóng bất kỳ hộp chọn nào khác,
    và mở/đóng hộp chọn hiện tại . */
    e. stopPropagation[];
    closeAllSelect[this];
    this. tiếp theoAnh chị em. danh sách lớp học. toggle["select-hide"];
    this. danh sách lớp học. toggle["select-arrow-active"];
  }];
}

function closeAllSelect[elmnt] {
  /* Hàm sẽ đóng tất cả các hộp chọn trong tài liệu,
  ngoại trừ hộp chọn hiện tại. */
  var x, y, i, xl, yl, arrNo = [];
  x = tài liệu. getElementsByClassName["select-items"];
  y = tài liệu. getElementsByClassName["được chọn"];
  xl = x. độ dài;
  yl = y. độ dài;
  for [i = 0; i < yl; i++] {
    if [elmnt == y[i]] {
      arrNo.push[i]
    } other {
      y[i]. danh sách lớp học. remove["select-arrow-active"];
    }
  }
  for [i = 0; i < xl; . indexOf[i]] {
    if [arrNo.indexOf[i]] {
      x[i]. danh sách lớp học. add["select-hide"];
    }
  }
}

/* Nếu người dùng nhấp vào bất kỳ đâu bên ngoài hộp chọn,
thì hãy đóng tất cả các hộp chọn. */
tài liệu. addEventListener["click", closeAllSelect];

Tự mình thử »

Chủ Đề