Firefox에서 추가 버튼 간격 / 패딩 제거


81

이 코드 예제를 참조하십시오 : http://jsfiddle.net/Z2BMK/

Chrome / IE8은 다음과 같습니다.

여기에 이미지 설명 입력

Firefox는 다음과 같습니다.

여기에 이미지 설명 입력

내 CSS는

button {
    padding:0;
    background:#080;
    color:white;
    border:solid 2px;
    border-color: #0c0 #030 #030 #0c0;
    margin:0;
}

두 브라우저에서 버튼을 동일하게 만들기 위해 코드 샘플을 어떻게 변경할 수 있습니까? JavaScript 기반 하이퍼 링크는 키보드의 스페이스 바와 함께 작동하지 않고 작업 href을 처리하는 깔끔한 방법이 아닌 URL이 있어야하므로 사용하고 싶지 않습니다 .

내 솔루션, Firefox 13 이후

button::-moz-focus-inner { margin: -1px; padding: 0; border-width: 1px; }


추가 한 이유는 무엇 margin: -1px입니까? 어떻게 든 연결되어 border: 2px있습니까?
Dan

1
내 편집을 참조하십시오. border-width의가 -moz-focus-inner있었다 1px쓰기 때문에, 기본적으로 border-width코드에 중복이지만, 더 무슨 일이 일어나고 있는지 취소합니다. 미래 보장에도 도움이 될 수 있습니다. 귀하의 질문에 대답하기 위해 border-widthFirefox에서 차이의 원인이었고 추가 margin: -1px는 이전 솔루션보다 더 호환되는 솔루션입니다.
Bryan Field

1
받아 들여지는 대답은 시각적으로 동일하지만 솔루션보다 낫다고 생각합니다. Accepted answer는 FF에서 추가 한 항목을 제거하고 모든 브라우저에서 동일한 방식으로 렌더링되도록합니다. 솔루션은 그 자리에 FF로 추가 된 여분의 테두리를 남기고를 사용하여 2 픽셀 테두리의 1 픽셀을 숨 깁니다 margin: -1px. 이것은 너무 복잡합니다. 1) 렌더링 엔진의 버그가 나타나는 경우 (발생), 2) 테두리가 다른 색상으로 표시됨, 3) 확대합니다. 솔루션의 잠재적 인 문제를 설명하기 위해 fiddle을 준비했습니다. jsfiddle.net/Z2BMK / 455 . 확대하면 빨간색 테두리가 나타납니다.
Dan

내가 볼 수있는 답변의 유일한 장점은 FF의 "버튼이 활성화되었을 때 점선 윤곽"기능을 유지하는 것입니다
Dan

예, 그것이 바로 내 솔루션을 더 좋게 만드는 것입니다. 사용자에게 키보드가 어디에 집중되었는지 알려주는 무언가 가 있어야합니다 .
Bryan Field

답변:


164

이거 추가 해봐:

button::-moz-focus-inner {
    padding: 0;
    border: 0
}

http://jsfiddle.net/thirtydot/Z2BMK/1/

border위 의 규칙을 포함하는 것은 버튼이 두 브라우저에서 동일하게 보이도록하는 데 필요하지만, 버튼이 activeFirefox에 있을 때 점선 윤곽선을 제거합니다 . 많은 개발자가이 점선 윤곽선을 제거하고 선택적으로 시각적으로 더 친숙한 것으로 대체합니다.


8
Firefox에서 Chrome 스타일 포커스 글로우를 사용하려면 button{background:/*Something here*/} button:focus{-moz-box-shadow:0 0px 3px #C80;}. 이것은 점선이없는 것을 보상하고 내가 추구했던 브라우저 일관성을 제공합니다.
Bryan Field

이것이 바로 내가 필요한 것입니다. 감사!
Abel

11
입력 요소에서도 문제를 해결하려면 다음을 추가하십시오input[type="reset"]::-moz-focus-inner, input[type="button"]::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="file"] > input[type="button"]::-moz-focus-inner
Stefan

대박! 감사합니다! 이것은 도움이되었습니다!
SoWeLie

1
@Stefan jsfiddle.net/LjhQ5/1 그것은합니다 (제외 제대로 작동하는 것 같군 fileCSS). 죄송합니다. 내가 시도한 페이지에 충돌하는 CSS가 있어야합니다. 감사.
sparebytes

8

입력 요소에서도 수정하려면

input[type="reset"]::-moz-focus-inner, 
input[type="button"]::-moz-focus-inner, 
input[type="submit"]::-moz-focus-inner, 
input[type="file"] > input[type="button"]::-moz-focus-inner

간단하고 완벽합니다!


이 솔루션의 브라우저 호환성에 대해 알고 있습니까?
Bryan Field

3
을 ( input[type="file"] > input[type="button"]::-moz-focus-inner를) 이미 추가했기 때문에 중복 input[type="button"]::-moz-focus-inner되지 않습니까? 아니면 귀하의 경험이 아닙니까? 알고 계십니까?
Bryan Field

@GeorgeBailey : 브라우저 호환성은 Firefox 3 이상이며이 코드는 다른 브라우저에 영향을주지 않습니다.
Dan

@GeorgeBailey 나는이 답변 이이 의견에 대한 응답으로 의도되었다고 생각합니다 .
WynandB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.