"절대 위치가 지정된 div가 컨테이너 div 밖으로 나갈 것인가"에 따라 스크립트를 사용해야하는 것처럼 들리지만 IE는 CSS 표현을 지원하지만 크로스 브라우저 솔루션을 사용한 것 같습니다. 그것은이
function isOverflow(parent, child){
var left = 0;
var op = child;
while(op && op != parent){
left += op.offsetLeft;
op = op.offsetParent;
}
return ((left + child.offsetWidth) > parent.offsetWidth);
}
function getHoverHandler(parent, child){
return function(){
if(isOverflow(parent, child)){
child.style.marginLeft = 'auto';
child.style.right = '0px';
child.style.left = '';
}
}
}
function attach(o,e,f){
if(o.addEventListener){
o.addEventListener(e, f, false);
}else if(o.attachEvent){
o.attachEvent('on'+e,f);
}
}
var yellowElement = document.getElementsByTagName('UL')[0];
var list= document.getElementsByTagName('LI');
for(var i = 0; i < list.length; i++){
var element = list[i];
var tip = element.getElementsByTagName('DIV')[0];
attach(element, 'mouseover', getHoverHandler(yellowElement,tip));
}
시도 위치 : relative – AmGates
내 말은 쉬운 예입니다. 브라우저에서 마우스 오른쪽 버튼을 클릭하면 오른쪽의 메뉴 위치를 볼 수 있습니다. 클릭 한 위치의 오른쪽에있는 메뉴 위치를 볼 수 있습니다. 페이지가 아닌 페이지 외부로 이동하는 대신 내부에 남아있어 여전히 볼 수 있습니다. –
먼저 @DylanCross는 컨텍스트 메뉴의 내장 알고리즘입니다. 이와 같은 일을하기 위해서는 div의 offsetWidth offsetHeight와 마우스의 위치와 클라이언트의 너비와 높이 사이의 수식을 만들어야합니다. 그런 다음 마우스의 현재 위치의 오른쪽 위 또는 아래 왼쪽에 충분한 공간이 있는지 계산 한 후 위치 고정을 설정하십시오. – khael