Radium Reactjs Псевдо-селекторы - PullRequest
0 голосов
/ 07 февраля 2019

Я возвращаюсь к кодированию почти через 2 года.Я довольно новый, чтобы реагировать.Я буквально ломаю голову над тем, как использовать псевдо-селектор в реакции.Я встречал много ответов, чтобы использовать Radium, но я просто не могу реализовать это в своем коде.Любая помощь приветствуется.

Ниже приведен компонент React:

import React from "react";
import Radium from 'radium';

const styles = {
    input[type="text"] : {
    box-sizing: border-box;
    width: 100%;
    height: calc(4em + 1px);
    margin: 0 0 1em;
    padding: 1em;
    border: 1px solid #ccc;
    background: #fff;
    resize: none;
    outline: none;
  },

  input[type="text"][required]:focus {
    border-color: #00bafa;
  },
  input[type="text"][required]:focus + label[placeholder]:before {
    color: #00bafa;
  },
  input[type="text"][required]:focus + label[placeholder]:before,
  input[type="text"][required]:valid + label[placeholder]:before {
    transition-duration: 0.2s;
    transform: translate(0, -1.5em) scale(0.9, 0.9);
  },

  input[type="text"][required]:invalid + label[placeholder][alt]:before {
    content: attr(alt);
  },

  input[type="text"][required] + label[placeholder] {
    display: block;
    pointer-events: none;
    line-height: 1em;
    margin-top: calc(-3em - 2px);
    margin-bottom: calc((3em - 1em) + 2px);
  },

  input[type="text"][required] + label[placeholder]:before {
    content: attr(placeholder);
    display: inline-block;
    margin: 0 calc(1em + 2px);
    padding: 0 2px;
    color: #898989;
    white-space: nowrap;
    transition: 0.3s ease-in-out;
    background-image: linear-gradient(to bottom, #fff, #fff);
    background-size: 100% 5px;
    background-repeat: no-repeat;
    background-position: center;
  }

};

const GmailInput = () => {
 return (
    <div>
      <form>
       <input type="text" />
       <label placeholder="Type your Email" />
      </form>
    </div>
 );
 };

 export default Radium(GmailInput);

1 Ответ

0 голосов
/ 26 июня 2019

Следуйте синтаксису ..

import React from "react";
import { StyleRoot } from "radium";

const GmailInput = props => {
  const styles = {
    boxSizing: "border-box",
    width: "100%",
    height: "calc(4em + 1px)",
    margin: "0 0 1em",
    padding: "1em",
    border: "1px solid #ccc",
    background: "#fff",
    resize: "none",
    outline: "none",
    ":hover": {
      borderColor: "#00bafa"
    }
  };

  return (
    <StyleRoot>
      <div>
        <form style={styles}>
          <input type="text" placeholder="Type your Email"></input>
        </form>
      </div>
    </StyleRoot>
  );
};

export default GmailInput;

Понимание,

  1. Вы должны поместить все переменные в основную часть компонента.

  2. Поскольку вы используете функциональные компоненты, {StyleRoot} необходим для псевдо-стиля с использованием Radium.

  3. Пожалуйста, узнайте, как использовать стили с помощью JavaScriptв реакции.Хотя стилевые свойства - это CSS, но когда вы пишете в JS, это только объекты JS.Реактивный компилятор компилирует их в стили CSS.

  4. JSX style Атрибут необходим для стилизации. См. style = {styles}, стили - этопеременная здесь.

  5. Радий (Com_name) для компонента на основе классов.для функциональных компонентов это не требуется, но возвращение в StyleRoot является обязательным.

  6. Синтаксис CSS с "-", такой как box-sizing, будет набираться через camelCasing, например boxSizing.

(Здесь не указаны все ваши свойства css, только чтобы показать вам концепцию. Этот синтаксис был успешно скомпилирован)

...