В основном я пытаюсь сделать всплывающие окна из элемента, на который они были нажаты, аналогично диалоговым окнам с угловым материалом here. Я знаю, как делать переходы, добавляя и удаляя классы, но как насчет того, когда вы хотите работать со стилями, которые вычисляются динамически и должны быть установлены через javascript. Кажется, это не работает.Переход CSS не работает при смене css из javascript
См plunkr
$(document).ready(function(){
$(document).on("click", ".heading" , function(ev){
var el = $(this);
var offset = el.offset();
$(".popup").css("top", offset.top);
$(".popup").css("left", offset.left);
$(".popup").addClass("visible");
});
$(".close").on("click", function(ev){
$(".popup").removeClass("visible");
});
});
.heading{ width:100px; height:40px; background-color:grey; margin:50px 0 150px 0; padding:10px; }
.popup{
background-color:grey;
position:absolute;
height:0
width:0; opacity:0;
-webkit-transition: opacity 0.5s ease-out, width 0.3s ease-out, height 0.3s ease-out, top 0.3s ease-out, left 0.3s ease-out;
transition: opacity 0.5s ease-out, width 0.3s ease-out, height 0.3s
ease-out, top 0.3s ease-out, left 0.3s ease-out;
-moz-transition:
opacity 0.5s ease-out, width 0.3s ease-out, height 0.3s ease-out, top
0.3s ease-out, left 0.3s ease-out; -ms-transition: opacity 0.5s ease-out, width 0.3s ease-out, height 0.3s ease-out, top 0.3s
ease-out, left 0.3s ease-out;
-o-transition: opacity 0.5s ease-out,
width 0.3s ease-out, height 0.3s ease-out, top 0.3s ease-out, left
0.3s ease-out; }
.popup.visible{ opacity:1; height:250px; width:400px;
top:400px !important; left:200px !important; }
.close:hover{cursor:pointer;}
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="style.css" />
<script data-require="jquery" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>
<script src="script.js"></script>
</head>
<body>
<div class="heading">click me 1st </div>
<div class="heading">click me 2nd</div>
<div class="heading">click me 3rd</div>
<div class="popup">
ttttttttttttttttttttttttttttttttttttttttttttttttttttttt
<div style="margin:40px" class="close">close</div>
</div>
</body>
</html>
Как это должно быть это переходит из DIV вы щелкнули, заканчивается в центре и при закрытии он переходит обратно DIV вы щелкнули ,
Способ, которым он на самом деле является: щелкнуть первый div, чтобы всплывающее окно отображалось там, где оно должно заканчиваться. После этого момента переход (верхний и нижний) всегда кажутся одним шагом назад. Если вы нажмете 2-й div, переход начинается с того места, где он заканчивался до того, как предыдущий div (что неправильно, он должен начинаться с выбранного вами div) и заканчивается посередине, что тоже правильно. Когда вы приближаетесь, он возвращается к правильному div.
Есть ли способ обойти это? Скажите двигателю обновить значения вручную или могут редактировать классы через javascritp? Любая помощь будет оценена по достоинству.
Благодаря
Это сделал трюк, я наткнулся на этой проблеме ранее, но пошел с меньшими решениями. Теперь я знаю лучше! – user2119597
Хорошо. Это был интересный вопрос. Мой jQuery немного ржавый :) –