【问题标题】:How to trigger transition separately on the same properties, and how to transition gradients?如何在相同的属性上分别触发过渡,以及如何过渡渐变?
【发布时间】:2020-11-27 13:33:29
【问题描述】:

我正在玩这个表格,我有几个问题,所以提前谢谢你!

  1. 主要问题:正如您在下面的代码中看到的,在悬停和活动时都有 3 个“转换”属性,并且它们都具有相同的转换时间。如果您单击该按钮,您会看到这是一个非常快速的转换 (.3s),我不希望这样。我希望它可能需要 1、2 秒,所以它给出了“它正在传递消息”的想法。如果我将过渡时间更改为 2 秒,悬停也会受到影响,2 秒的悬停效果看起来很糟糕。 我怎样才能分开这 2 个(或更多)的东西? “悬停时缩放有时间,活动时缩放有时间,活动时翻译有时间 ecc”。

如果我们可以在 CSS 中为属性提供类以便我们可以根据需要触发它们,那不是很棒吗? (只是一个乌托邦的梦想)

  1. 有没有办法给渐变过渡时间?似乎不能以通常的方式工作。

再次感谢你!

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.form1 {
  height: 100%;
  background: linear-gradient(to right bottom, deepskyblue, pink);
  margin: 10px;
  padding: 50px 150px;
  display: flex;
  flex-direction: column;
  font-family: helvetica;
  font-size: 14px;
}

.space:focus {
  outline: none;
}

.space {
  width: 300px;
  border: none;
  padding: 3px;
  border-radius: 3px;
}

.label1 {
  align-self: center;
}

.submit {
  width: 300px;
  align-self: center;
  background: linear-gradient(to top left, rgb(255,105,200), aqua);
  border: none;
  border-radius: 5px;
  padding: 5px;
  font-family: verdana;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 1px 1px 5px rgb(50,50,50);
  letter-spacing: .1px;
  outline: none;
  transition: transform .3s;
}

.submit:hover {
  background: linear-gradient(to top left, rgb(255,105,200), deepskyblue, aqua);
  transform: scale(1.1);
  border: 1px solid rgb(150,150,200);
}

.submit:active {
  transform: scale(.8);
  background: linear-gradient(to top left, rgb(235,105,200), aqua);
  transform: translateX(1000px);
}
    <div class="form1">
      <div class="label1">
      <label for="name">Name</label><br>
      <input class="space" type="text" id="name"><br><br>
      </div>

      <div class="label1">
      <label for="email">E-mail</label><br>
      <input class="space" type="email" id="email"><br><br>
      </div>

      <div class="label1">
      <label for="message">Message</label><br>
      <textarea class="space placeholder" name="name" rows="8" cols="50" onfocus="this.placeholder=''" onblur="this.placeholder='Write your message here'"></textarea><br><br>
      </div>

      <input type="submit" class="submit" value="Send">
    </div>

【问题讨论】:

    标签: html css transition gradient linear-gradients


    【解决方案1】:

    * {
      padding: 0;
      margin: 0;
      box-sizing: border-box;
    }
    
    .form1 {
      display: flex;
      flex-direction: column;
      margin: 10px;
      height: 100%;
      padding: 50px 150px;
      overflow: hidden;
      font: 14px helvetica;
      background: linear-gradient(to right bottom, deepskyblue, pink);
    }
    
    .space:focus {
      outline: none;
    }
    
    .space {
      width: 300px;
      padding: 3px;
      border: none;
      border-radius: 3px;
    }
    
    .label1 {
      align-self: center;
    }
    
    .submit {
      align-self: center;
      width: 300px;
      padding: 5px;
      border: none;
      border-radius: 5px;
      outline: none;
      font: 600 14px verdana;
      letter-spacing: .1px;
      cursor: pointer;
      box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0), 1px 1px 5px 0px rgba(50, 50, 50, 1);
      background-image: linear-gradient(to top left, rgb(255, 105, 200), deepskyblue, aqua);
      background-size: 100% 300%;
      background-position: 0% 50%;
      transform: scale(1) translateX(0vw);
      transition: .5s ease-in-out;
    }
    
    .submit:hover {
      box-shadow: inset 0px 0px 1px 0px rgba(150, 150, 200, 1), 1px 5px 10px -4px rgba(50, 50, 50, .9);
      background-position: 0% 100%;
      transform: scale(1.1) translateX(0vw);
      transition: transform .3s ease-in, background-position .9s linear;
    }
    
    .submit:active {
      background-position: 0% 50%;
      transform: scale(.8) translateX(100vw);
      transition: 2s cubic-bezier(.42, -0.29, .83, 1.12);
    }
    <div class="form1">
      <div class="label1">
        <label for="name">Name</label><br>
        <input class="space" type="text" id="name"><br><br>
      </div>
    
      <div class="label1">
        <label for="email">E-mail</label><br>
        <input class="space" type="email" id="email"><br><br>
      </div>
    
      <div class="label1">
        <label for="message">Message</label><br>
        <textarea class="space placeholder" name="name" rows="8" cols="50" onfocus="this.placeholder=''" onblur="this.placeholder='Write your message here'"></textarea><br><br>
      </div>
    
      <input type="submit" class="submit" value="Send">
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多