내가 enquire.js를 디자인했을 때 모바일 용 RWD와 함께 사용하도록되어있었습니다. 따라서 진보적 인 개선 접근법을 취하고 있다고 가정합니다. 즉, 쿼리가 일치 할 때 match가 호출되고 이미 한 번 일치가 발생하고 쿼리가 더 이상 일치하지 않는 경우에만 unmatch가 호출됩니다. 이것은 이상하게 보일 수 있지만 일반적인 사용 사례는 "이 쿼리가 일치 할 때 뭔가를 수행하고 더 이상 일치하지 않을 때 실행 취소합니다"입니다. 예는 큰 화면에 탭 영역에 요소를 변환하고, 그렇지 않으면 스택 요소에 반환 될 수 있습니다 쿼리가 일치하지 않는 경우
UNMATCH가 처음 호출 된 경우
enquire.register(desktopMediaQuery, {
match : function() {
makeTabs(someElement);
},
unmatch : function() {
makeStacked(someElement);
}
};
는, 다음 넣어야 할 것 match가 이미 발생했는지 (또는 악화되었지만, makeStacked
에 그런 논리가 있는지) 확인하기 위해 일치하지 않는 콜백의 논리. 우리는 엄격하게 예에서, 점진적 개선을 따라한다면
은, 난 그냥 CSS에서 기본적으로 파란색 배경을 가지고 있고, 경기에 클래스를 추가하고 UNMATCH에서 클래스를 제거하는 것입니다 :
enquire.register("screen and (max-width: 640px)", {
match: function() {
$("body").addClass("red-bg");
},
unmatch: function() {
$("body").removeClass("red-bg");
}
});
귀하의 예가 실제로 원하는 것의 단순화 된 버전이라고 가정합니다. 이 더 나은 정장 당신이해야 할 일을하는 경우 또한, 두 개의 미디어 쿼리를 사용할 수
enquire.register("(max-width: 640px)", {
setup : function() {
$("body").css("background","blue");
},
match : function() {
$("body").css("background","red");
},
unmatch : function() {
$("body").css("background","blue");
}
});
: 그래서 다른 방법은 기본 케이스를 충당하기 위해 설정 콜백을 사용하는 것입니다. 위와 같이 설치 프로그램을 사용하는 것보다 더 나은 의도라고 생각합니다.
enquire.register("(max-width: 640px)", {
match : function() {
$("body").css("background","red");
}
})
.register("(min-width: 641px)", {
match : function() {
$("body").css("background","blue");
}
});
여기 두 접근 보여주는 바이올린의 (미디어 쿼리가 검출되지 않고) http://jsfiddle.net/7Pd3m/가
그것은 참으로 (많이) 단순화 된 사건 (자신의 문서 http://wicky.nillia.ms/enquire.js/#quick-start에서 참조). 나는 Inquire를 Masonry와 Stellar와 함께 작동 시키려고 노력하고있다. 나는 마지막 해결책을 참았다. 그것은 내가하고 있었던 것에 대한 더 나은 개요를 유지했습니다. 하지만 적어도 지금은 왜 enquire.js 그것이 어떻게 작동하는지 이해합니다. 고마워요! 마지막으로 약간 흥미로운 주제 : Enquire.js는 CSS 미디어 쿼리와 동일한 방식으로 스크롤바를 고려합니까? 나는 그것을 테스트하지 않았지만 CSS 나 Inquire에 포함되거나 포함되지 않은 스크롤 막대의 너비에 기인 한 일부 동작이 발생했습니다. –
@WickyNilliams, 마지막 예제처럼 내 문제를 정렬하려고했지만 다소 발생하지 않습니다 .http : // stackoverflow.com/q/38168744/3697102 – Ayan
@WickyNilliams 여기서 또 다른 enquire.js를 사용하는 사용자입니다. 그러나, 나는 거의 1 시간 반 동안 내가 뭘 잘못했는지 알아 내려고 노력했다. 나는 같은 문제를 겪고 있었다. 내가 당신의 대답을 읽은 후에 내가 왜 이렇게 만들었는지 완전히 이해하고 있지만 데모 페이지에서 코드 스 니펫 'Unmatch'에 대한 작은 노트를 작성하고 첫 번째로 'unmatch'를로드하면 작동하지 않는다고 제안합니다. 그런 식으로 :)). 그것은 많은 두통을 방지 할 것입니다 :)이 멋진 도구를 주셔서 감사합니다! – viery365