Стилизация заполнителя-текста с помощью эмоций JS - PullRequest
0 голосов
/ 28 февраля 2019

В настоящее время стиль placeholder="Your best email" не соответствует стилю: inputText.

На проверяющем элементе user agent stylesheet используется для input, textarea, select, button {}.

Ниже приведен мойcode:

import React from "react";
import {css} from "@emotion/core";

const inputText = css`
  ::placeholder {
    float: left;
    height: 35px;
    width: 230px;
    color: #FFF;
    font-family: "Work Sans";
    font-size: 30px;
    font-weight: 700;
    line-height: 35px;
  }
`

const inputRound = css`
  box-sizing: border-box;
  height: 85px;
  width: 460px;
  border-radius: 100px;
  border: 5px solid #FFF;
  background-color: transparent;
  outline: none;
`

const Subscribe = () => (
   <div css={{
     display: 'flex'
   }}>
      <h2>Stay tuned</h2>
      <form name="subscribe" method="POST" data-netlify="true">
        <p css={inputText}>
          <input placeholder="Your best email" type="email" name="email" css={inputRound}/>
        </p>
        <p >
          <button type="submit"><h3>Subscribe</h3></button>
        </p>
      </form>
    </div>
)

export default Subscribe

Что мешает применению стиля inputText?

Вот снимок экрана с инструментами разработки (PS inputText был изменен на & > ::placeholder, как предложено.

Chrome Dev Tools

1 Ответ

0 голосов
/ 02 марта 2019

Вы должны применить стиль inputText непосредственно к входу:

// Change this
- <p css={inputText}>
-   <input css={inputRound}/>
- </p>

//to this
+ <p>
+   <input css={[inputText, inputRound]}/>
+ </p>

Или, альтернативно, целевой дочерний вход из inputText:

const inputText = css`
  & > input::placeholder {
    ...
  }
`
...