Относительное расположение DIV

Есть div с именем "dvUsers". есть якорный тег «lnkUsers».

Когда вы нажимаете на привязку, div должен открываться как всплывающий div чуть ниже него.

Также относительное положение div должно сохраняться при изменении размера окна и все такое. Как это сделать с помощью javascript / jquery?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
2 473
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

$(document).ready(function(){ $("#lnkUsers").click(function(){ $("#dvUser").show("slow"); });

style = "display: none" должен быть применен к dvUser в первую очередь, чтобы сделать его невидимым.

Ответ принят как подходящий

Возможно, вам стоит поискать готовый скрипт вроде overLIB: http://www.bosrup.com/web/overlib/! -)

Я предпочитаю разместить оба этих элемента внутри родительского div следующим образом:

<div id = "container">
    <a id = "lnkUsers" href = "#">Users</a>
    <div id = "dvUsers" style = "display: none;">
        <!-- user content... -->
    </div>
</div>

CSS для этих элементов будет:

#container{
    /* ensure that #dvUsers is positioned relatively to this element */
    position: relative;
}
#dvUsers{
    position: absolute;
    /* this value should be based on the font-size of #lnkUsers */
    top: 30px;
    left: -10px;
}

Это гарантирует, что div правильно расположен относительно ссылки. (Для ответа на этот вопрос я предполагаю, что родительский div либо "text-align: left", либо плавающий)

Javascript будет выглядеть примерно так:

$(function(){
    $('#lnkUsers').click(function(){
        $('#dvUsers').slideToggle();
    });
});

Вы можете использовать плагин jQuery PositionCalculator.

HTML:

  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link1</a></p>
  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link 2</a></p>
  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link 3</a></p>
  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link 4</a></p>
  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link 5</a></p>
  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link 6</a></p>
  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link 7</a></p>
  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link 8</a></p>
  <p><a class = "lnkUsers" href = "javascript:void(0)">Users Link 9</a></p>

  <div id = "dvUsers" style = "display:none; position:absolute; padding:10px; background:rgba(0,0,0,0.8); color:#ffffff">
    I am the popup. <b>Click me to close</b>
    <div class = "dynamicInfo"></div>
  </div>

JavaScript:

jQuery(function($) {
    var $popup = $('#dvUsers');
    var $infoField = $popup.find('.dynamicInfo');

    function showPopup(event) {

        // set content
        $infoField.text('clicked link: ' + $(this).text());

        // reset position
        $popup.show().css({top: 0, left: 0});

        // calculate new position
        var calculator = new $.PositionCalculator({
            item: $popup,
            itemAt: "top left",
            target: this,
            targetAt: "bottom left",
            flip: "both"
        });
        var posResult = calculator.calculate();

        // set new position
        $popup.css({
            top: posResult.moveBy.y + "px",
            left: posResult.moveBy.x + "px"
        });

        // window resize handler
        $(window).off('resize.dvUsers');
        $(window).on('resize.dvUsers', function(event) {
            $popup.css({top: 0, left: 0});
            var newResult = calculator.resize().calculate();
            $popup.css({
                top: newResult.moveBy.y + "px",
                left: newResult.moveBy.x + "px"
            });
        });
    }

    // add click handler for show and hide
    $('.lnkUsers').on('click', showPopup);
    $popup.on('click', function() {
        $popup.hide();
        $(window).off('resize.dvUsers');
    });
});

Вот пример в JSBin

Другие вопросы по теме