CSS로 투명한 테두리를 만들려면 어떻게합니까?


101

나는 한 li다음 스타일 :

li{
    display:inline-block;
    padding:5px;
    border:1px solid none;
}
li:hover{
    border:1px solid #FC0;
}

li테두리 위로 마우스를 가져 가면 li의 이동 이 발생하지 않고 나타납니다 . 보이지 않는 '테두리'를 가질 수 있습니까?

답변:


107

"투명"을 색상으로 사용할 수 있습니다. IE의 일부 버전에서는 검은 색으로 표시되지만 IE6 일 이후로 테스트하지 않았습니다.

http://www.researchkitchen.de/blog/archives/css-bordercolor-transparent.php


3
음, ie8, Mozilla, Opera 및 Chrome에서 작동했습니다. 나에게는 충분히 좋았습니다. Safari에서는 사용해 보지 않았지만 사파리는별로 신경 쓰지 않습니다. 감사합니다!
William Calleja

5
예, 이것이 작동하지 않는 것은 특히 IE6입니다. IE7은 괜찮습니다.
bobince

불행히도 이것은 나를 위해 일하지 않았습니다. 나는 완전히 경계를 벗어난 요소를 만든 후 의사를 사용하게되었다.
Alex

51

투명 테두리 대신 불투명 테두리에 대한 해결책을 찾기 위해 많은 분들이 여기에 착륙해야합니다. 당신이 사용할 수있는 경우 rgba, a을 의미합니다 alpha.

.your_class {
    height: 100px;
    width: 100px;
    margin: 100px;
    border: 10px solid rgba(255,255,255,.5);
}

데모

여기에서, 당신은 변경할 수 opacity의를 border에서0-1


완전한 투명 테두리를 원할 경우 사용하는 가장 좋은 방법은 다음 transparent과 같습니다.border: 1px solid transparent;


그리고이 도구를 사용하여 16 진수에서 rgba 색상으로 변환 할 수 있습니다. hexcolortool.com ... 여기에서 선택적으로 URL에 16 진수 색상을 지정할 수 있습니다. 예를 들면 다음과 같습니다. hexcolortool.com/#ffcc00
clayRay

32

테두리를 제거하고 패딩을 늘릴 수 있습니다.

li {
  display: inline-block;
  padding: 6px;
  border-width: 0px;
}

li:hover {
  border: 1px solid #FC0;
  padding: 5px;
}
<ul>
  <li>Hovering is great</li>
</ul>


글쎄, 이것은 매력처럼 작동했습니다. 나는 그것을하는 방법이 더 깨끗한 방법이 있는지 궁금했습니다. 보이지 않는 테두리를 가질 수 있다면? 제안에 다시 한번 감사드립니다.
William Calleja

3
이것은 나에게 더 호환되는 솔루션처럼 들립니다
NibblyPig

코드가 필요한 것과 반대로 작동한다는 것을 깨달았습니다! 결정된. 또한 투명한 색상을 사용합니다. 그냥 몰랐어요 : D
Matt Ellen

예를 들어 (제 경우) 완전히 클릭 가능한 <a/>상자 와 같이 원하는 경우 테두리를 줄이고 패딩을 늘리는 것은 소용이 없습니다 . 테두리는 요소 (따라서 클릭 가능)에 속하고 패딩은 상위 요소에 속합니다.
Nico

13

이건 제가 경험 한 최고의 솔루션입니다. 이건 CSS3입니다

다음 속성을 div 또는 테두리를 투명하게 표시하려는 모든 곳에 사용하십시오.

예 :

div_class { 
 border: 10px solid #999;
 background-clip: padding-box; /* Firefox 4+, Opera, for IE9+, Chrome */
}

작동합니다 ..


4

네, 사용할 수 있습니다 border: 1px solid transparent

또 다른 해결책은 outline문서 흐름에 영향을주지 않는 마우스 오버시 (그리고 테두리를 0으로 설정) 사용하는 것입니다.

li{
    display:inline-block;
    padding:5px;
    border:0;
}
li:hover{
    outline:1px solid #FC0;
}

NB. 윤곽선은 개별 측면이 아닌 sharthand 속성으로 만 설정할 수 있습니다. 디버깅 용으로 만 사용되지만 잘 작동합니다.


감사합니다! 옵션이 많을수록 좋습니다
William Calleja

3

옵션이 많을수록 더 좋다고 의견에 말 했으므로 여기에 또 다른 옵션이 있습니다.

CSS3에는 소위 "박스 모델"이라는 두 가지가 있습니다. 하나는 블록 요소의 너비에 테두리와 패딩을 추가하고 다른 하나는 추가하지 않습니다. 후자를 지정하여 사용할 수 있습니다.

-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;

그러면 최신 브라우저에서 요소의 너비는 항상 동일합니다. 즉, 마우스 오버시 테두리를 적용하면 테두리 너비가 요소의 전체 너비에 추가되지 않습니다. 테두리는 말하자면 요소의 "내부"에 추가됩니다. 그러나 내가 올바르게 기억한다면 width이것이 작동 하도록 명시 적으로 지정해야합니다 . 이 특정 경우에는 옵션이 아닐 수 있지만 향후 상황에 대비하여 염두에 둘 수 있습니다.


이것은 투명 테두리의 사용 사례 중 하나 일 수 있습니다. 호버에 테두리를 적용하는 대신 색상을 투명에서 볼 수있는 것으로 변경합니다.
DaveWalley 2014 년

2

이 블로그 항목 에는 border-color: transparentIE6 에서 에뮬레이트하는 방법이 있습니다. 아래 예제에는 블로그 항목 댓글에서 가져온 "hasLayout"수정 사항이 포함되어 있습니다.

/* transparent border */
.testDiv {
    width: 200px;
    height: 200px;
    border: solid 10px transparent;
}
/* IE6 fix */
*html .testDiv {
    zoom: 1;
    border-color: #FEFEFE;
    filter: chroma(color=#FEFEFE);
}

있는지 확인 border-colorIE6 수정에 사용이 어디에서나 사용되지 않는 .testDiv요소입니다. 사용 가능성이 훨씬 적기 때문에 예제를에서 pink로 변경했습니다 #FEFEFE.


0

이것에 대한 가장 쉬운 해결책 rgba은 색상 으로 사용 하는 것입니다. border-color: rgba(0,0,0,0);그것은 완전히 투명한 테두리 색상입니다.


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