브라우저가 CSS 속성 디스플레이 인 인라인 블록을 지원하는지 어떻게 감지 할 수 있습니까?검색 브라우저 지원 디스플레이 : 인라인 블록
답변
Javascript의 객체 나 기능과 관련이없는 순수한 CSS 속성이므로 Javascript로이를 감지 할 수있는 방법이 없습니다. 가장 좋은 점은 here을 사용하여 호환성 목록을 확인하고 CSS를 사용하여 해결 방법을 만드는 것입니다.
QuirksMode charts에 따르면, inline-block
를 지원하지 않는 유일한 주류 브라우저는 IE6, 7 (글쎄, 그들은하지만 inline
의 기본 display
유형이 요소에 대해, 그것을 지원합니다.) 난 그냥 생각 것이 지원됩니다 conditional comments을 통해 IE6/7에 대한 대안을 적용하십시오.
(참고 :. 내가 inline-block
에 대한 지원의 파이어 폭스 2의 부족을 무시하고 FF3로 업그레이드 한 사용자의 대부분을 가정하지만, 간단한 인터넷 검색은 그를 백업 할 수있는 숫자를 발굴하지 않은거야 YMMV.)
그러나 자바 스크립트에서 지원을 결정하는 것이 유일한 옵션 인 경우 사용자 에이전트 스니핑으로 돌아 가야합니다. YUI library의 YAHOO.env.ua 클래스는 복사하여 사용할 수있는 편리한 코드입니다. (BSD 라이선스가 있고, YUI 라이브러리의 다른 부분에 의존하지 않으며, 코멘트가없는 약 25-30 행에 불과합니다.)
그냥 내 웹 사이트의 통계를 확인하고 대부분의 FF 사용자가 FF 3으로 업그레이드했다는 가정을 뒷받침하는 것 같습니다. 그리고 IMO는 어쨌든 미래를 위해 설계하는 것이 좋습니다. –
글쎄, 다음은 순전히 bavhiour를 검사하여 할 수있는 일입니다. 사용자 에이전트 스니핑 대신 자바 스크립트가있는 브라우저 :
테스트 시나리오 및 제어 시나리오를 설정합니다. 말하자면, 다음과 같은 구조 :
- 사업부
- 사업부/내용 "테스트"w
- 사업부/내용 "TEST2"
삽입 한 사본에 w 두 개의 내부 div가 인라인 블록으로 설정된 문서를 만들고 두 개의 내부 div가 차단되도록 설정하여 문서에 다른 사본을 삽입하십시오. 브라우저가 인라인 블록을 지원하면 포함 div의 높이가 달라집니다.
대체 대답은 :
당신은 또한 브라우저가 지정된 요소의 CSS를 치료하는 방법을 볼 수 getComputedStyle를 사용할 수 있습니다. 따라서 이론적으로 "display : inline-block"요소를 추가 한 다음 computedStyle을 확인하여 그것이 살아남은 지 확인하십시오. 유일한 문제 : IE는 getComputedStyle을 지원하지 않습니다. 대신 currentStyle을 사용합니다. 나는 currentStyle이 똑같이 기능하는지 알지 못한다. (아마도 그것은 우리가 원하는 행동과 유사하게 기능한다 : "잘못된"값 무시).
덧붙여서 : CSS만으로 IE6 +, FF2 +, Opera 및 WebKit에서 크로스 브라우저 인라인 블록을 구현하려면 a neat way이 있습니다. CSS는 유효하지만 CSS는 아직 없습니다.
Christopher Swasey은 정확합니다.
나는 기술의 jsFiddle 데모를 http://ajh.us/test-inline-block에 설정했습니다.
코드
은 본질적으로 :var div = document.createElement('div');
div.style.cssText = 'display:inline-block';
// need to do this or else document.defaultView doesn't know about it
$('body').append(div);
// that was jQuery. It’s possible to do without, naturally
var results = false;
if (div.currentStyle) {
results = (div.currentStyle['display'] === 'inline-block');
} else if (window.getComputedStyle) {
results = document.defaultView.getComputedStyle(div,null).getPropertyValue('display')=== 'inline-block';
}
//clean up
$(div).remove();
alert('display: inline-block support: '+results);
이 동일한 기술은 또한 display: run-in
지원을 검출 작동 유의하시기 바랍니다.
이 기술을 사용하면, IE 6과 7 머신은 실제로'div'에''inline-block '을 지원한다고 말합니다. – bdukes
- 1. 웹킷 디스플레이 : 인라인 블록 일관성없는 동작
- 2. 디스플레이 : 인라인 블록; divs behaving erratically
- 3. 인라인 블록 문제
- 4. "언제 디스플레이 사용 : 블록 : 인라인 및 언제 : 인라인 블록"에 대한 가이드가 있으며 이유는 무엇입니까?
- 5. slideToggle 디스플레이 추가 문제 : 블록
- 6. 스팬의 인라인 블록
- 7. 레일 - 디스플레이 양식 인라인
- 8. 디스플레이 : 인라인; 겹쳐서?
- 9. 디스플레이 : 인라인 테이블
- 10. jquery 부착 디스플레이 : 블록
- 11. 디스플레이 : 블록 탐색 정렬
- 12. XSLT 템플릿. 블록/인라인
- 13. 인라인 코드 블록 : 이미지
- 14. 인라인 블록 CSS
- 15. CSS 인라인 영역 크로스 브라우저
- 16. 브라우저 성능 디스플레이/가시성
- 17. IIS 7 디스플레이 문제 : 인라인?
- 18. 총수 : 디스플레이 내의 절대 인라인
- 19. 인라인 블록 요소가 예상대로 표시되지 않습니다.
- 20. SSL 브라우저 지원 감지
- 21. Android iFrame 브라우저 지원
- 22. 크로스 브라우저 지원 질문
- 23. CSS 브라우저 지원 차트
- 24. PNG에 대한 브라우저 지원
- 25. 브라우저 지원 PNG 투명도
- 26. 모바일 브라우저 VoiceXML 지원
- 27. document.fileSize 브라우저 지원
- 28. Chrome의 jQuery가 "인라인"대신 "블록"을 반환합니다.
- 29. 너비가 100 % 인 인라인 블록 열
- 30. PHP와 IE 브라우저 디스플레이 문제
@ Alan H .: 안녕! 나는 너를 모른다. 그러나 나는 나의 대답에 대한 너의 건설적인 비판에 감사한다! 또한이 질문에 대한 귀하의 답변을 기다리고 있습니다. 너는 우리에게 길을 보여줄거야, 그렇지? :) –
http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting 사실, Christopher Swasey는 아래의 답변에서 JS로이를 감지하는 방법을 제공합니다. 그리고 적어도 Alan H.은 그가 대답 한 문제라고 생각하는 것을 적었습니다. 나는 그 사치가없는 늙은 대답에 대한 하향 투표를 받는다. – Boldewyn
@ Boldewyn : 링크 된 기사와 아래의 Christopher Swasey의 답변이 모두 해결 방법이라고 생각합니다 (* 좋은 * 해결 방법이지만 해결 방법은 있습니다). 나는 여전히 특정 CSS 기능에 대한 브라우저 지원을 감지하는 "깨끗한"방법이 없다고 생각합니다. 또한 나는 Alan의 의견을 사치라고 거의 부르지 않을 것이다. :) –