웹킷(Safari)에서 광택 선택을 수정하는 방법
크로스 브라우저 호환성 문제: Safari에서 HTML <select>
요소 스타일링
다양한 브라우저 엔진에서 일관된 애플리케이션 동작을 유지하는 것은 어려울 수 있습니다. 최근 의도적으로 UI 프레임워크를 피하고 기본 HTML 요소에 크게 의존하는 프로젝트인 devpad를 개발하는 동안 Safari의 <select>
요소와 관련된 특이한 문제에 직면했습니다.
처음에는 Arc(Chromium 기반 브라우저)를 사용하여 원활하게 개발이 진행되었습니다. 그러나 Safari에서 테스트한 결과 예상치 못한 시각적 불일치가 발견되었습니다.
이 이미지는 Chromium과 Safari에서 렌더링된 <select>
요소 간의 놀라운 차이점을 보여줍니다.
Safari 렌더링은 Chromium의 깔끔한 모습과 달리 낡고 윤기나는 모습을 보여주었습니다. Stack Overflow와 ChatGPT에 대한 광범위한 연구 끝에 마침내 해결책을 찾았습니다.
일반적인 스택 오버플로 제안은 -webkit-appearance: none;
을 사용하는 것입니다. 그러나 이로 인해 드롭다운 화살표 표시기가 제거되어 사용자 경험에 영향을 미칩니다.
나중에 언급되는 더 유망한 접근 방식은 SVG 배경 이미지를 사용하는 것입니다. 배경색을 적용할 때도 이 작업이 까다로웠습니다.
Lucide.dev 아이콘을 활용하여 SVG 화살표를 통합했습니다. 그러나 처음에는 CSS 변수를 통한 동적 색상 변경이 실패했습니다. @media
요소 내의 select
쿼리도 효과적이지 않은 것으로 나타났습니다.
select { -webkit-appearance: none; -moz-appearance: none; appearance: none; background: url('data:image/svg+xml;utf8,<svg fill="none" height="24" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M6 9 12 15 18 9"></path></svg>') no-repeat; /* ...rest of the CSS... */ }
ChatGPT 덕분에 솔루션은 SVG 문자열을 URL 인코딩하는 것과 관련되었습니다.
select { -webkit-appearance: none; -moz-appearance: none; appearance: none; background: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2224%22%20height=%2224%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M6%209%2012%2015%2018%209%22/%3E%3C/svg%3E') no-repeat; background-size: 18px; background-position: calc(100% - 3px) 50%; background-repeat: no-repeat; background-color: var(--input-background); padding-right: 24px; } @media (prefers-color-scheme: dark) { select { background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2224%22%20height=%2224%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22white%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M6%209%2012%2015%2018%209%22/%3E%3C/svg%3E') !important; } }
최종 결과: 일관되고 브라우저 간 호환 가능한 <select>
요소와 어두운/밝은 모드 지원
이 솔루션을 사용하면 브라우저 간 스타일링 문제를 해결하는 데 있어 다른 사람들의 시간과 노력을 절약할 수 있습니다. devpad 프로젝트에 대한 자세한 내용은 제 최신 블로그 포스팅을 참고해주세요.
위 내용은 웹킷(Safari)에서 광택 선택을 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

이번 주에 플랫폼 뉴스 라운드 업 RONDUP, Chrome은로드에 대한 새로운 속성, 웹 개발자를위한 접근성 사양 및 BBC Move를 소개합니다.

이것은 처음으로 HTML 요소를보고 있습니다. 나는 그것을 잠시 동안 알고 있었지만 아직 스핀을 위해 그것을 가져 갔다. 그것은 꽤 시원하고 있습니다

구매 또는 빌드는 기술 분야의 고전적인 논쟁입니다. 신용 카드 청구서에 라인 항목이 없기 때문에 물건을 구축하는 것이 저렴할 수 있지만

이번 주에 타이포그래피를 검사하기위한 편리한 북마크 인 Roundup, JavaScript 모듈과 Facebook의 Facebook 등을 어떻게 가져 오는지 땜질하기 위해 대기하는 편리한 북마크 인 Roundup과 Facebook의

CSS 및 JavaScript (및 이미지 및 글꼴 등)와 같은 자산에 멀리 떨어진 캐시 헤더를 설정해야합니다. 브라우저를 알려줍니다

한동안 iTunes는 팟 캐스팅에서 큰 개 였으므로 "Podcast 구독"을 링크 한 경우 다음과 같습니다.
