이것은 자바 스크립트를 사용하여 뷰포트를 감지 할 수있는 JS 클래스입니다. 엄격한 테스트를 거치지 않았지만 작동합니다.
function ResJS(){
this.min = 0;
this.max = 0;
this.config = config;
this.width = function(){
return jQuery(window).width();
}
this.breakpoint = function(min,max){
this.min = min;
this.max = max;
this.outside = false;
this.inside = false;
this.triggeredOut = false;
this.triggeredIn = false;
this.enter = function(callback){
var context = this;
jQuery(window).on('resize',function(){
if(context.min<context.width()&&context.max>context.width()){
if(!context.triggeredIn){
jQuery(document).ready(function(){callback(context.min,context.max)});
context.inside = true; //browser width has entered breakpoint
context.outside = false; //browser has left another breakpoint
context.triggeredIn = true; //triggered event for breakpoint
context.triggeredOut = false; //be ready to trigger leave event
}
}else{
context.inside = false; //browser width is not within breakpoint
context.outside = true; //brower width is outside of breakpoint
}
});
if(context.min<context.width()&&context.max>context.width()){
jQuery(document).ready(function(){callback(context.min,context.max)});
context.inside = true;
context.outside = false;
context.triggeredIn = true;
context.triggeredOut = false;
}else{
context.inside = false;
context.outside = true;
context.triggeredOut = true;
context.triggeredIn = false;
}
return this;
}
this.leave = function(callback){
var context = this;
jQuery(window).on('resize',function(){
if(context.outside&&!context.triggeredOut){
jQuery(document).ready(function(){callback(context.min,context.max)});
context.triggeredIn = false;
context.triggeredOut = true;
}
});
return this;
}
return this;
}
return this;
}
기본적으로 당신은 이것을 이렇게 사용합니다
ResJS()
.breakpoint(0,600)
.enter(function(min,max){
console.log(min,max,'enter');
})
.leave(function(min,max){
console.log(min,max,'leave');
});
Breakpoint에는 너비에 대한 최소 / 최대 매개 변수가 있고, JS 코드를 실행하기위한 콜백과 함께 너비를 입력하고 떠나는 체인 함수가 있습니다.
나는 오래 전에 그것을 만들었으므로 어떻게 작동하는지 자세히 설명 할 수는 없지만 도움이된다면 자유롭게 사용할 수 있습니다. 뷰포트를 기반으로 아약스를 통해 모듈을로드하는 데 사용할 수 있습니다. joomla의 com_ajax를 이것과 함께 사용하여 정말 멋진 기능을 만들 수 있다고 생각합니다.