如何否定css中的运动

Posted

技术标签:

【中文标题】如何否定css中的运动【英文标题】:How to negate a movement in css 【发布时间】:2016-10-25 10:00:57 【问题描述】:

如果元素的父元素应用了过渡,我想知道如何计算或否定元素的移动。

例如,我有一个带有以下标记的轮播:

<ul class="carousel" style="position:relative;">
<li class="item active">
    text content 1. Will move with the slide.
    <div class="fixed-content">
     I want to remain where I am and I have the exact same content as the fixed element below
    </div>
<li>
<li class="item">
    text content 2. Will move with the slide.
    <div class="fixed-content">
     I want to remain where I am and I have the exact same content as the fixed element above
    </div>
<li>
</ul>

然后在活动从一个项目切换到另一个项目的过渡期间,它会添加一个左/右类,上一个/下一个,具体取决于下一个将处于活动状态的 div。然后删除这些类。

如果它有这些类,它将对 .item 元素应用 css 变换: translateX(-100%) [或变换: translateX(100%)],它的过渡持续时间为 0.6 秒,缓动退出选项。

现在,我想对 .fixed-content 使用 css 动画,使其看起来“静态”或“固定”。我如何在动画关键帧中写出来?如果转换持续时间发生了变化,使用什么公式来计算?

附言。我知道,我可以重新排列元素,以便我可以将 .fixed-content 放在 .items 之外并为其分配一个 position:absolute 属性,但让我们假装我无法做到这一点。 ;)

【问题讨论】:

试试position: fixed 为了争论,假设 position:fixed 不是一个选项,因为它的本质存在一个问题:即使向下滚动,它也会保持固定位置。 【参考方案1】:

我不喜欢这个标记,它只是一个悬停效果(不是 carroussel),但我相信是这样的。

http://codepen.io/joaosaro/pen/oLZmRr

<ul class="carousel" style="position:relative;">
  <div class="wrap">
    <li class="item one">text content 1. Will move with the slide.</li>
    <li class="item two">text content 2. Will move with the slide.</li>
    <div class="fixed-content">I want to remain where I am and I have the exact same content as the fixed element above</div>
  </div>
</ul>


ul 
  position: fixed;
  margin: 50px auto;
  width: 300px;
  height: 300px;
  cursor: pointer;

ul .wrap 
  position: relative;
  background: pink;
  height: 100%;
  width: 100%;
  border: 2px solid black;
  overflow: hidden;

ul .wrap li 
  height: 100%;
  width: 100%;
  -webkit-transition: all 0.5s;
  transition: all 0.5s;

ul .wrap li.one 
  background-color: yellow;

ul .wrap li.two 
  background-color: red;

ul .wrap .fixed-content 
  position: absolute;
  z-index: 100;
  bottom: 0;
  background: blue;

ul:hover .wrap li 
  -webkit-transform: translateY(-100%);
          transform: translateY(-100%);

【讨论】:

谢谢。但我认为 div.fixed-content 应该在 2 li.item 内。 为什么。不应该一样吗?你想改变字符串吗? “我想留在原地,我的内容与上面的固定元素完全相同” 因为 li.item 内的内容是通过 CMS 控制的,不允许用户将元素放在 li.item 之外。 (这很复杂,但此时我们无法更改系统) 所以,它的内容不一样。 :p

以上是关于如何否定css中的运动的主要内容,如果未能解决你的问题,请参考以下文章

如何否定Java中的任何正则表达式

如何否定 html 模板中的隐藏指令?

css3动画如何使三张图片围饶一个圆在运动

如何否定 Parse 的 API (Back4App) 中的查询?具体来说,我如何让一切都没有关系?

如何在 JavaScript -JQuery 中否定“if”语句块中的代码,例如“if not then ..”

iOS中类似钟摆运动的动画效果如何去做