首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CSS中反转动画

在CSS中反转动画
EN

Stack Overflow用户
提问于 2020-05-12 14:04:46
回答 2查看 99关注 0票数 1

我要做的是:当在搜索栏中输入某些内容时,未被搜索的用户名必须淡出并消失(这很好),并且当搜索栏中的字母被删除或搜索栏被清除时,我试图逆转这个动画。

App.js

代码语言:javascript
复制
import React, { useState, useEffect } from "react";
import SearchBar from "./SearchBar";
import "./App.scss";

const users = [
  { name: "Jack", id: "1" },
  { name: "Lisa", id: "2" },
  { name: "Peter", id: "3" },
  { name: "Roman", id: "4" },
  { name: "Sarah", id: "5" },
  { name: "Eric", id: "6" },
  { name: "Fiora", id: "7" },
];

function App() {
  const [searchValue, setSearchValue] = useState("");
  const [searchFilter, setSearchFilter] = useState(users);

  return (
    <div className="App">
      <h2>Search</h2>
      <SearchBar onSearch={setSearchValue} value={searchValue} />
      <ul className="users">
        {searchFilter.map((user) => {
          let classname =
            user.name.toLowerCase().indexOf(searchValue.toLowerCase()) === -1 &&
            "hide";

          return (
            <li className={`user ${classname}`} key={user.id}>
              {user.name}
            </li>
          );
        })}
      </ul>
    </div>
  );
}

export default App;

SearchBar.js

代码语言:javascript
复制
import React from "react";

function SearchBar(props) {
  const handleSearch = (e) => {
    props.onSearch(e.target.value);
  };

  return <input type="text" onChange={handleSearch} value={props.value} />;
}

export default SearchBar;

App.scss

代码语言:javascript
复制
.user {
  list-style: none;
}

.hide {
  animation: fade-out 1s ease-out forwards;
}

@keyframes fade-out {
  0% {
    opacity: 1;
  }

  50% {
    opacity: 0;
    height: inherit;
    padding: inherit;
  }

  100% {
    opacity: 0;
    height: 0;
    padding: 0;
  }
}

基本上,如果用户删除搜索栏中的一个字母,我只是试图逆转动画。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-12 14:28:08

您可以只恢复动画定义,检查这个码箱

CSS

代码语言:javascript
复制
.show {
  animation: fade-in 1s ease-out forwards;
}

@keyframes fade-in {
  0% {
    opacity: 0;
    height: 0;
    padding: 0;
  }

  50% {
    opacity: 0;
    height: inherit;
    padding: inherit;
  }

  100% {
    opacity: 1;
  }
}

<App /> 组件中的:(检查隐藏/显示类)

代码语言:javascript
复制
function App() {
  const [searchValue, setSearchValue] = useState("");
  const [searchFilter, setSearchFilter] = useState(users);

  return (
    <div className="App">
      <h2>Search</h2>
      <SearchBar onSearch={setSearchValue} value={searchValue} />
      <ul className="users">
        {searchFilter.map(user => {
          let classname =
            user.name.toLowerCase().indexOf(searchValue.toLowerCase()) === -1
              ? "hide"
              : "show"; // <--- HERE we switch for show/hide class.

          return (
            <li className={`user ${classname}`} key={user.id}>
              {user.name}
            </li>
          );
        })}
      </ul>
    </div>
  );
}
票数 1
EN

Stack Overflow用户

发布于 2020-05-12 14:31:15

您可以使用show类,就像使用hide一样

在App.js中

代码语言:javascript
复制
let classname = user.name.toLowerCase().indexOf(searchValue.toLowerCase()) === -1 ? "hide" : "show";

在App.scss中

代码语言:javascript
复制
.show {
  animation: fade-in 1s ease-out forwards;
}

@keyframes fade-in {

  0% {
    opacity: 0;
    height: 0;
    padding: 0;
  }

  50% {
    opacity: 0;
    height: inherit;
    padding: inherit;
  }

  100% {
    opacity: 1;
  }
}

你可以走了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61753798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档