저는 iPhone/iPod에서 Safari를 대상으로하는 오프라인 웹 앱을 개발 중입니다. 주로 재미를 위해서뿐만 아니라 jQuery 이벤트 바인딩에 대한 의존성을 줄이기위한 방법으로 (그리고 UI 반응성을 높이기 위해) 기본적인 표시/숨기기 기능으로 CSS3을 사용하려고 시도했습니다.CSS3 만 사용하여 요소 표시/숨기기 - 왜 작동하지 않습니까?
다음 코드는 파이어 폭스 3.6.3에서가 아니라 최신 사파리에서 데스크톱과 모바일 모두에서 작동하는 간단한 예입니다 :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<style type="text/css">
input:not(:checked) ~ select { display: none; }
input:checked ~ select { display: inline; }
</style>
</head>
<body>
<input type="checkbox" id="cb" /> <label for="cb">Toggle select</label>
<select id="sel"><option value="">Select Box</option></select>
</body>
</html>
난 정말이 일 것으로 예상되지
, 그러나 나는이었다 적어도 파이어 폭스에서는 그렇다는 것을 알게되었다. Safari에서 작동하지 않는 이유는 무엇입니까? 웹 페이지에있는 <select>
은 처음에는 숨겨져 있습니다. 올바른 것이고 웹 관리자는 체크 박스를 클릭 할 때마다 적절한 표시 값이 설정되지만 요소가 표시되지 않는다고 알려줍니다.
<label>
태그 안에 <a href="#sel>
태그로 된 텍스트를 감싸고 select:target { display: inline; }
규칙을 사용하여 비슷한 성공적인 실험을했는데, 그것이 궁극적으로 원하는 동작이 아닙니다.
너무 많이 도달합니까? 이런 종류의 것들이 자바 스크립트에 가장 좋은가요?
나는 이것이 당신이 js에서 쉽게 할 수있는 일을하기 위해 열심히 노력하고 있다고 말하고 싶습니다. UI 반응성 이득은 아마도 이런 종류의 일을 적절하게 작동 시키려고 노력하는 당신의 정신을 보장하기에 충분하지 않을 것입니다. 시간, 특히 당신이 더 복잡한 것을 얻는 것을 시도하는 경우에 : D – Jeriko