iOS 입력 그림자 제거


91

iOS (Safari 5)에서 입력 요소 (상단 내부 그림자)를 따라야합니다.

예

상단 그림자를 제거하고 싶은데 버그 -webkit-appearance가 저장되지 않습니다.

현재 스타일은 다음과 같습니다.

input {    
    border-radius: 15px;
    border: 1px dashed #BBB;
    padding: 10px;
    line-height: 20px;
    text-align: center;
    background: transparent;
    outline: none;    
    -webkit-appearance: none;
    -moz-appearance: none;
}

3
참고로 일반 input선택기 에서 '-webkit-appearance'설정에주의해야합니다 . 라디오 버튼과 체크 박스에 원치 않는 영향을 미칠 수 있습니다.
davidpauljunior

덕분에 나는 요소에서 사용할
WHITECOLOR

답변:


203

-webkit-appearance: none;기본 IOS 스타일을 재정의 하려면을 사용해야 합니다. 그러나 inputCSS 에서 태그 만 선택해도 IOS는 속성 선택기를 사용하여 스타일을 추가하기 때문에 기본 IOS 스타일을 재정의하지 않습니다 input[type=text]. 따라서 CSS는 미리 설정된 기본 IOS CSS 스타일을 재정의하기 위해 속성 선택기를 사용해야합니다.

이 시도:

input[type=text] {   
    /* Remove First */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;

    /* Then Style */
    border-radius: 15px;
    border: 1px dashed #BBB;
    padding: 10px;
    line-height: 20px;
    text-align: center;
    background: transparent;
    outline: none;    
}

유용한 링크 :

appearance여기에서 자세히 알아볼 수 있습니다 .

http://css-tricks.com/almanac/properties/a/appearance/

CSS 속성 선택기에 대해 자세히 알아 보려면 여기에서 매우 유익한 기사를 찾을 수 있습니다.

http://css-tricks.com/attribute-selectors/


3
이 스타일을에 적용 할 수도 input[type=password]있습니다.
Rockallite

1
이 게시물은 거의 4 년이되었습니다. 업데이트가 필요합니까?

1
현재 사용되는 Safari 선택기는 textarea, input[type="range"], input, input:matches([type="password"], [type="search"])-사용하기 만하면 모든 경우에 작동합니다.
da_berni

내가 적용될 때 나를 위해 그것은 단지 일 !important받는 appearance. 또한 s에서도 appearance작동 select합니다.
RuiVBoas

30
background-clip: padding-box;

그림자도 제거하는 것 같습니다.

으로 @davidpauljunior 언급; -webkit-appearance일반 입력 선택기 설정 에 주의하십시오 .


1
background-clip: padding-box;iOS의 텍스트 입력 필드에서 그림자를 제거합니다. 예를 들어 codepen.io/jstnrs/pen/YXBLVN 을 참조하십시오 (iOS 장치에서 URL을 열어야 함).
jstnrs

3
이것은 작동하지만 어떻게 작동하는지 아는 사람이 있습니까? 감사.
Nostalg.io

나를 위해 일하지 않았지만 -webkit-appearance: none;해냈습니다.
Lefi Tarik

5

웹킷은 모든 속성을 제거합니다

-webkit-appearance: none;

입력 요소의 그림자를 제거하려면 box-shadow 속성을 사용해보십시오.

box-shadow: none !important;

4

나는 a.) 작동 하고 b.) 작동하는 이유를 이해할 수 있는 해결책을 찾으려고 노력했다 .

입력의 그림자 (및 입력 [type = "search"]의 둥근 테두리)는 배경 이미지에서 비롯된 것입니다.

그래서 분명히 설정 background-image: none은 나의 첫 번째 시도 였지만 이것은 작동하지 않는 것 같습니다.

설정이 background-image: url()작동하지만 여전히 빈 url(). 현재로서는 기분이 좋지 않습니다.

background-clip: padding-box; 일을 잘하는 것 같지만 "background-clip"문서를 읽은 후에도 왜 이것이 배경을 완전히 제거하는지 이해하지 못합니다.

내가 가장 좋아하는 솔루션 :

background-image: linear-gradient(transparent, transparent);

이것은 유효한 CSS이며 어떻게 작동하는지 이해합니다.


@BugWhisperer 나를 위해 iOS 12.4에서 작동합니다 : codepen.io/receter/pen/ymMzRG 더 자세한 정보를 제공 할 수 있습니까?
Andreas Riedmüller 19

나를 위해 일하지 않았지만 background-clip: padding-box !important일했습니다.
oldboy 19

@BugWhisperer 확인해 볼 수 있습니다 경우에 예 codepen.io/receter/pen/ymMzRG의 당신을 위해 사용할 수 있습니까? 또한 당신에게 background-image: linear-gradient(transparent, transparent) !important;효과가 있다면 시도해 볼 수 있습니까? 여기서 문제가 무엇인지 알게되어 기쁩니다.
Andreas Riedmüller

안타깝게도 방금 휴대 전화를 업데이트했습니다. 그들 모두는 codepen을 통해 safari 및 chrome에서 작동하지만 기본적으로 테스트하면 동일한 결과를 얻을 수 있을지 궁금합니다
oldboy

2

허용 대답하는 동안 다른 사람들이 지적한 것처럼, 그것은 단지 그 입력에 대해 작동하는 좋은 시작 type이다 "text". iOS에서 텍스트 상자로도 렌더링되는 수많은 다른 입력 유형이 있으므로 이러한 다른 유형을 고려하여이 규칙을 확장해야합니다.

다음은 버튼, 체크 박스, 범위 슬라이더, 날짜 / 시간 드롭 다운 및 라디오 버튼에 대한 기본 스타일을 유지하면서 입력 텍스트 필드와 내부 그림자의 텍스트 영역을 제거하는 데 사용하는 CSS입니다. 모두 겸손한 <input>태그를 사용하여 제작 되었습니다. .

textarea,
input:matches(
  [type="email"],
  [type="number"],
  [type="password"],
  [type="search"],
  [type="tel"],
  [type="text"],
  [type="url"]
) {
  -webkit-appearance: none;
}

-7

이것은 나를 위해 더 잘 작동합니다. 또한 모든 다른 유형의 입력 (예 : 텍스트, 전화, 이메일 등)에 적용 할 필요가 없음을 의미합니다.

* {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.