在reactjs中设置文本输入占位符颜色

时间:2016-08-12 16:44:38

标签: reactjs styles placeholder

使用普通CSS时,如果要为占位符设置样式,请使用以下css选择器:

new StatefulBean()

但我无法弄清楚如何在反应内联样式中应用这些类型的样式。

6 个答案:

答案 0 :(得分:4)

您无法使用::-webkit-inline-placeholder内联。

这是一个伪元素(很像例如:hover)只能在你的样式表中使用:

  

非标准的专有::-webkit-input-placeholder伪元素表示表单元素的占位符文本。

Source

而是通过className属性为React组件指定一个类,并将样式应用于此类。

答案 1 :(得分:2)

您可以尝试使用radium

var Radium = require('radium');
var React = require('react');
var color = require('color');

@Radium
class Button extends React.Component {
  static propTypes = {
    kind: React.PropTypes.oneOf(['primary', 'warning']).isRequired
  };

  render() {
    // Radium extends the style attribute to accept an array. It will merge
    // the styles in order. We use this feature here to apply the primary
    // or warning styles depending on the value of the `kind` prop. Since its
    // all just JavaScript, you can use whatever logic you want to decide which
    // styles are applied (props, state, context, etc).
    return (
      <button
        style={[
          styles.base,
          styles[this.props.kind]
        ]}>
        {this.props.children}
      </button>
    );
  }
}

// You can create your style objects dynamically or share them for
// every instance of the component.
var styles = {
  base: {
    color: '#fff',

    // Adding interactive state couldn't be easier! Add a special key to your
    // style object (:hover, :focus, :active, or @media) with the additional rules.
    ':hover': {
      background: color('#0074d9').lighten(0.2).hexString()
    },
    '::-webkit-input-placeholder' {
        color: red;
    }
  },

  primary: {
    background: '#0074D9'
  },

  warning: {
    background: '#FF4136'
  }
};

答案 2 :(得分:1)

请勿将:::-webkit-inline-placeholder内联和Radium用作一个占位符。

我建议转到您的index.css

input.yourclassname::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
  color: white;
  opacity: 1; /* Firefox */
}

答案 3 :(得分:0)

对我来说,我使用Radium's Style component。以下是您在ES6语法中可以执行的操作:

import React, { Component } from 'react'
import Radium, { Style } from 'radium'

class Form extends Component {
   render() {
      return (<div>
         <Style scopeSelector='.myClass' rules={{
            '::-webkit-input-placeholder': {
               color: '#929498'
            }}} />
         <input className='myClass' type='text' placeholder='type here' />
      </div>
   }
}

export default Radium(Form)

答案 4 :(得分:0)

只需给您的“ input”标签一个“ id”或“ class”,然后将css样式放在src中的App.css中即可。例如

//App.css or external stylesheet

#inputID::placeholder {
    color: #ff0000;
    opacity: 1;
}

//your jsx code
<input type="text" id="inputID" placeholder="Your text here" />

那实际上对我有用。

答案 5 :(得分:0)

我的方法是根据值是否为空简单地将不同的样式应用于整个 <input /> 组件。无需安装新的依赖项,也无需使用似乎是原始问题重点的样式表。

var inputStyles = {
    border: '1px solid #cbcbcb',
    color: '#525252',
};
var placeholderStyles = {
    ...inputStyles,
    color: '#999999',
};
<input
    type="text"
    placeholder="enter text here"
    value={myValue}
    style={myValue ? inputStyles : placeholderStyles}
/>