使用此代码,我模拟了一个< code >侧菜单,因此,如果我单击< code >按钮,包含< code >侧菜单的< code >覆盖图会打开,并且< code >侧菜单会向右移动。如果我< code >单击 外部
,则< code >覆盖图消失,菜单返回其初始位置。
. html
<div class="menuside_container" (click)="fn_hideSideMenu()" [ngClass]="showSideMenuContainer?showSideMenuContainer:''">
<div class="menuside" [ngClass]="{showmenu:showMenu, hidemenu:!showMenu}">
<a class="menu-item d-block" style="height:46px">
option 1
</a>
<a class="menu-item d-block" style="height:46px">
option 2
</a>
<a class="menu-item d-block" style="height:46px">
option 3
</a>
<hr class="m-0">
</div>
</div>
<button (click)="fn_showSideMenu()">show menu</button>
. ts
showMenu: boolean = false;
showSideMenuContainer: any = "d-none";
fn_showSideMenu() {
setTimeout(() => {
this.showMenu = true;
});
this.showSideMenuContainer = "d-block";
}
fn_hideSideMenu() {
this.showMenu = false;
setTimeout(() => {
this.showSideMenuContainer = "d-none";
}, 400);
}
.menuside {
position: absolute;
top: 0px;
width: 304px;
transition: all 0.3s linear;
background-color: #eaeaea;
height: 100%;
}
.menuside_container {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 999;
}
。钢性铸铁
.showmenu {
left: 0px;
}
.hidemenu {
left: -500px;
}
这段代码可以工作,但我认为我让事情变得复杂了很多,也许我不需要在我的. ts中添加代码,但我的想法是,我只是想知道我是否可以解决与css
和/或html
中的代码相同的效果
我希望当我点击
按钮
以显示覆盖
,然后从siemenu
向右转换时,当我点击覆盖显示后,它将显示从我的siemenu
到其起点的转换。
关于问题标题,我把它是因为如果我把一个
显示:无
在开头到。menuside_container
,siemenu
的转换不显示
谢谢。我只是在寻找解决问题的最佳解决方案
这是我的实时代码(请参见
app/app.component.
html/ts/css):
https://stackblitz.com/edit/angular-ng-bootstrap-wa3xto?file=app/app.component.html
注意:
我基本上想做gif中显示的事情,但以一种更优化的方式。我使用< code>setTimeouts
来实现它。但正如问题所说,我感兴趣的是如何使一个元素的不透明度效果从1过渡到0,但在最后有属性< code>display: none。为什么?我想完全隐藏一个元素,但是使用< code>opacity: 0时,即使它不可见,它仍然会占用< code >空间
如果要显示
:无 为了防止单击元素,您可以使用指针事件:无;
。
您还可以使用单个类来显示菜单,并假定正常状态是隐藏的。
所以我的建议是
.menuside {
[...]
transition: transform 0.3s linear;
[...]
transform: translateX(-500px)
}
.menuside_container {
[...]
pointer-events: none;
background-color: rgba(0, 0, 0, 0.5);
transition: opacity 0.3s linear;
opacity: 0;
}
.menuside.showmenu {
transform: translateX(0)
}
.menuside_container.showmenu {
pointer-events: auto;
opacity: 1;
}
. ts
中的函数只需要设置Show Menu
属性
fn_showSideMenu() {
this.showMenu = true;
}
fn_hideSideMenu() {
this.showMenu = false;
}
HTML
是:
<div class="menuside_container" (click)="fn_hideSideMenu()" [ngClass]="{showmenu:showMenu}">
<div class="menuside" [ngClass]="{showmenu:showMenu}">
<a class="menu-item d-block" style="height:46px">
option 1
</a>
<a class="menu-item d-block" style="height:46px">
option 2
</a>
<a class="menu-item d-block" style="height:46px">
option 3
</a>
<hr class="m-0">
</div>
</div>
<button (click)="fn_showSideMenu()">show menu</button>
你可以看看我在Stackblitz做的叉子
https://stackblitz.com/edit/angular-ng-bootstrap-rcwejo?file=app/app.component.css
你实际上正在实现你想做的事情。如果您检查控制台,您将看到.menuside_container
在动画运行之前具有 display:none
,并在菜单关闭后恢复到此状态。这是因为您正在对其应用 d-none
类,该类应用以下声明:display: none!important;
您还可以执行其他操作来改进代码。正如其他人指出的那样,Angular确实有自己的动画系统,你可能想研究一下。此外,您可以使用 translateX()
函数代替使用 left
属性执行动画,该函数被认为性能更高。这是通过进行以下更改来实现的:
.showmenu {
/* left: 0px; */
transform: translateX(0)
}
.hidemenu {
/* left: -500px; */
transform: translateX(-500px)
}
你可以使用非常简单的基于html和CSS的动画菜单。看看这个从你那里分出来的stackblitz。
例如:
js prettyprint-override">function closeMenu() {
document.querySelector(".menuside_container").classList.add("hidemenu");
document.querySelector(".menuside_container").classList.remove("showmenu");
}
function showMenu() {
document.querySelector(".menuside_container").classList.remove("hidemenu");
document.querySelector(".menuside_container").classList.add("showmenu");
}
body,
html {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px;
background: blue;
}
@keyframes menuOpen {
from {
opacity: 0.5;
transform: translateX(-500px);
display: none;
}
to {
opacity: 1;
transform: translatX(0);
display: block;
background-color: rgba(0, 0, 0, 0.5);
}
}
@keyframes menuClose {
from {
opacity: 1;
transform: translateX(0);
display: block;
}
to {
opacity: 0.5;
transform: translateX(-500px);
display: none;
z-index: -1;
background-color: transparent;
}
}
.menuside {
position: absolute;
top: 0px;
width: 304px;
height: 100%;
background-color: #eaeaea;
}
.menuside_container {
position: fixed;
top: 0px;
width: 100%;
height: 100%;
z-index: 999;
}
.showmenu,
.hidemenu {
animation-duration: 0.4s;
animation-timing-function: linear;
animation-fill-mode: forwards;
}
.showmenu {
animation-name: menuOpen;
}
.hidemenu {
animation-name: menuClose;
}
.d-block {
display: block;
}
<div class="menuside_container hidemenu" onclick="closeMenu()">
<div class="menuside">
<a class="menu-item d-block" style="height:46px">
option 1
</a>
<a class="menu-item d-block" style="height:46px">
option 2
</a>
<a class="menu-item d-block" style="height:46px">
option 3
</a>
<hr class="m-0">
</div>
</div>
<button onclick="showMenu()">show menu</button>
我正在尝试创建一个角度的小小吃栏,它将一个数组作为输入并显示每个通知几秒钟,然后从堆栈中弹出并显示下一个通知。 我希望在这些通知之间有一个不透明度转换。 过渡属性似乎不起作用 这是堆栈闪电战链接 更多信息: < li >应用程序组件有一个按钮,每次单击都会生成一个通知 < li>snackbar组件显示3秒钟的通知,然后删除它并切换到下一个。 < li>snackbar容器用0 opacity()
问题内容: CSS3动画出现问题。 仅当我删除的更改时,此代码才有效。 我想在悬停后立即更改显示,但不透明度应使用过渡进行更改。 问题答案: 我改变了一点,但结果很漂亮。 谢谢大家
问题内容: .item:hover { zoom: 1; filter: alpha(opacity=50); opacity: 0.5; -webkit-transition: opacity .15s ease-in-out; -moz-transition: opacity .15s ease-in-out; -ms-transition: opacity .15s ease-in-out;
CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。 尽管 CSS3 过渡效果是足够的过渡的一个元素,但是 text-transform 属性可以提高 CSS3 过渡效果的风格。 主要有四个属性的CSS3转换效果,已被描述如下: transition-property transition-duration transition-timing-function transition-delay
问题内容: 我有一个mysqli查询,我需要将其格式化为移动应用程序的JSON。 我已经设法为查询结果生成一个XML文档,但是我正在寻找更轻量的东西。(有关我当前的XML代码,请参见下文) 问题答案: 这样的输出: 如果您想要其他样式,可以尝试以下方法: 输出将是这样的:
问题内容: 我已经检查了几个如何将UIColor代码转换为HEX的链接,但是我不确定如何调用该方法以在NSLog中显示它们。我没有发表评论的声誉,因此发布帖子是我的最后选择。 我希望在日志中运行我的应用程序时显示它。 第二,我在哪里输入RGB颜色编号(R = 30,G = 171,B = 13)?我看到所有示例都使用通常指向索引位置的数组[0],[1],[2],那么我应该在哪里添加颜色值? 我有以