Làm cách nào để loại bỏ độ bóng trên một phần tử được chọn trong Safari trên Mac?


112

Trên máy Mac và thiết bị iOS, trong Safari, một <select>phần tử có màu nền sẽ tự tạo độ bóng. Điều này dường như không xảy ra trong các hệ điều hành khác.

Ví dụ: tôi có một phần tử chọn với các thuộc tính kiểu này:

select {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
padding: 3px 6px;
margin: 10px 0 7px;
width: 250px;
background-color: #BD2786;
color: white;
letter-spacing: -.04em;
font-weight: bold;
border: 0;
}

Và phần tử của tôi có màu nền mà tôi muốn, nhưng độ bóng vẫn còn đó. Có ai biết làm thế nào để làm cho nó một màu phẳng?

Câu trả lời:


194

@beanland; Bạn phải viết

-webkit-appearance:none;

trong css của bạn.

đọc http://trentwalton.com/2010/07/14/css-webkit-appearance/ này


4
không cần nhờ vì có rất nhiều thứ mà tôi không biết :)
sandeep

123
Có cách nào để giữ cho mũi tên ở bên phải không? Tôi chỉ muốn ghi đè màu. Cảm ơn bạn
Marc

19
@sandeep: Và để làm cho nó qua các trình duyệt:-moz-appearance: none; -webkit-appearance: none; appearance: none;
Dorian

6
@Marc Nếu sau 3 năm bạn vẫn quan tâm .. Tôi đã thêm một giải pháp mà tôi tìm thấy để làm cho các mũi tên hiển thị.
alicjasalamon

2
Giải pháp cho IE là sử dụng select :: - ms-expand {display: none; } để ẩn biểu tượng thả xuống hộp chọn gốc của IE, sau đó sử dụng hình ảnh png thực tế làm nền cho biểu tượng mới. Sự cố xảy ra vì hình ảnh SVG không phải lúc nào cũng được định vị đúng thông qua CSS trong IE.
Phyllis Sutherland

106

Việc sử dụng -webkit-appearance:none;cũng sẽ xóa các mũi tên chỉ ra rằng đây là một danh sách thả xuống.

Xem đoạn mã này làm cho nó hoạt động trên các trình duyệt khác nhau và thêm các mũi tên tùy chỉnh mà không bao gồm bất kỳ tệp hình ảnh nào:

select{
	background: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6IzQ0NDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmFycm93czwvdGl0bGU+PHJlY3QgY2xhc3M9ImNscy0xIiB3aWR0aD0iNC45NSIgaGVpZ2h0PSIxMCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxLjQxIDQuNjcgMi40OCAzLjE4IDMuNTQgNC42NyAxLjQxIDQuNjciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMy41NCA1LjMzIDIuNDggNi44MiAxLjQxIDUuMzMgMy41NCA1LjMzIi8+PC9zdmc+) no-repeat 95% 50%;
	-moz-appearance: none; 
	-webkit-appearance: none; 
	appearance: none;
    /* and then whatever styles you want*/
	height: 30px; 
	width: 100px;
	padding: 5px;
}
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>


16
ngọt ngào, đánh giá cao việc sửa chữa mũi tên! đây là một phiên bản với nền trong suốt: chọn {background: url (data: image / svg + xml; base64, PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU + LmNscy0ye2ZpbGw6IzQ0NDt9PC9zdHlsZT48L2RlZnM + PHRpdGxlPmFycm93czwvdGl0bGU + PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEuNDEgNC42NyAyLjQ4IDMuMTggMy41NCA0LjY3IDEuNDEgNC42NyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIzLjU0IDUuMzMgMi40OCA2LjgyIDEuNDEgNS4zMyAzLjU0IDUuMzMiLz48L3N2Zz4 =) no-repeat 95% 50%; }
Ingo Renner

1
làm một mũi tên trong suốt (không thể dán ở đây do chiều dài): pastebin.com/HQ0x4Rka
recensione

5
Nếu bạn có nhiều phần tử được lựa chọn, điều này sẽ trông hơi lệch. Để khắc phục, bạn có thể sử dụng hiệu số cạnh vị trí nền của CSS3 để căn chỉnh nền tốt hơn. Vì vậy, hãy thay thế no-repeat 95% 50%bằngno-repeat right 2px center
iSWORD

3
Các mũi tên giống nhau nhưng có màu trắng và trong suốt pastebin.com/07iS41b5
Andreas Gassmann

2
Tôi nhận thấy các mũi tên được thêm vào bao gồm cả mũi tên lên / xuống - bất kỳ sửa chữa nhanh nào chỉ để hiển thị mũi tên xuống thông thường?
Brett

14

Phiên bản 2019

URL hình ảnh nội tuyến ngắn hơn, chỉ hiển thị mũi tên xuống, màu mũi tên có thể tùy chỉnh ...

Từ https://codepen.io/jonmircha/pen/PEvqPa

Tác giả có lẽ là Jonathan MirCha

select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%238C98F2'><polygon points='0,0 100,0 50,50'/></svg>") no-repeat;
  background-size: 12px;
  background-position: calc(100% - 20px) center;
  background-repeat: no-repeat;
  background-color: #efefef;
}

1
Các background-colorbất động sản áp dụng đối với nền của yếu tố lựa chọn. Để thay đổi màu của mũi tên xuống, bạn cần thay đổi thuộc tính điền SVG trong URL, ví dụfill='%23fc0000'
Noel Abrahams

Tốt hơn nên sử dụng background-position mà không có calc: background-position: right .8em top 60%; và một số con trỏ: là cần thiết
Iggy

Có một phiên bản mũi tên kép nào đó mà ai đó có thể chứng minh không?
evolross

3

Xin lỗi để chồng lên một mục cũ. Tôi đã tìm thấy một phần câu trả lời cho câu hỏi của mình ở đây nhưng phải làm một số việc nên tôi muốn chia sẻ kết quả của mình cho người tiếp theo.

Tôi đã kết thúc bằng cách tiếp cận tương tự như các cộng tác viên khác, nhưng với một vài chỉnh sửa để khắc phục sự cố sau

  1. Văn bản dài che các mũi tên trong các giải pháp khác
  2. Hình ảnh được sử dụng là một mũi tên kết hợp lên / xuống hơi cũ và xấu xí.

Dưới đây sẽ cung cấp cho bạn một giải pháp làm việc với các vấn đề trên được khắc phục. Lưu ý: Tôi đã sử dụng mũi tên trắng cho trường hợp sử dụng của mình, bạn có thể cần thay đổi màu của mũi tên cho trường hợp của mình.

đây là bản xem trước:

chọn bằng mũi tên trắng

select{    
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiICAgaWQ9IkxheWVyXzEiICAgZGF0YS1uYW1lPSJMYXllciAxIiAgIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIiAgIHZlcnNpb249IjEuMSIgICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkxIHIxMzcyNSIgICBzb2RpcG9kaTpkb2NuYW1lPSJkb3dubG9hZC5zdmciPiAgPG1ldGFkYXRhICAgICBpZD0ibWV0YWRhdGE0MjAyIj4gICAgPHJkZjpSREY+ICAgICAgPGNjOldvcmsgICAgICAgICByZGY6YWJvdXQ9IiI+ICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4gICAgICAgIDxkYzp0eXBlICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPiAgICAgIDwvY2M6V29yaz4gICAgPC9yZGY6UkRGPiAgPC9tZXRhZGF0YT4gIDxzb2RpcG9kaTpuYW1lZHZpZXcgICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiAgICAgYm9yZGVyb3BhY2l0eT0iMSIgICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiICAgICBncmlkdG9sZXJhbmNlPSIxMCIgICAgIGd1aWRldG9sZXJhbmNlPSIxMCIgICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIgICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIgICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMjciICAgICBpZD0ibmFtZWR2aWV3NDIwMCIgICAgIHNob3dncmlkPSJmYWxzZSIgICAgIGlua3NjYXBlOnpvb209Ijg0LjMiICAgICBpbmtzY2FwZTpjeD0iMi40NzQ5OTk5IiAgICAgaW5rc2NhcGU6Y3k9IjUiICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTkyMCIgICAgIGlua3NjYXBlOndpbmRvdy15PSIyNyIgICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJMYXllcl8xIiAvPiAgPGRlZnMgICAgIGlkPSJkZWZzNDE5MCI+ICAgIDxzdHlsZSAgICAgICBpZD0ic3R5bGU0MTkyIj4uY2xzLTJ7ZmlsbDojNDQ0O308L3N0eWxlPiAgPC9kZWZzPiAgPHRpdGxlICAgICBpZD0idGl0bGU0MTk0Ij5hcnJvd3M8L3RpdGxlPiAgPHBvbHlnb24gICAgIGNsYXNzPSJjbHMtMiIgICAgIHBvaW50cz0iMy41NCA1LjMzIDIuNDggNi44MiAxLjQxIDUuMzMgMy41NCA1LjMzIiAgICAgaWQ9InBvbHlnb240MTk4IiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MSIgLz48L3N2Zz4=) no-repeat 101% 50%;
  padding-right:20px;
}

//, Bạn có vui lòng giải thích cách làm và tại sao điều đó loại bỏ độ bóng không?
Nathan Basanese

1
Giải pháp về cơ bản có hai thành phần: 1. Yêu cầu trình duyệt không thực hiện bất kỳ kiểu / hiển thị nào trên phần tử. 2. Cung cấp một phong cách hợp lý. Trong các trình duyệt không quá tệ (đọc, không phải safari), kiểu phần tử do trình duyệt cung cấp là tốt. Tuy nhiên, trong safari, phong cách trình duyệt cung cấp thật kinh tởm và khủng khiếp. Do đó, chúng tôi phải ghi đè trình duyệt được cung cấp hiển thị trong mọi trình duyệt. Các dòng kết thúc bằng hình thức: không có phần 1 từ phía trên. Các dòng khác giải quyết phần 2. Điều đó có giúp ích gì không?
Justin Edwards


0

Như đã đề cập nhiều lần ở đây

-webkit-appearance:none;

cũng loại bỏ các mũi tên không phải là điều bạn muốn trong hầu hết các trường hợp.

Một cách giải quyết dễ dàng mà tôi tìm thấy là chỉ cần sử dụng select2 thay vì select. Bạn cũng có thể tạo kiểu lại cho phần tử select2 và quan trọng nhất là select2 trông giống nhau trên Windows, Android, iOS và Mac.


-8

Nếu bạn kiểm tra Biểu định kiểu tác nhân người dùng của Chome, bạn sẽ thấy

outline: -webkit-focus-ring-color auto 5px;

trong ngắn hạn thuộc tính phác thảo của nó - hãy biến nó thành Không có

điều đó sẽ loại bỏ ánh sáng


8
Anh ấy không hỏi về đường viền, mà là nền bóng.
Apollo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.