Как запускать переход отдельно для одних и тех же свойств и как переходить градиенты? - PullRequest
0 голосов
/ 07 августа 2020

Я экспериментирую с этой формой, и у меня есть несколько вопросов, поэтому заранее спасибо!

  1. Главный вопрос: как вы можете видеть в приведенном ниже коде, есть 3 свойства "преобразования" как при наведении, так и при активном, и все они имеют одинаковое время перехода. Если вы нажмете на кнопку, вы увидите, что это очень быстрый переход (0,3 с), и я этого не хочу. Я хочу, чтобы это заняло, может быть, 1, 2 секунды, чтобы было понятно, что «сообщение уже в пути». Если я изменю время перехода на 2 секунды, это также повлияет на наведение, а эффект наведения на 2 секунды будет выглядеть ужасно. Как я могу разделить эти 2 (или более) вещи? "scale on hover имеет свое время, scale on active имеет свое время, translate on active имеет свое время e cc".

Было бы не здорово, если бы мы могли дать классы свойствам в CSS чтобы мы могли запускать их как захотим? (Просто утопи c мечта)

Есть ли способ задать время перехода градиентам? Кажется, не работает обычным способом.

Еще раз спасибо!

* {
  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>

1 Ответ

0 голосов
/ 19 августа 2020

* {
  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>
...