평소처럼 IE (Internet Explorer)는 항상 문제를 일으 킵니다. 9보다 낮은 임의의 IE에서이 페이지를 열면 페이지의 모양이 그대로 유지됩니다..
Internet Explorer에서 새 요소를 인식하지 못하기 때문입니다 (섹션, 머리글, 등) 우리가 지정한 스타일을 적용 실패합니다. 따라서 다음 단계에서이 문제를 해결하기 위해 노력할 것입니다..
브라우저 지원 테스트
이전 게시물에서는이 polyfill을 사용하여 details 요소에 대한 브라우저 지원을 해결했습니다. 지원되지 않는 브라우저에서도 작동 할 수 있습니다. 그러나 이번에는 Modernizr과 다른 방식으로 시도 할 것입니다..
공식 웹 사이트에서, "Modernizr은 오픈 소스 자바 스크립트 라이브러리로서 차세대 HTML5 과 CSS3-전원이 공급되는 웹 사이트". 기술적으로 Modernizr은 특정 새로운 요소와 기능에 대한 브라우저 지원을 테스트합니다. 지원이 제공되지 않으면 우리는 다른 스타일을 제공하거나 제공하는 방식이든간에 대체해야합니다. 폴리 필. 이 경우 Modernizr을 사용하여 세부 정보 및 요약 요소를 테스트하는 데 도움을줍니다..
Modernizr로 이동하여 다운로드 페이지로 이동하십시오..
다운로드 페이지에서 Modernizr은 라이브러리 구성 옵션을 제공하므로 웹 사이트에 꼭 필요한 특정 기능 만 선택하면됩니다. 이 경우 다음이 필요합니다.
HTML5Shiv 3.4
CSS 클래스 추가하기, 이 기능은 html 태그에 클래스를 자동으로 삽입합니다..
그만큼 Modernizr.load,
커뮤니티 부가 기능 상자로 이동하여 엘름 - 세부 사항,
확장 성 섹션에서 다음을 선택합니다. Modernizr.addTest.
파일 생성 및 다운로드.
그것을 귀하의 HTML에 링크하고 Internet Explorer에서 페이지를 다시로드하십시오. 이제 Internet Explorer에서 태그를 인식 할 수 있으므로 페이지 스타일이 변경되었습니다..
그리고 소스 또는 inspect 요소를 보면 html 태그에 no-details 클래스가 삽입 된 것을 볼 수 있습니다. 브라우저가 우리가 페이지를 미리 볼 곳을 나타냅니다. 현재 세부 정보 요소를 지원하지 않습니다. @@@@ [이 문장을 이해할 수 없습니다. ]
그런 다음이 클래스를 후크로 사용하여 폴백을 만들 수 있습니다. 다음 단계에서 수행 할 것입니다..
폴백
이 단계에서 우리는 세부 다른 브라우저 (Chrome 제외)의 요소 기능 이전 게시물에서는이 스크립트를 사용하여이 단계가 자동으로 수행되었지만 이번에는 직접 작성합니다.
노트 : 이전 게시물의 내용을 조금만 검토하면됩니다. 세부 정보 요소는 현재 Chrome 브라우저에서만 지원됩니다..
먼저 CSS 작업을 시작해 보겠습니다..
요약 태그에서 커서 모드를 포인터로 변경하여 사용자가 클릭 가능하다는 것을 알게됩니다.
요약 커서 : 포인터; 글꼴 크기 : 12pt; 윤곽선 : 0;
세부 정보 요소의 위쪽과 아래쪽에 여백을두고 더 많은 공백을 지정하려면.
세부 정보 (여백 : 20px 0px;
기본적으로 요약 태그에는 화살표가 있습니다. 하지만 여기서 우리는 플러스 마이너스 아이콘으로 대체하고 싶습니다..
노트 : 진행하기 전에, 나는 이전에 Fugue가이 컬렉션의 아이콘을 다운로드하고 하나의 파일로 다운로드하여 스프라이트로 만들었습니다..
before 가상 엘레멘트를 추가하고 아이콘을 배경으로 붙이자. 이 시점에서 배경 위치는 상단에 있으며 더하기 아이콘이 표시됩니다.
세부 정보> 요약 : before width : 16px; 높이 : 16px; 디스플레이 : 인라인 블록; content : "중요! 배경 : url ( '... /https://assets.hongkiat.com/uploads/html5-single-product-page/plus-min.png') no-repeat 중심 위쪽, margin-right : 5px; 위치 : 상대적; 상단 : 2 픽셀;
그런 다음 세부 정보 요소가 열리면 배경 위치가 아래쪽으로 이동하여 빼기 아이콘이 표시됩니다..
세부 사항 [열기]> 요약 : before, details.open> 요약 : before background : url ( '... /https://assets.hongkiat.com/uploads/html5-single-product-page/plus-min.png' ) no-repeat 중앙 하단;
그만큼 [열다] sign은 선택 자입니다. 이 경우, 지원하는 브라우저에서 상세 오픈 속성을 선택합니다.
마지막으로 Chrome에 기본적으로 표시되는 화살표를 숨겨야합니다..
세부 정보> 요약 :: - webkit-details-marker display : none;
그런 다음 잠시 브라우저에서 결과를 봅시다..
이제 기본 화살표가 아이콘으로 대체되었으며 Chrome에서이 화살표를 클릭하면 이미 토글 효과가 나타납니다. 그에 따라 아이콘이 변경됩니다. 그러나 다른 브라우저에서는 아무 것도 일어나지 않을 것입니다. 따라서 다음 단계에서는 jQuery로이 효과를 복제하려고 시도 할 것입니다..
jQuery를 사용한 토글 효과
jQuery 파트를 시작하기 전에 이언 데블린에게 영감을 주신 데 대해 감사 드리며 아래 스크립트는 실제로.
좋아, 요약 태그를 저장할 변수를 만들어 보자..
var summary = $ ( 'details summary');
그런 다음 요약의 모든 형제 요소를 div.
summary.siblings (). wrapAll ( '');
details 요소에 열린 클래스가없는 경우 div를 숨 깁니다..
$ ( 'details : not (open) summary'). 형제 ( 'div'). 숨기기 ();