두 가지 색상 테두리


96

클라이언트는 양각 된 모양을 위해 두 가지 색상 테두리를 원합니다. 한 요소에서이 작업을 수행 할 수 있습니까? 개별 테두리가있는 두 개의 DOM 요소를 쌓는 것을 피하고 싶었습니다.


효과를 얻기 위해 Javascript를 사용할 의향이 있습니까? jquery.malsup.com/corner
nopuck4you

답변:


140

예 : outline속성을 사용하십시오 . 국경 밖에서 두 번째 경계 역할을합니다. 마진, 패딩 및 드롭 섀도우와 함께 불안정한 방식으로 상호 작용할 수 있습니다. 일부 브라우저에서는 브라우저 별 접두사를 사용해야 할 수도 있습니다. 그것이 그것을 선택하는지 확인하기 위해 : -webkit-outline등 (특히 WebKit은 이것을 필요로하지 않지만).

이것은 특정 브라우저의 윤곽선을 제거하려는 경우에도 유용 할 수 있습니다 (예 : 윤곽선을 그림자와 결합하려는 경우, WebKit에서는 윤곽선이 그림자 내부에 있고, FireFox에서는 외부에서 -moz-outline: 0아름다운 CSS 그림자 주위에 선이 나쁘지 않도록하는 데 유용합니다.)

.someclass {
  border: 1px solid blue;
  outline: 1px solid darkblue;
}

편집 : 어떤 사람들은 outlineIE <8과 잘 어울리지 않는다고 말했습니다 . 이것은 사실입니다. IE <8을 지원하는 것은 실제로해야 할 일이 아닙니다.


27
-1 : "IE <8을 지원하는 것은 실제로해야 할 일이 아닙니다." IE6를 지원하지 않는 것은 괜찮을 수 있습니다. 그러나 IE7을 지원하지 않는 것은 우스꽝 스럽습니다. 기술적이지 않은 독자를 가진 사이트는 이것을 감당할 수 없습니다
Pekka

6
outlineCSS2 이후로 존재했습니다.
BoltClock

156
IE 7을 지원하지 않는 경우 +1. 사이트가 항상 작동하고 IE 7에서 적절하게 표시되어야하지만 완전한 지원은 필요하지 않습니다. 특히 2 색 테두리 인 경우에는 더욱 그렇습니다. 개인적으로 박스 섀도우 및 기타 '고급'기능을 사용하고 있습니다. IE7은 상자 그림자를 볼 수 없습니다. IE7의 단점을 해결하기 위해 덜 적합하거나 지나치게 복잡하거나 구식 솔루션을 사용할 이유가 없습니다.
Marian Theisen 2011 년

2
: 또한, 설계 목적에 대한 개요 속성 해킹하지 좋은 접근성 이유로이 참조 참조 outlinenone.com
조엘 Glovier

11
주의 할 점 outlineborder. 특히 W3C는 "참고. 외곽선은 모든면에서 동일합니다. 테두리와 달리 'outline-top'또는 'outline-left'속성은 없습니다 ." (강조 광산.)
Bob Stein

68

이것은 매우 가능합니다. 약간의 CSS 속임수가 필요합니다!

div.border {
  border: 1px solid #000;
  position: relative;
}

div.border:before {
  position: absolute;
  display: block;
  content: '';
  border: 1px solid red;
  height: 100%;
  width: 100%;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
<div class="border">Hi I have two border colors<br />I am also Fluid</div>

그게 당신이 찾고있는 것입니까?


실제로 까다 롭지 만 우아하게 저하되고 내 HTC의 스톡 브라우저 (Android)에서도 작동합니다! 를 사용하는 경우 border-radius안쪽 테두리의 반경을 1 픽셀 줄이면 두 개의 둥근 테두리 사이의 간격이 거의 눈에 띄지 않게됩니다.
독감

이거 좋은데. 그냥 하단 테두리에 대해 더 잘 작동 bottom:1px하는 대신 사용 height:100%:)
Nick

에 패딩이있는 경우 div.border에 동일한 크기로 음수 여백을 추가하면 div.border:before모든 것을 인라인으로 유지하는 데 도움이 된다는 것을 알았 습니다. 더 나은 방법이 있을까요? jsFiddle
NW Tech

유사 요소를 사용하는 경우 +1. 나는이 대답은 Williham Totland의보다 더 나은 생각
마티아스 Cánepa

대단합니다! :)
BennKingy

33

또 다른 방법은 다음을 사용하는 것입니다 box-shadow.

#mybox {
box-shadow:
  0 0 0 1px #CCC,
  0 0 0 2px #888,
  0 0 0 3px #444,
  0 0 0 4px #000;
-moz-box-shadow:
  0 0 0 1px #CCC,
  0 0 0 2px #888,
  0 0 0 3px #444,
  0 0 0 4px #000;
-webkit-shadow:
  0 0 0 1px #CCC,
  0 0 0 2px #888,
  0 0 0 3px #444,
  0 0 0 4px #000;
}

<div id="mybox">ABC</div>

여기에서 예를 참조 하십시오.


나는 외곽선 방법과 달리 border-radius로 작동하기 때문에 이것을 선호합니다
Johan

18

CSS 사양에서 사용할 수있는 다양한 테두리 스타일을 사용해 보셨습니까? 귀하의 요구를 수용 할 수있는 두 가지 테두리 스타일이 이미 있습니다.

border-style: ridge;

또는

border-style: groove;

1
이것이 바로 내가 필요로하는 것이었다. (IE8에서 <fieldset> 수정)
DOOManiac 2011

15

외곽선은 좋지만 테두리를 모두 원할 때만 가능합니다.

하단 또는 상단에만 만들고 싶다면 사용할 수 있습니다.

<style>

  #border-top {
  border-top: 1px solid  #ccc;
  box-shadow: inset 0 1px 0 #fff;
}
</style>

<p id="border-top">This is my content</p>

그리고 하단 :

<style>

      #border-bottom {
      border-top: 1px solid  #ccc;
      box-shadow: 0 1px 0 #fff;
    }
</style>

    <p id="border-bottom">This is my content</p>

이것이 도움이되기를 바랍니다.


6

지원되지 않고 문제가있는 개요를 사용하는 대신

  • 배경색 + 안쪽 테두리 패딩
  • 바깥 쪽 테두리의 일반 테두리입니다.

예:

HTML :

<img src="http://cdn3.thumbs.common.smcloud.net/common/8/6/s/863444wpPN.jpg/r-0,500-n-863444wpPN.jpg" alt="malkovich" />

CSS :

img {
    padding: 1px;
    background: yellow;
    border:1px solid black;
}

테스트 (JSF 중간) :


잘 작동하지만 배경이있는 콘텐츠가있는 경우에만 가능합니다.
Culme 2015

4

"엠보싱"에 의해 두 개의 서로 다른 색상으로 서로의 주변이 테두리를 의미하는 경우, 거기이다 outline특성 ( outline-left, outline-right...) 그러나 그것은 가난 IE 계열 (즉, IE6, 7 모두에서 지원하지 않는에서 지원됩니다 ). 두 개의 테두리가 필요한 경우 두 번째 래퍼 요소가 실제로 가장 좋습니다.

동일한 테두리에 두 가지 색상을 사용하는 것을 의미합니다. 사용 예

border-right: 1px white solid;
border-left: 1px black solid;
border-top: 1px black solid;
border-bottom: 1px white solid;

border-styles이것에 대한 특별 함도 있지만 ( ridge, outsetinset) 내 경험상 브라우저마다 다른 경향이 있습니다.


3
나는 그가 요구하는 것은 border : black white; 같은 시간에 순차적으로 보이는 하나의 테두리에 대해 두 가지 다른 색상을 정의하는 것과 같은 것이라고 생각합니다 .
Tarik

1
@ 브레이브 야드 아, 알겠습니다. 이론적으로는 사용할 수 outline있지만 IE <8
Pekka

3
외곽선 만 있다는 점에 유의하세요. 안타깝게도 outline-left, outline-right, outline-top, outline-bottom 같은 것은 없습니다.
David Sherret 2012-06-29

-1

불가능하지만 , 또는 다른 border-style값 이 원하는 효과를 얻었는지 확인해야합니다 . ( 나는 의심 스럽지만 .. )insetoutset

CSS3에는 테두리 이미지 속성이 있지만 아직 브라우저의 지원에 대해 알지 못합니다 (자세한 내용은 http://www.css3.info/preview/border-image/ ) ..


아무것도 프로그래밍 세계에서 불가능하다 : P 물론 나는이 문장을 모든 시간을 같이 :)
타릭

-1

간단히 쓰기

style="border:medium double;"

html 태그의 경우


1
그것은 두 개의 테두리를 제공하지만 그들 사이에 하나의 색상을 제공합니다.
Williham Totland

-1

당신은 사용할 수 있습니다

<html>
<head>
<title>Two Colors</title>
<style type="text/css">

.two-colors {
background: none repeat scroll 0% 0% rgb(245, 245, 245); border-color: rgba(111,111,111,0.2) transparent;
 padding: 4px; outline: 1px solid green;
}

</style>

<style type="text/css">
      body {
        padding-top: 20px;
        padding-bottom: 40px;
        background-color:yellow;        
      }
    </style>

</head>
<body>
<a target="_blank" href="people.htm">
  <img class="two-colors" src="people.jpg" alt="Klematis" width="213" height="120" />
  </a>

</body>
</html>

-2

이것은 좋은 효과를 생성합니다.

<div style="border: 1px solid gray; padding: 1px">
<div style="border: 1px solid gray">
   internal stuff
</div>
</div>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.