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 HTMLVí dụ
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];
}
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];