【发布时间】:2016-02-25 18:18:17
【问题描述】:
我的问题很简单,但是想不通是从哪里来的。
我有一个按钮。当我单击它时,它会向左滑动,并用另一个按钮代替它,并带有 CSS 动画。
这是我的代码:
.form-anim-right-click {
position: relative;
overflow: hidden;
}
.form-anim-right-click > .form-group {
width: 200%;
}
.form-anim-right-click > .form-group > .btn {
width: 50%;
display: inline-block;
float: left;
-o-transition: transform 0.3s ease-out;
-webkit-transition: transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
.form-anim-right-click > .form-group > .btn:focus {
-o-transform: translate(-100%, 0);
-webkit-transform: translate(-100%, 0);
-ms-transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
.form-anim-right-click > .form-group > .btn:focus + .form-slide {
-o-transform: translate(-100%, 0);
-webkit-transform: translate(-100%, 0);
-ms-transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
.form-anim-right-click .form-slide {
width: 50%;
display: inline-block;
float: left;
-o-transition: transform 0.3s ease-out;
-webkit-transition: transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
.form-anim-right-click .form-slide > .row {
margin-left: 0;
margin-right: 0;
padding: 0 4px;
}
.form-anim-right-click .form-slide > .row > div {
display: inline-block;
}
.form-anim-right-click .form-slide > .row > [class^="col-"] {
padding: 0 2.66666667px;
}
.form-anim-right-click .form-slide > .row label {
margin-bottom: 0;
line-height: 1.6em;
font-family: "SourceSansPro", Helvetica, Arial, sans-serif;
color: #01273c;
}
.form-anim-right-click .form-slide > .row .btn-xs {
padding-left: 4px;
padding-right: 4px;
z-index: 10000;
}
<div class="form-anim-right-click">
<div class="form-group">
<button type="button" class="btn btn-xs btn-block btn-primary">Delete</button>
<div class="form-slide">
<div class="row">
<div>
<button type="button" class="btn btn-xs btn-block btn-primary" onclick="alert('OK');">
Yes
</button>
</div>
<div>
<button type="button" class="btn btn-xs btn-block btn-secondary">
No
</button>
</div>
<div>
<input type="text">Text
</button>
</div>
</div>
</div>
</div>
</div>
你也可以看到JFiddle
当我点击一个新按钮时,我想打开一个 JS 警报。但是当我点击它时,没有任何附加内容,就像我没有点击这个按钮一样。
PS : 我对 CSS 很陌生,如果您发现其他问题,请随时纠正我!
有人有想法吗?
谢谢大家!
[编辑] 感谢您的所有回答!
到目前为止,我认为@alireza safian 的解决方案对我来说是最好的。我更喜欢纯 CSS,但这似乎非常困难。就像我在 cmets 中读到的那样,似乎焦点事件是问题的根源。如果我单击“是”,则在单击事件之前触发模糊事件。 “删除”按钮回来了,但“是”不被认为是点击了。
我想补充一件我忘记准确的事情:如果我在按钮外部单击,我需要重新出现“删除”按钮。这就是我使用焦点事件的原因。
为了获取这两个事件(模糊“删除”并单击“是”),我修改了 alireza safian 的 jsfiddle,我得到了这个结果:http://jsfiddle.net/86nhdrno/2/
它可以完成这项工作,但我不太喜欢使用超时...
【问题讨论】:
-
纯 CSS 无法做到这一点。您必须使用 javascript 或 jquery。
-
仅供参考:您的代码在 OS X 上的 Chrome 中运行良好
-
@alirezasafian 请看代码,OP IS使用javascript
-
@DarrenSweeney 我的意思是他无法通过纯 css 获得他想要的情况
-
我认为这与删除按钮在单击“是”之前失去焦点有关
标签: html css transform css-transforms animated