如何使用刺激js切换css属性

fol*_*e83 4 ruby-on-rails stimulusjs

我在使用stimulus.js定位css属性时遇到问题

我想将显示 Flex 切换为无,并在单击图标时显示 Flex

display:flex 
Run Code Online (Sandbox Code Playgroud)

#css

.dropnav{
  display:flex
}
Run Code Online (Sandbox Code Playgroud)

#隐藏控制器

......
static targets = [ "hide" ]
static classes =["display"]
        
connect() {
this.hideTarget.classList.add(this.displayClass)}
toggle(){
 this.hideTarget.classList.toggle(this.displayClass)}
.....
Run Code Online (Sandbox Code Playgroud)

#html

 ....
  <li class="nav_items" data-controller="toggle" > 
      <a href=""  data-action="toggle#toggle" ><i class="far fa-user-circle fa-2x "></i></a>
                            
          <div class="dropnav" data-toggle-display-class="display" data-toggle-target="hide">
                 <a href="" class="drop_down_items" ></a>
                  <a href="" class="drop_down_items">Links</a>
                    .......  
Run Code Online (Sandbox Code Playgroud)

错误信息

Error: Missing attribute "data-toggle-display-class"
Run Code Online (Sandbox Code Playgroud)

我在哪里添加课程?谢谢

Den*_*vic 6

data-toggle-display-class="display"应该在定义控制器的同一元素上。所以在你的情况下:

<li class="nav_items"
    data-controller="toggle"
    data-toggle-display-class="display"> 
  <a href="" data-action="toggle#toggle" >
    <i class="far fa-user-circle fa-2x "></i>
  </a>                 
  <div class="dropnav" data-toggle-target="hide">
    <a href="" class="drop_down_items" ></a>
    <a href="" class="drop_down_items">Links</a>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后在你的CSS中隐藏或显示元素,例如:

.nav_items {
  .dropnav {
    display: none;
  }
  &.display {
    .dropnav {
      display: flex;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)