답변:
둘 다 유효합니다. 당신의 선택입니다.
나는 border:0
그것이 더 짧기 때문에 선호합니다 . 나는 그것을 더 읽기 쉽다는 것을 안다. 당신은 찾을 수 none
보다 읽기. 우리는 매우 유용한 CSS 포스트 프로세서의 세계에 살고 있으므로 원하는 것을 사용하고 "압축기"를 통해 실행하는 것이 좋습니다. 여기서 싸울 가치가있는 거룩한 전쟁은 없습니다.
모든 프로덕션 CSS를 손으로 작성하는 경우 의견에 불평이 있더라도 대역폭을 의식하는 데 상처를 입히지 않습니다. 를 사용 border:0
하면 무한한 양의 대역폭 이 절약 됩니다 . 그 자체로는 매우 중요하지만 모든 바이트 수를 계산 하면 웹 사이트가 더 빨라집니다.
CSS2 사양 은 여기에 있습니다 . 이것들은 CSS3에서 확장되었지만 이것과 관련이 없습니다.
'border'
Value: [ <border-width> || <border-style> || <'border-top-color'> ] | inherit
Initial: see individual properties
Applies to: all elements
Inherited: no
Percentages: N/A
Media: visual
Computed value: see individual properties
너비, 스타일 및 색상의 조합을 사용할 수 있습니다.
여기 0
에서 너비, none
스타일을 설정합니다 . 렌더링 결과는 동일합니다. 아무것도 표시되지 않습니다.
border:none
어떻게 든 더 낫다고 생각 하지는 않지만 이것을 추론으로 사용하는 것은 잘못입니다.
그들은에서 동등한 효과 , 다른 단축키를 가리키는 :
border: 0;
//short for..
border-width: 0;
그리고 나머지..
border: none;
//short for...
border-style: none;
둘 다 작동합니다. 하나만 골라 가십시오. :)
border: 0;
유효합니다.
border: 0
바로 가기가 아닙니다 border-width: 0
. 대신, 짧은 버전은 항상 세 가지 속성 ( border-color
, border-style
및)을 모두 설정합니다 border-width
.
다른 사람들이 말했듯이 둘 다 유효하며 트릭을 수행 할 것입니다. 나는 그들이 동일하다는 것을 100 % 확신하지 못합니다. 스타일 캐스 케이 딩이 진행되는 경우 이론적으로 다른 값을 재정의하므로 이론적으로 다른 결과를 생성 할 수 있습니다.
예를 들어. "테두리 : 없음;"을 설정하면 나중에 테두리 너비와 스타일을 재정의하는 두 가지 스타일이 있으며 하나는 무언가를하고 다른 하나는하지 않습니다.
IE와 firefox의 다음 예제에서 처음 두 테스트 div에는 테두리가 없습니다. 그러나 두 번째 블록은 두 번째 블록의 첫 번째 div는 평범하고 두 번째 블록의 두 번째 div는 중간 너비의 점선 테두리를 갖습니다.
따라서 둘 다 유효하지만 캐스케이드 방식이 많고 내가 생각하는 것처럼 스타일을 주시해야 할 수도 있습니다.
<html>
<head>
<style>
div {border: 1px solid black; margin: 1em;}
.zerotest div {border: 0;}
.nonetest div {border: none;}
div.setwidth {border-width: 3px;}
div.setstyle {border-style: dashed;}
</style>
</head>
<body>
<div class="zerotest">
<div class="setwidth">
"Border: 0" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: 0" and "border-style: dashed"
</div>
</div>
<div class="nonetest">
<div class="setwidth">
"Border: none" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: none" and "border-style: dashed"
</div>
</div>
</body>
</html>
border: none
대신 대신 사용해야 했습니다 border: 0
.
(참고 :이 답변은 2014-08-01에보다 상세하고 정확하며 라이브 데모 를 추가하기 위해 업데이트되었습니다 )
따르면 W3C의 사양 CSS2.1 ( "생략 값이 초기 값으로 설정된다" ), 다음과 같은 특성이 동등하다 :
border: hidden; border-style: hidden;
border-width: medium;
border-color: <the same as 'color' property>
border: none; border-style: none;
border-width: medium;
border-color: <the same as 'color' property>
border: 0; border-style: none;
border-width: 0;
border-color: <the same as 'color' property>
이러한 규칙이 요소의 테두리에 적용되는 가장 구체적인 규칙 인 경우 너비가 0이거나 hidden
/ none
스타일로 인해 테두리가 표시되지 않습니다 . 따라서 첫 번째로 볼 때이 세 가지 규칙은 동일하게 보입니다. 그러나 다른 규칙과 결합하면 다른 방식으로 작동합니다.
테이블을 사용하여 렌더링하면 렌더링 된 border-collapse: collapse
각 테두리가 여러 요소간에 공유됩니다 (내부 테두리는 인접 셀로 공유되고, 외부 테두리는 셀과 테이블 자체간에 공유되지만 행, 행 그룹, 열 및 열 그룹도 테두리를 공유 함) ). 이 사양은 국경 충돌 해결에 대한 몇 가지 규칙을 정의합니다 .
와 테두리
border-style
의hidden
다른 모든 충돌 테두리 인수 우선 순위. […]스타일이
none
가장 낮은 테두리의 우선 순위가 가장 낮습니다. […]스타일 중 하나도
hidden
없고 그 중 하나 이상이 아닌none
경우 좁은 테두리는 더 넓은 스타일을 위해 삭제됩니다. […]테두리 스타일의 색상 만 다른 경우 […]
따라서 테이블 컨텍스트에서 border: hidden
(또는 border-style: hidden
)은 가장 높은 우선 순위를 가지며 공유 경계를 숨겨줍니다.
우선 순위의 다른 쪽 끝에서 border: none
(또는 border-style: none
)의 우선 순위가 가장 낮고 너비가 0 인 경계 (가장 좁은 경계이므로)입니다. 이 수단은 것으로 계산 값 의 border-style: none
과 계산 값 의은 border-width: 0
본질적으로 동일하다.
이후 none
및 0
다른 속성 (영향 border-style
과에게 border-width
), 그들은 작동합니다 다른 때 보다 구체적인 규칙 을 정의 바로 스타일이나 단지 폭입니다. 예를 들어 Chris 답변 을 참조하십시오 .
이 모든 사례를 한 페이지에보고 싶습니까? 라이브 데모를 엽니 다 !
Oli가 친절하게 제공 한 사양에 따라 간단하게 사용할 수 있습니다.
나는 항상 사용 border:0 none;
합니다.
별도로 지정해도 아무런 해가 없지만 레거시 CSS1 속성 호출을 사용하면 일부 브라우저에서 CSS를 더 빨리 구문 분석합니다.
비록 border:0;
일반적으로 테두리 스타일이 기본값으로 사용됩니다 none
, 내가 그러나 어떤 수 이상하게 덮어 쓰기 기본 테두리 스타일을 적용 일부 브라우저를 발견했습니다 border:0;
.
나는 사용한다:
border: 0;
CSS 2.1의 8.5.4 부터 :
'경계'
값 : [<border-width> || <테두리 스타일> || < '테두리 상단 컬러'>] | 상속
따라서 두 방법 중 하나가 잘 보입니다.
음, 정확히 사이의 차이를 볼 수 border: 0
및 border: none
우리는 몇 가지 실험을 할 수 있습니다.
첫 번째는 너비를 0으로 설정하여 테두리를 비활성화 할 수 있고, 두 번째는 스타일을 없음으로 설정하여 비활성화 할 수있는 세 번째 div를 설정하고, 세 번째로 설정하면 "비활성화"할 수있는 테두리가있는 세 개의 div를 만들 수 있습니다. 투명하게 착색하십시오. 그런 다음 효과를 시도하십시오.
border: 0;
border: none;
border: transparent
테두리 스타일 : 견고! 중요; 테두리 색상 : 빨간색! 중요; 테두리 너비 : 2px! 중요; 테두리 색상 : 빨간색! 중요; 테두리 너비 : 2px! 중요; 테두리 스타일 : 견고! 중요;
내 결과는 파이어 폭스와 크롬에서 동일했습니다.
border: 0;
border-width를 0
및 border-style을 none
로 설정하지만 border-color를 변경하지 않는 것 같습니다 .
border: none;
테두리 스타일 만 변경하는 것 같습니다 (~ none
).
border: transparent;
테두리 색상을 transparent
테두리 스타일 로 변경하는 것으로 보입니다 none
.