Розмістіть 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.