Розмістіть div над вмістом сторінки


81

Я реалізував спливаюче вікно, яке динамічно відображає параметри пошуку. Я хочу, щоб поле "плавало" над усім вмістом сайту. Зараз, коли вікно відображається, воно витісняє весь вміст під ним і виглядає погано.

Я вважаю, що я вже намагався встановити z-індекс div вікна вище, ніж інший вміст сторінки, але все одно не пощастило.


2
Можливо, ви захочете попросити Google "лайтбокс", щоб перевірити, чи дає такий підхід передбачуваний ефект.
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

1
Пара приміток: вам потрібно вказати верхню та / або ліву координати, інакше це, здається, не працює. Також будьте обережні, якщо ви хочете, щоб ваш div був "на екрані", що іноді веб-сторінки не завжди відображають "0,0" як поточний верхній лівий кут (навіть якщо це схоже на те, що вони є), ви можете перевірити за допомогою stackoverflow.com/q/ 3464876/32453 . Вам також може знадобитися встановити z-індекс, якщо навколо є інші абсолютно позиціоновані divs. Крім того, якщо є параметр "повноекранний", ваш "зверху div" може не відображатися, якщо не дочірній елемент "повноекранного" div. GL!
rogerdpack

1
Ця відповідь: "Щоб батько працював, батько повинен бути відносним", наступна відповідь "Переконайтесь, що у нього немає батьківського тегу з позицією: relative". Хтось помиляється!
BJury

Чи немає способу зробити це position: sticky;? У мене є панель навігації, яку я хочу залишити на місці, коли сторінка прокручується, і її зміна на абсолютну це зіпсує.
CorruptComputer

BJury ви прочитали його неправильно. Дів, який ви позиціонуєте, не може бути відносним. Div, що знаходиться всередині ПОВИНЕН бути відносним.
Джон Лорд,

13

Використовуйте

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

Для позиціонування div. Переконайтесь, що в ньому немає батьківського тегу з позицією: relative;


2
Можливо, доведеться використовувати z-indexтакож.
stommestack


1

Так, чим вище z-індекс, тим краще. Він розмістить ваш елемент вмісту поверх кожного іншого елемента на сторінці. Скажімо, у вас є z-індекс для деяких елементів на вашій сторінці. Шукайте найвищий показник, а потім надайте вищий z-індекс своєму спливаючому елементу. Таким чином він буде протікати навіть по інших елементах із z-індексом. Якщо у вас немає z-індексу в жодному елементі на вашій сторінці, ви повинні вказати як z-index: 2; або щось вище.


0

Контейнер результатів div має position: relativeзначення, що він все ще перебуває в документообігу, і змінить розташування елементів навколо нього. Вам потрібно використовувати position: absoluteдля досягнення "плаваючого" ефекту.

Вам також слід перевірити розмітку, яку ви використовуєте, у вас є фантоми <li>без контейнера <ul>, ви, ймовірно, можете замінити як div#suggestionsі div#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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.