2014-05-14 4 views
8

버튼이있는 사이드 바를 사용하여 메뉴를 만들려고합니다. 각각의 버튼에는 관련 데이터가 포함 된 할당 된 팝업이 있습니다. 불행히도, popovers 중 하나가 임의의 수의 행을 포함 할 수 있으며 일부 경우 뷰포트 외부에있을 수도 있습니다.뷰포트 내부에서 부트 스트랩 팝 오버 유지

내가 프로그래밍 방식으로 정의 된 값으로 팝 오버의 상단을 바꿀 수 있다고 생각

(클릭 "작업"버튼) 문제의 예를 들어 http://jsfiddle.net/bfd9f/1/를 참조 할 때 (뷰포트 외부 즉,) 부정적이고이 작업을 수행하는 방법 , 나는 이미 show.bs.popover 이벤트를 듣는 동안 popover의 첫 번째 div에 대한 참조를 얻을 수있었습니다. 불행하게도, 아직 렌더링되지 않았기 때문에 크기가 (23, 107) 인 반면 (300, xxx)와 (0, 0)이어야합니다.

이 문제를 해결할 방법이 있습니까? 어쩌면 팝 오버가 먼저 그것을 측정하기 위해 오프 스크린으로 렌더링 될까요? 그렇다면 어떻게해야합니까? 그것이 미래의 CSS를 방해 할 수로

감사

답변

10

나는 믿습니다 http://jsfiddle.net/pkP77/1/

이미 그 생각 .. 불행히도 모든 popovers에 영향을 미칠 것 https://github.com/twbs/bootstrap/pull/12328

+0

정확히 내가 필요한 것입니다. 나는 3.2가 아직 없다고 생각한다. 나는 바이올린에서 j를 잡아야한다는 것을 의미합니까? – SirePi

+0

당신은 https://github.com/twbs/bootstrap/tree/master/dist/js에서 그것을 움켜 잡을 수 있습니다 – cvrebert

+0

지연을 위해 미안하지만 나는 바빴습니다; 링크 된 버전을 사용해 보았지만 요즘에는 $ (obj) .html()을 통해 콘텐츠를 $ (obj)로 직접 변경했기 때문에 몇 가지 문제가있었습니다. 무슨 일이 일어날 것인가는 처음 popover를 처음 접했을 때 닫히기 만하면 $ (obj)가 dom에서 지워지고 다시 표시 할 수 없게됩니다. 지금은 부트 스트랩 3.2에서 3.1.1로 일부 라인을 병합하여 관리하고 올바르게 작동하는 것으로 보입니다. 내가 바꾼 것을보고 싶니? – SirePi

3

당신은 항상

.popover { 
     width: 300px !important; 
     top: 0px !important; 
    } 

http://jsfiddle.net/smurphy/x9hnk/

변경이 최고의 장기 계획을하지 않을 수 있습니다 !important 를 사용하여 팝 오버의 top 값을 대체 할 수 있습니다

업데이트 :

이벤트가 중단됩니다. 이것은 유능한 것으로 보인다.

$('.btn-popover').on('shown.bs.popover', function (event) { 
    //Set timeout to wait for popup div to redraw(animation) 
    setTimeout(function(){ 
     if($('div.popover').css('top').charAt(0) === '-'){ 
      $('div.popover').css('top', '0px'); 
      var buttonTop = $(event.currentTarget).position().top; 
      var buttonHeight = $(event.currentTarget).height(); 
      $('.popover.left>.arrow').css('top', buttonTop + (buttonHeight/2)); 
     } 
    },100); 
}); 

http://jsfiddle.net/smurphy/e6YaY/2/

이이 버튼을 사용하여 화살표를 정렬합니다. 곧 부트 스트랩 v3.2.0에서 수정 enter image description here

+0

에 도입 된 새로운 viewport 기능의 의례 (을 참조하십시오 효과는 "사용자"버튼에 적용), 뷰포트 밖에서 어떻게 든 움직이는 것들만 변경하고 싶습니다. (하단에서도 같은 일이 일어날 수 있습니다. 사이드 바에 얼마나 많은 버튼이 있는지 모릅니다.) – SirePi

+0

이 답변을 본 적이 있습니까? http://stackoverflow.com/a/10937083/1217018 –

+0

예. 내가 뭔가를 놓친 경우를 대비해서 또 다른 읽기를 주었지만 여전히 내가 필요로하는 것이 아닙니다. 함수를 사용하는 경우에도 해당 함수는 해당 요소를 트리거하는 요소를 기준으로 도구 설명의 위치를 ​​지정하는 데 지원되는 값 중 하나만 반환 할 수 있습니다. 나에게는 선택의 여지가 없다. 그것은 남겨 두어야한다. – SirePi