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: transparent와 text-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.