FF의 선택 상자에서 윤곽선 제거


97

선택 요소에서 선택한 항목을 둘러싼 점선을 제거 할 수 있습니까?

대체 텍스트

outlineCSS에 속성 을 추가하려고 시도했지만 적어도 FF에서는 작동하지 않았습니다.

<style>
   select { outline:none; }
</style>

업데이트
개요를 제거하기 전에이 내용을 읽으십시오.
http://www.outlinenone.com/


3 개월 전에 라디오 버튼으로 같은 것을 검색했습니다. 내가 찾은 5 ~ 6 개 이상의 다른 솔루션은 효과가 없었습니다. 그래서 나는 당신이 그렇게 할 수 없다고 생각합니다. 내가 틀 렸으면 좋겠어.
Arseni Mourzenko

저도 사실입니다.하지만 여전히 틀린 것으로 입증되기를 바랍니다. : D
Martin

모질라에서 일하는 멍청한 점선이 좋다고 생각하는 인간이 실제로 있습니까? 이게 왜 우리가 제거해야하는 것일까 요?
billynoah

답변:


74

나는 해결책을 찾았지만 모든 해킹의 어머니이며 다른 더 강력한 솔루션의 출발점이되기를 바랍니다. 단점 (내 생각에 너무 큰)을 지원하지 않는 브라우저이다 text-shadow하지만 지원 rgba이 라이브러리를 사용하지 않는 (IE 9) 등 모더 나이저로 텍스트를 렌더링하지 않습니다가 (단지 이론을 테스트하지).

Firefox는 텍스트 색상을 사용하여 점선 테두리의 색상을 결정합니다. 그러니 만약 그렇다면 ...

select {
  color: rgba(0,0,0,0);
}

Firefox는 점선 테두리를 투명하게 렌더링합니다. 하지만 물론 텍스트도 투명합니다! 그래서 우리는 어떻게 든 텍스트를 표시해야합니다. text-shadow구조에 온다 :

select {
  color: rgba(0,0,0,0);
  text-shadow: 0 0 0 #000;
}

오프셋과 블러가없는 텍스트 그림자를 넣어 텍스트를 대체합니다. 물론 이전 브라우저는 이것에 대해 이해하지 못하므로 색상에 대한 대체를 제공해야합니다.

select {
  color: #000;
  color: rgba(0,0,0,0);
  text-shadow: 0 0 0 #000;
}

IE9가 등장 할 때입니다. rgba텍스트 그림자 는 지원 하지 않지만 빈 선택 상자가 나타납니다. text-shadow탐지 기능 이있는 Modernizr 버전을 다운로드 하고 ...

.no-textshadow select {
  color: #000;
}

즐겨.


고마워요 친구, 조만간 시도해 볼게요 :)
Martin

실제로 작동하는 유일한 솔루션입니다 (FF 20 사용). 축하합니다!
Gilberto Torrezan 2013

4
이것은 단지 FF 모든 FF와의주의를 기울여야한다 :@-moz-document url-prefix() { ::-moz-focus-inner {border: none} select:-moz-focusring { color: transparent; text-shadow: 0px 0px 0px #000; } }
티모 Kähkönen에게

크롬 및 기타 브라우저의 CSS에 영향을 줍니까?
Dadhich Sourav

166

글쎄요, Duopixel의 대답 은 완벽합니다. 한 걸음 더 나아가면 방탄으로 만들 수 있습니다.

select:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 #000;
}

이제 Firefox에서만 유효하며 선택한 옵션 주변의 못생긴 점선이 사라졌습니다.


1
흥미롭게도이 솔루션은 Duopixel의 대답만큼 방탄이 아닙니다. 선택 상자 (예 : -moz-transition)와 함께 전환 효과를 사용하는 경우 전환 기간 동안 점선 상자가 나타난 다음 사라집니다. 즉, '-moz-transition : all 0.5s ease;'를 지정하면이 솔루션에서는 콤보 박스가 0.5 초 동안 표시되지만 Duopixel의 대답으로는 전혀 볼 수 없습니다. 전체 선택 요소를 투명 색상 속성으로 설정하여이 문제를 해결할 수 있지만, 상자에 초점이 없으면 텍스트가 전혀 표시되지 않습니다.
Jon

1
편집 : 위의 내용은 "... 이 솔루션으로 0.5 초 동안 점선 상자 가 표시됩니다 ..."라고 말해야 합니다. 더 이상 댓글을 수정할 수 없습니다. 어쨌든 'color : rgba (0,0,0,0);' 속성은 전환을 수정하는 요소이며 선택 요소에 있어야합니다 . '-moz-focusring'은 작동하지 않습니다. 또한 흥미롭게도 어떤 이유로 IE9와 Duopixel의 솔루션을 사용하는 Chrome에서 아무런 문제가 없으므로 Modernizr에서 마지막에 그가 Modernizr에서 이야기했던 내용은 완전히 불필요했습니다.
Jon

물론 전환을 지정하면 나타납니다. all전환 내에서 사용 하는 것은 Gatling 총으로 즉석에서 발사하는 것과 같습니다.
Fleshgrinder 2014 년

1
이 또는 Duopixel의 솔루션은 Mac Mavericks의 FF 33.0.3에서 작동하지 않습니다. 점선 윤곽선 대신 파란색 흐릿한 윤곽선이 있습니다.
Timo Kähkönen 2014

1
이것은 비활성화 된 옵션에서 브라우저 스타일을 깨뜨립니다. 일단 선택에 초점이 맞춰지면 회색으로 표시된 텍스트 대신 검정색이됩니다.
billynoah

19

다음은 Firefox 선택 상자의 스타일 문제를 해결하기위한 솔루션의 공동 작업입니다. 이 CSS 선택기를 일반적인 CSS 재설정의 일부로 사용하십시오.

클래스는 질문에 따라 개요를 제거하지만 배경 이미지도 제거합니다 (일반적으로 사용자 지정 드롭 다운 화살표를 사용하고 Firefox 시스템 드롭 다운 화살표는 현재 제거 할 수 없기 때문에). 드롭 다운 이미지 이외의 다른 항목에 배경 이미지를 사용하는 경우 선을 제거하기 만하면됩니다.background-image: none !important;

@-moz-document url-prefix() {
    select, select:-moz-focusring, select::-moz-focus-inner {
       color: transparent !important;
       text-shadow: 0 0 0 #000 !important;
       background-image: none !important;
       border:0;
    }
}

어쨌든이 방법을 사용하여 옵션 텍스트 색상을 정의 할 수 있습니까?
user1063287

실제로 공급 업체별 속성 -moz-appearance을 로 설정하여 SELECT 백그라운드에서 사용되는 Firefox 화살표를 제거 할 수 있습니다 none.
Emanuele Del Grande

다른 답변에는 중요한 select::-moz-focus-inner선택자가 없기 때문에 효과가 떨어집니다. 그것이 이것이 나의 ⬆를 얻는 이유입니다.
Dave Land

select:-moz-focusring함께 color: transparenttext-shadow: 0 0 0 #000파이어 폭스 V63에 초점 성가신 국경 제거
제이슨 무어

참고 : url-prefix (). fxsitecompat.dev/en-CA/docs/2018/… 링크를 읽는 중 단계적으로 제거할지 여부가 명확하지 않습니다. 그러나 조언을 받으십시오.
user3342816 aug

9

이것은 모든 Firefox 버전을 대상으로합니다.

@-moz-document url-prefix() { 
    select {
       color: transparent !important;
       text-shadow: 0 0 0 #000 !important;
    }
}

동일한 스타일 시트를 사용하는 사이트의 다른 페이지에 개요를 표시하려는 경우! important를 제거 할 수 있습니다.


1
선택한 답변이어야합니다
brandonscript

9

일반적으로 양식 컨트롤은 그 정도의 정확도로 스타일을 지정할 수 없습니다. 모든 컨트롤에서 합리적인 범위의 속성을 지원하는 브라우저는 없습니다. 이것이 바로 이미지 및 기타 HTML 요소로 컨트롤을 "위조"하고 코드로 원래 기능을 에뮬레이트하는 무수한 JavaScript 라이브러리가있는 이유입니다.

http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

...


Thx, 나는 이것을 달성하기 위해 "내 자신의"선택 목록을 만들어야한다고 생각한다. 양식 컨트롤이 브라우저간에 더 균일하지 않다는 점이 너무 안타깝습니다.
Martin

1
@Martin : 이것은 대부분의 브라우저 에서 전혀 스타일을 지정할 수없는 파일 업로드 컨트롤의 비 유연성에 비하면 아무것도 아닙니다 . ;)
Arseni Mourzenko

3

<select onchange="this.blur();">

이것을 사용하면 목록에서 항목을 선택할 때까지 테두리가 유지됩니다.


2
안타깝게도이 솔루션은 접근성 및 사용성 지침을 따르지 않습니다. 시각 장애인을위한 TTS 인터페이스 외에도 키보드 탐색을 허용하지 않습니다. 초점을 맞춘 요소는 다른 요소와 다르게 보일 것입니다. 현재 질문의 문제는 Firefox가 방법을 결정할 수 없다는 것입니다.
Emanuele Del Grande

1

다음 중 하나를 시도하십시오.

a:active {
 outline: none;
 -moz-outline: none;
}

a {
-moz-user-focus: none;
}

참고


6
노력에 대한 Thx, 그러나 불행히도 작동하지 않았습니다. a요소에서는 작동 하지만 요소에서는 작동하지 않을 수 있습니다 select.
Martin

1

여기에 해결책이 있습니다

:focus {outline:none;}
::-moz-focus-inner {border:0;}

1
테스트되었습니다. 작동하지 않습니다. Firefox는이 속성을 인식하지만 아무 작업도 수행하지 않는 것 같습니다. 설정을 시도 10px solid red했지만 표시되는 위치를 찾을 수 없습니다.
mpen 2017-08-22

이것은 실제로 다른 모든 상위 투표 답변이 그렇지 않을 때 저에게 효과적이었습니다.
Tashows dec

0

Firefox 선택 가능한 모든 태그에서 윤곽선 / 점선 테두리를 제거합니다.

스타일 시트에 다음 코드 줄을 넣으십시오.

*:focus{outline:none !important;}   


-2
    input[type='range']::-moz-focus-outer {
    border: 0;
    outline: none !important;
    }

100 % 작업


-4

이렇게하면 select요소와 개요 에서 포커스가 제거됩니다 .

$("select").click(function(){
    $(this).blur();
});

이것은 다른 브라우저의 단점이없는 것은 아닙니다. 사용자가 사용중인 브라우저를 확인하는 것이 좋습니다.

if (FIREFOX) {
    //implement the code
}

코드 스 니펫을 제공하는 것 외에도 코드 스 니펫이 수행하는 작업을 설명해주세요.
sayan dec
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.