페이지 콘텐츠 위에 div 플로팅


81

검색 옵션을 동적으로 표시하는 팝업 상자를 구현했습니다. 상자가 모든 사이트 콘텐츠 위에 "부동"하기를 원합니다. 현재 상자가 표시되면 그 아래에있는 모든 콘텐츠가 표시되지 않고보기에 좋지 않습니다.

이미 상자 div의 Z- 색인을 나머지 페이지 콘텐츠보다 높게 설정하려고 시도했지만 여전히 운이 없습니다.


2
Google "lightbox"를 사용하여 이러한 접근 방식이 의도 한 효과를 제공하는지 확인할 수 있습니다.
DOK

3
질문의 URL은 404를 제공합니다
Bryan Oakley

답변:


111

절대 위치 지정 을 사용하려고합니다 .

절대 위치 요소는 정적 위치가 아닌 첫 번째 상위 요소를 기준으로 배치됩니다. 그러한 요소가 없으면 포함하는 블록은 html입니다.

예 :

.yourDiv{
  position:absolute;
  top: 123px;
}

작동하려면 부모가 상대적이어야합니다 ( position:relative).

귀하의 경우 이것은 트릭을 수행해야합니다.

.suggestionsBox{position:absolute; top:40px;}
#specific_locations_add{position:relative;}

2
@MrBoJangles가 귀하의 링크를 사용하기 위해 답변을 업데이트했습니다. 답은 4 살, 다른 시간이었습니다 ^^
marcgg 2014-01-29

1
몇 가지 참고 사항 : 상단 및 / 또는 왼쪽 좌표를 지정해야합니다. 그렇지 않으면 작동하지 않는 것 같습니다. 또한 div가 "화면에 표시"되기를 원하는 경우 때때로 웹 페이지가 현재 왼쪽 상단에 항상 "0,0"이 표시되지 않는 경우 (그 것처럼 보이지만) stackoverflow.com/q/에서 확인할 수 있습니다. 3464876/32453 . 주변에 다른 절대 위치 div가있는 경우 Z- 색인을 설정해야 할 수도 있습니다. 또한 "전체 화면"옵션이있는 경우 "전체 화면"div의 하위 요소가 아니면 "상위 div"가 표시되지 않을 수 있습니다. GL!
rogerdpack

1
이 대답은 "작동하려면 부모가 상대적이어야합니다.", 다음 대답은 "위치 : 상대적인 부모 태그가 없는지 확인하십시오"입니다. 누군가 틀렸어!
BJury

이 작업을 수행 할 방법이 position: sticky;없습니까? 페이지가 스크롤 될 때 제자리에 머물고 싶은 탐색 모음이 있는데 절대로 변경하면 망칠 수 있습니다.
CorruptComputer

BJury 당신은 그것을 잘못 읽었습니다. 배치하는 div는 상대적 일 수 없습니다. 내부에있는 div는 상대적이어야합니다.
John Lord

13

사용하다

position: absolute;
top: ...px;
left: ...px;

div를 배치하려면. position : relative; 상위 태그가 없는지 확인하십시오.


2
z-index또한 사용해야 할 수 있습니다.
stommestack


1

예, Z- 색인이 높을수록 좋습니다. 페이지의 다른 모든 요소 위에 콘텐츠 요소를 배치합니다. 페이지의 일부 요소에 Z- 색인이 있다고 가정 해 보겠습니다. 가장 높은 값을 찾은 다음 팝업 요소에 더 높은 Z- 색인을 제공합니다. 이렇게하면 Z- 색인이있는 다른 요소 위로도 흐르게됩니다. 페이지의 요소에 Z- 색인이없는 경우 z-index : 2와 같이 지정해야합니다. 또는 더 높은 것.


0

결과 컨테이너 div position: relative는 여전히 문서 흐름에 있으며 주변 요소의 레이아웃을 변경한다는 것을 의미합니다. position: absolute'부동'효과를 얻으려면 을 사용해야 합니다.

또한 사용중인 마크 업을 확인해야합니다. <li>컨테이너가없는 phantom이 있습니다 <ul>. div#suggestionsdiv#autoSuggestionsList을 모두 단일로 대체 <ul>하고 원하는 결과를 얻을 수 있습니다.


0

아래 코드가 작동 중입니다.

<style>
    .PanelFloat {
        position: fixed;
        overflow: hidden;
        z-index: 2400;
        opacity: 0.70;
        right: 30px;
        top: 0px !important;
        -webkit-transition: all 0.5s ease-in-out;
        -moz-transition: all 0.5s ease-in-out;
        -ms-transition: all 0.5s ease-in-out;
        -o-transition: all 0.5s ease-in-out;
        transition: all 0.5s ease-in-out;
    }
</style>

<script>
 //The below script will keep the panel float on normal state
 $(function () {
        $(document).on('scroll', function () {
            //Multiplication value shall be changed based on user window
            $('#MyFloatPanel').css('top', 4 * ($(window).scrollTop() / 5));
        });
    });
 //To make the panel float over a bootstrap model which has z-index: 2300, so i specified custom value as 2400
 $(document).on('click', '.btnSearchView', function () {
      $('#MyFloatPanel').addClass('PanelFloat');
  });

  $(document).on('click', '.btnSearchClose', function () {
      $('#MyFloatPanel').removeClass('PanelFloat');
  });
 </script>

 <div class="col-lg-12 col-md-12">
   <div class="col-lg-8 col-md-8" >
    //My scrollable content is here
   </div>
   //This below panel will float while scrolling the above div content
   <div class="col-lg-4 col-md-4" id="MyFloatPanel">
    <div class="row">
     <div class="panel panel-default">
      <div class="panel-heading">Panel Head </div>
     <div class="panel-body ">//Your panel content</div>
   </div>
  </div>
 </div>
</div>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.