2017-12-14 14 views
1

TextField API에는 input 요소의 의사 자리 표시 자 요소의 스타일을 지정하는 방법에 대한 언급이 없습니다.TextField에서 자리 표시 자 스타일 지정

기본적으로 자리 표시 자 텍스트의 기본 스타일을 변경하고 싶습니다. the normal bag of tricks이 작동하지 않습니다. 요소에 액세스 할 수 없기 때문입니다.

내가 사용할 수있는 방법이 있습니까? 그렇다면 JSS/React/DOM과 같은 방법으로 ::-webkit-input-placeholder을 쓰는 방법은 무엇입니까?

+0

https://css-tricks.com/almanac/selectors/p/placeholder/ – CasperSL

+0

왜 요소에 액세스 할 수 없습니까? 요소가 동적으로 생성 되더라도 해당 요소를 대상으로하는 CSS 스타일은 계속 적용됩니다. –

+0

@CasperSL 그건 그냥 게으른되고있어. 이 링크는 이미 내 질문의 일부분이었습니다. – oligofren

답변

1

사례 1

label 속성에 원하는 자리 표시 자 텍스트를 입력하십시오.구성 요소를 사용하고 TextFieldlabelClassName 속성을 사용하여 사용자 정의하십시오. className, classes 또는 style 속성을 사용하여 InputLabelProps을 전달할 수도 있습니다. TextFieldlabel 속성을 사용하고 대신 placeholder 건물에 자리 표시 자 텍스트를 넣어에서

사례 2

자제. InputProps을 사용하여 생성 된 HTML input 요소의 클래스를 재정의합니다.

코드 코드는 아래에 언급 한 경우를 모두 포함

. CodeSandbox snippet.

import React from 'react'; 
import TextField from 'material-ui/TextField'; 
import { withStyles } from 'material-ui/styles'; 
import withRoot from '../components/withRoot'; 

const styles = { 
    'input-label': { 
    textOverflow: 'ellipsis', 
    whiteSpace: 'nowrap', 
    overflow: 'hidden', 
    width: '100%', 
    color: 'red' 
    }, 

    'input': { 
    '&::placeholder': { 
     textOverflow: 'ellipsis !important', 
     color: 'blue' 
    } 
    } 
}; 

class Index extends React.Component { 
    render() { 
    return <div style={ {width: 150, margin: '0 auto'} }> 
     {/* Uses "label" and "labelClassName". */} 
     <TextField 
     fullWidth 
     label='I am a really really long red TextField label' 
     labelClassName={ this.props.classes['input-label'] } /> 

     {/* Uses "label" and InputLabelProps" with inline styles. */} 
     <TextField 
     fullWidth 
     label='I am a really really long green TextField label' 
     InputLabelProps={{ 
      style: { 
      textOverflow: 'ellipsis', 
      whiteSpace: 'nowrap', 
      overflow: 'hidden', 
      width: '100%', 
      color: 'green' 
      } }} /> 

     {/* Uses "placeholder" and "InputProps" with "classes". */} 
     <TextField 
     fullWidth 
     margin='normal' 
     placeholder='I am a really really long glue TextField label' 
     InputProps={{ classes: {input: this.props.classes['input']} }} /> 
    </div>; 
    } 
} 

export default withStyles(styles)(Index); 
1

는 제가 내측 입력 요소에 액세스 할 수있는 방법에 대한 적절한 대답을 발견하지 않았지만 한 JSS을 사용하여 틀 부재를 타겟팅 할 수 방법으로, I는 TextField가 구성된다의 Input 소자의 응답 in the source을 발견 .

기본적으로, 그것은 바로 CSS 이름을 사용하고, 단지 따옴표로 묶여 : 이 '&::-webkit-input-placeholder': { color: 'blue' }

1

당신은 css::placeholder 선택기를 사용하여 입력에 스타일을 추가 할 수 있습니다 작동합니다

::-webkit-input-placeholder { /* Chrome/Opera/Safari */ 
    color: pink; 
} 
::-moz-placeholder { /* Firefox 19+ */ 
    color: pink; 
} 
:-ms-input-placeholder { /* IE 10+ */ 
    color: pink; 
} 
:-moz-placeholder { /* Firefox 18- */ 
    color: pink; 
} 
+0

나는 일반적으로 묻지 않았다. 질문은 material-ui로 태그가 지정되었으므로 특별히 JavaScript와 JSS를 사용합니다. 더 강조하기 위해 JSS 태그를 추가했으나 마지막 단락에서 명확해야합니다. – oligofren

+0

위의 CSS 선택기는 placeholder 색상 변경을위한 전역 속성입니다. u material-ui에도 사용할 수 있습니다. –

+0

전 세계적으로 변경하고 싶지 않습니다. 그렇지 않으면이 특정 질문을하지 않을 것입니다. 나는 그 질문에서 명백한 바와 같이, 적절한 CSS 소품을 이미 알고 있었다. 어려운 TextField 내부에 포함 된 특정 의사 요소를 대상으로합니다. – oligofren