Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание объекта и плавное отображение на странице (https://javascript.ru/forum/misc/76709-sozdanie-obekta-i-plavnoe-otobrazhenie-na-stranice.html)

TheSanches 05.02.2019 16:12

Создание объекта и плавное отображение на странице
 
Добрый день, подскажите как можно плавно отобразить блок на странице, предварительно создав его через JS.

Идея в том чтобы при наведении на ссылку создавался блок средствами JS, в котором должен отображаться адрес URL ссылки, все это я реализовал, но плавно отобразить блок не получается, как можно это сделать? по плану, все манипуляции нужно проводить с JS.
<a id="mylink" href="https://www.google.com.ua/?gws_rd=ssl">hover and you will see the url for this link</a>


let url = document.links.mylink.href;

let linkHover = document.links.mylink;

linkHover.onmouseenter = function () {
  divShow();
}

function divShow() {
  linkHover.style.position = 'relative';

  let div = document.createElement('div');

  div.style.position = 'absolute';
  div.style.padding = '20px';
  div.style.background = '#E7E4E2';
  div.style.color = '#000';
  div.style.bottom = '-85px';
  div.style.left = '0px';
  div.style.border = '1px solid #E4E1DF';
  div.style.borderRadius = '10px';
  div.style.boxShadow = '0 0 15px rgba(0,0,0,.1)';
  div.className = 'testDiv';

  div.innerHTML = url;

  linkHover.appendChild(div);

  linkHover.onmouseleave = function () {
    linkHover.removeChild(div);
  }
}

MC-XOBAHCK 05.02.2019 16:35

Вот эту часть со стилями:
div.style.position = 'absolute';
  div.style.padding = '20px';
  div.style.background = '#E7E4E2';
  div.style.color = '#000';
  div.style.bottom = '-85px';
  div.style.left = '0px';
  div.style.border = '1px solid #E4E1DF';
  div.style.borderRadius = '10px';
  div.style.boxShadow = '0 0 15px rgba(0,0,0,.1)';

Можно упростить используя свойство cssText

Вот так для удобства чтения:
div.cssText = `
    position: absolute;
    padding: 20px;
    background: #E7E4E2;
    color: #000;
    bottom: -85px;
    left: 0px;
    border: 1px solid #E4E1DF;
    border-radius: 10px;
    box-shadow: 0 0 15px rgba(0,0,0,.1);
    `;

Или тоже самое но уже в одну строку:
div.cssText = 'position: absolute; padding: 20px; background: #E7E4E2; color: #000; bottom: -85px; left: 0px; border: 1px solid #E4E1DF; border-radius: 10px; box-shadow: 0 0 15px rgba(0,0,0,.1);';

рони 05.02.2019 16:39

TheSanches,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
 </head>

<body>
<a id="mylink" href="https://www.google.com.ua/?gws_rd=ssl">hover and you will see the url for this link</a>
 <script>
    let url = document.links.mylink.href;

let linkHover = document.links.mylink;

linkHover.onmouseenter = function () {
  divShow();
}

function divShow() {
  linkHover.style.position = 'relative';

  let div = document.createElement('div');

  div.style.position = 'absolute';
  div.style.padding = '20px';
  div.style.background = '#E7E4E2';
  div.style.color = '#000';
  div.style.bottom = '-85px';
  div.style.left = '0px';
  div.style.border = '1px solid #E4E1DF';
  div.style.borderRadius = '10px';
  div.style.boxShadow = '0 0 15px rgba(0,0,0,.1)';
  div.className = 'testDiv';
  div.style.opacity = 0;
  div.style.transition = '1s';
  div.style.transform = 'scale(0)'
  div.innerHTML = url;

  linkHover.appendChild(div);
  window.setTimeout(function() {
  div.style.opacity = 1;
  div.style.transform = 'scale(1)'
},100)

  linkHover.onmouseleave = function () {
    linkHover.removeChild(div);
  }
}

 </script>
</body>
</html>

TheSanches 05.02.2019 16:46

Спасибо всем, вы мне очень помогли)


Часовой пояс GMT +3, время: 05:54.