gpt4 book ai didi

css - 在 Stenciljs 中单击更改 CSS 类

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:41 24 4
gpt4 key购买 nike

是否可以在 Stencil.js 中使用 W3School 的简单菜单动画?

https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_menu_icon_js

我正在尝试为点击事件设置样式,但我无法让它发挥作用。该事件正在触发,但我无法设置类(class)。

在我的 .tsx 中:

import { Component, Prop, h } from '@stencil/core';

@Component({
tag: 'topbar-component',
styleUrl: 'topbar-component.css',
shadow: true
})

export class Topbar {

private menuToggle(e) {
return (
e.classList.toggle("change");
);
}

render() {
return (
<div class="topbar-menu">
<div class="container" onClick={(e) => this.menuToggle(e)}>
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
</div>
)
}
}

在我的 CSS 中:

.bar1, .bar2, .bar3 {
width: 35px;
height: 5px;
background-color: #333;
margin: 6px 0;
transition: 0.4s;
}

.change .bar1 {
-webkit-transform: rotate(-45deg) translate(-9px, 6px);
transform: rotate(-45deg) translate(-9px, 6px);
}

.change .bar2 {opacity: 0;}

.change .bar3 {
-webkit-transform: rotate(45deg) translate(-8px, -8px);
transform: rotate(45deg) translate(-8px, -8px);
}

我收到错误:Uncaught TypeError: Cannot read property 'toggle' of undefined

最佳答案

您可以使用状态属性来实现:

import { Component, Prop, State, h } from '@stencil/core';

@Component({
tag: 'topbar-component',
styleUrl: 'topbar-component.css',
shadow: true
})

export class Topbar {

@State() isMenuOpen: boolean = false;

private menuToggle() {
this.isMenuOpen = !this.isMenuOpen;
}

render() {
return (
<div class="topbar-menu">
<div class={{ container: true, change: this.isMenuOpen }}" onClick={(e) => this.menuToggle(e)}>
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
</div>
)
}
}

关于css - 在 Stenciljs 中单击更改 CSS 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58822060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com