javascript - 如何显示通知弹出窗口,动画从右上到下出现和减少,从下到上关闭
问题描述
目前,我的通知弹出窗口工作,但我想在没有 JS/JQuery (only animation)的情况下做这个动画。点击也有问题。当您在弹出窗口打开时单击外部,然后正常工作。但是,如果您单击此文本OPEN,则结束动画将不起作用。动画从右上到下出现和减少,从下到上关闭。它应该在两个方向上交替工作。它目前仅在您想要关闭弹出窗口时才有效。
CSS
.e-p-main {
margin-top: 40px;
height: auto;
width: 200px;
background: #fff;
border: 1px solid #ddd;
z-index: 99;
-webkit-transform-origin: top right;
-ms-transform-origin: top right;
transform-origin: top right;
-webkit-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0);
-webkit-transition: -webkit-transform .15s ease-out;
transition: -webkit-transform .15s ease-out;
-o-transition: transform .15s ease-out;
transition: transform .15s ease-out;
transition: transform .15s ease-out, -webkit-transform .15s ease-out;
}
.tsc_1 {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
脚本
$(document).ready(function() {
$("#e_a_c").click(function(e) {
$("#t_1").toggle();
setTimeout(function() {
$("#t_1").addClass("tsc_1");
}, 1);
e.stopPropagation();
});
$(document).click(function(e) {
if (!$(e.target).is('#t_1 *')) {
$("#t_1").removeClass("tsc_1");
setTimeout(function() {
$('#t_1').removeAttr('style');
}, 150)
}
});
});
HTML
<a class="open-edit-popup" id="e_a_c">OPEN</a>
<div id="e_a_p">
<div class="e-p-cont">
<div class="e-p-main" id="t_1">
<div class="e-p-text-1 dps">
<p>test</p>
<p>test</p>
<p>test</p>
</div>
</div>
</div>
</div>
解决方案
可能不是答案;更多的首发。我认为您不会通过完整的 CSS 解决方案达到您的期望,因为没有 javascript 就无法通过单击外部菜单来关闭菜单。
无论如何,这是一个带有 javascript / jquery https://jsfiddle.net/piiantom/98sfoLcg/的工作版本 我重新设计了 javascript 部分,以便进行功能性事件管理。您所指的错误已修复。
HTML
<a class="open-edit-popup" id="e_a_c">OPEN</a>
<div id="e_a_p">
<div class="e-p-cont">
<div class="e-p-main" id="t_1">
<div class="e-p-text-1 dps">
<p>test</p>
<p>test</p>
<p>test</p>
</div>
</div>
</div>
</div>
JAVASCRIPT
$(document).ready(function() {
$("#e_a_c").click(function(e) {
e.stopPropagation();
e.preventDefault();
if ($("#t_1").hasClass("tsc_1")) {
$("#t_1").removeClass("tsc_1");
} else {
$("#t_1").addClass("tsc_1");
}
});
$(document).click(function(e) {
if ($("#t_1").hasClass("tsc_1")) {
$("#t_1").removeClass("tsc_1");
}
});
});
CSS
.e-p-main {
margin-top: 40px;
height: auto;
width: 200px;
background: #fff;
border: 1px solid #ddd;
z-index: 99;
-webkit-transform-origin: top right;
-ms-transform-origin: top right;
transform-origin: top right;
-webkit-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0);
-webkit-transition: -webkit-transform .15s ease-out;
transition: -webkit-transform .15s ease-out;
-o-transition: transform .15s ease-out;
transition: transform .15s ease-out;
transition: transform .15s ease-out, -webkit-transform .15s ease-out;
}
.tsc_1 {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
对于完整的 CSS 版本,这是一个使用复选框输入黑客的工作版本。但是,打开/关闭只能通过单击打开来管理。单击外部时菜单未关闭。
https://jsfiddle.net/piiantom/oht40Lk5/
此外,您所有的菜单都嵌套在 a<label>
中,这不是很好
HTML
<label>OPEN<input type="checkbox" class="open-edit-popup" id="e_a_c"/>
<div id="e_a_p">
<div class="e-p-cont">
<div class="e-p-main" id="t_1">
<div class="e-p-text-1 dps">
<p>test</p>
<p>test</p>
<p>test</p>
</div>
</div>
</div>
</div>
</label>
CSS
#e_a_c{
position: absolute;
opacity: 0;
cursor: pointer;
}
#e_a_c:checked+#e_a_p #t_1{
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
.e-p-main {
margin-top: 40px;
height: auto;
width: 200px;
background: #fff;
border: 1px solid #ddd;
z-index: 99;
-webkit-transform-origin: top right;
-ms-transform-origin: top right;
transform-origin: top right;
-webkit-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0);
-webkit-transition: -webkit-transform .15s ease-out;
transition: -webkit-transform .15s ease-out;
-o-transition: transform .15s ease-out;
transition: transform .15s ease-out;
transition: transform .15s ease-out, -webkit-transform .15s ease-out;
}
推荐阅读
- java - 对于 Windows 文本文件,我应该为 `InputStreamReader()` 和 `OutputStreamWrier()` 指定哪种编码?
- r - 以正确的顺序组合
- java - 在 Restful Web 服务中正确使用 DTO
- asp.net-core - 如何使用 .Net Core SignalR 不断发送更新?
- typescript - 在 Typescript 对象中提取 ENUM 的字符串值
- powershell - 忽略自签名证书
- php - 我插入写 php 代码一些错误标志和图像
- vue.js - Vue功能组件中的子组件
- entity-framework - 将通用 DBset 实体传递给 DbContext
- ruby-on-rails - otp_code:active_model_otp gem 最近更新中的参数数量错误