- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个奇怪的问题,尽管我打赌有一个巧妙的方法可以解决它。
情况是我有一个具有三列排序状态的表:完全未排序,在这种情况下我不希望出现任何图标,按升序排序,在这种情况下我想要一个向上箭头,以及按降序排序,在这种情况下我想要向下箭头。
单击列标题应该会带您经历这三种状态。
开始=>点击=>升序=>点击=>降序=>点击=>返回关闭
这一切都工作得很好,除了我想使用相同的 Caret 元素,然后使用 css 过渡 将其从 opacity: 0
淡入淡出> 到 opacity: 1
,然后单击旋转 180deg
以显示降序的向下箭头,最后当再次单击以删除排序时,我希望它淡出不旋转回0°
最后一部分是问题所在。
编辑
我只在沙箱中重新创建了行为,但我实际上使用的是react-table
,因此只有三种可能的状态,因为它是由包控制的:
initial state: {showCaret: false, flipped: false}
first click: {showCaret: true, flipped: false}
second click: {showCaret: true, flipped: true}
third click, back to initial: {showCaret: false, flipped: false}
状态变化由react-table
控制,所以我无法在翻转的变量上设置Timeout。
如果可能的话,我正在寻找一种纯粹的 CSS 方法来实现此目标,而无需操纵状态更改的方式
结束编辑
我附上了一个codesandbox来演示。首先单击“显示插入符号”,然后单击“翻转插入符号”,然后单击“隐藏插入符号”。 css的设置与我目前在实际元素中的设置基本相同。
https://codesandbox.io/embed/admiring-rain-svsc9?fontsize=14&hidenavigation=1&theme=dark
最佳答案
听起来您想要的是箭头消失,但在消失时不要旋转回其起始方向。
由于您正在使用 React 状态处理和跟踪所有这些,因此您可以单独设置这两个状态,间隔 0.3 秒(因为这是您的 CSS 转换时间)。
您可以通过多种方式做到这一点。为了演示这一点,在您的示例的这个分支中,我只需将开/关可见性设置为关闭,然后单独在 componentDidUpdate 中,我让它在关闭时进行监视,此时它会等待 300 毫秒(0.3 秒)然后将旋转状态设置回来。
componentDidUpdate(oldProps, oldState) {
if (oldState.showCaret && !this.state.showCaret) {
//it was just hidden
setTimeout(() => {
this.setState({
flipped: false
});
}, 300);
}
}
https://codesandbox.io/s/sparkling-pine-9igec
编辑,仅使用 CSS 解决方案
https://codesandbox.io/s/pensive-wilbur-opxzf
/* flipped taking care of rotating the img tag */
.image {
transition: transform 0.3s linear 2s;
}
.flipped {
transform: rotate(180deg);
transition: transform 0.3s;
}
关于javascript - 决定 CSS 过渡的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60176713/
由于内容高度不同,我正在使用过渡最大高度而不是高度的技术,但我遇到了问题。 在增长或收缩的元素内,我有一个溢出的绝对定位元素,我想在父元素展开时显示该元素。 问题是如果我只在元素没有展开的时候设置ov
我正在用 CSS 制作一个表格,上面会有一些有趣的动画。单击文本字段时,它应该展开,但除此之外,它还应该使它旁边的按钮移动。谁能看到一个简单的方法来做到这一点?我在这里包含了代码: .inpu
我想在将鼠标悬停在按钮/div 标记上时仅使用 CSS3 过渡更改页面的背景颜色。我希望颜色逐渐出现,因此想使用过渡效果,但我不知道如何将页面的背景颜色与 div 上的悬停事件相关联。有人可以帮我处理
我这里有这个页面(进行中)http://kimwilddesigns.com/index_new.htm 在本节中,我希望能够将鼠标悬停在 li 上,使背景图像淡出并使 h2 淡入。这是否可以通过过渡
我的 CSS 有点问题。我正在看一本书学习 CSS3,我刚刚发现了 Transition 函数。所以我决定尝试一下,我想不出我错在哪里,希望你能帮助我。 这是我的 Index.html 文件
我正在尝试使使用 background-image 设置的背景图像随着页面变窄而淡出。我很确定它可以使用 CSS 转换来完成,但我对它们相当不熟悉。我想我想问的是,你能根据媒体查询将背景图片转换出来吗
有没有办法在 PyQt 中将过渡颜色作为背景?我尝试使用 CSS 的线性渐变,但不起作用 stylesheet = ("QWidget { background-color : linear-grad
我有这段代码,可以在一定的延迟后切换图像的不透明度: $(".pattern-overlay").css("background","black").delay(2000).queue(functio
我还在学习 jQuery,我现在想做的就是结合 html()带有过渡的方法(例如 hide() 和 show() ),以便更改具有过渡效果的 div 的 html。这是我尝试过的: $('div.co
我有一个链接列表和一些内容部分 ORANGE BLUE PINK GREEN gfgfgfgf gfgfgfgf gfgfgfgf gfgfgfgf 每个链接对应
我不想从 JS 触发 CSS 动画,而是相反。 如果我通过 -webkit-transition 或 transition: all 1000ms 类型的样式表做 CSS 动画,有没有办法在转换后触发
我想用节点的“宽度”制作动画。 在本例中,我的节点是“AnchorPane”。 我尝试在javafx中制作一个抽屉导航。 没有属性“width Property()”? new Key Value (
这是一个简单的设置,其中使用 left 属性将盒子向右移动。通过单击按钮更新该属性。为什么我第一次点击按钮时没有应用过渡动画? document.addEventListener('DOMConten
我是安卓开发的新手。我想创建一个带有两个 TextView 的启动画面。在此初始屏幕中,我想要两个转换 1) Text View 1 从顶部到中心的过渡2) text View 2 从底部到中心的过渡
我有三个 fragment ,F1、F2 和 F3。 在 F1 到 F2 转换并返回到 F1 的情况下,不会调用 F1 的 onCreateView()。 但在 F1 到 F3 转换并返回到 F1 的
我正在为我的应用程序使用扩展导航栏,将其高度增加 30 点。为此,我对 UINavigationBar 进行了子类化,这是我的 CustomNavigationBar.m: CGFloat Custo
我在下面创建了 jQuery 脚本,但是在将它转换为最好仅使用过渡的 CSS 时遇到了一些问题。如果有人可以帮助我,我会很高兴。 下面示例的解释: - 当你点击文本框时,一个空的 div 容器会掉下来
我有一个盒子,点击它会翻转。里面还有一张悬停时放大的图片,如图 fiddle 所示。 . 问题是当我将鼠标移出或放回时,隐藏的图像上的缩放过渡会短暂显示。 My attempt修复它: #box.fl
div 自己移动,我什至不想要也没有编写代码的移动。 这是我的问题: 我正在使用这样的 CSS 转换(想要移动背景图片): .mobile{ background: url(../img/galaxy
我知道如何进行淡入淡出的 CSS 过渡,但是否有解决方案可以从上到下淡出? 这是我的代码 .navbar-default{ -webkit-transition: all 0.5s ease;
我是一名优秀的程序员,十分优秀!