Две цветовые границы

Клиент хочет две цветовые границы для рельефного изображения. Могу ли я сделать это на одном элементе? Я надеялся избежать укладки двух элементов DOM с отдельными границами.

Ответ 1

Yep: используйте свойство outline; он действует как вторая граница за пределами вашей границы. Остерегайтесь, tho ', он может взаимодействовать в выигрышной манере с полями, paddings и drop-shadows. В некоторых браузерах вам, возможно, придется использовать префикс для браузера; чтобы удостовериться, что он набирает это: -webkit-outline и тому подобное (хотя WebKit, в частности, не требует этого).

Это также может быть полезно в том случае, если вы хотите сбросить схему для определенных браузеров (например, если вы хотите совместить контур с теневой теневой печатью, а в WebKit контур находится внутри тени; FireFox - снаружи, поэтому -moz-outline: 0 полезен, чтобы убедиться, что вы не получите gnarly строку вокруг красивой тени CSS).

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

Изменить: Некоторые люди отметили, что outline не очень хорошо справляется с IE < 8. Хотя это верно; поддерживающий IE < 8 действительно не то, что вы должны делать.

Ответ 2

Это очень возможно. Это просто требует немного CSS-обмана!

jsFiddle

<div class="border">
    Hi I have two border colors<br />
    I am also Fluid
</div>
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;
}

Это то, что вы ищете?

Ответ 3

Другой способ - использовать 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>

Смотрите пример здесь.

Ответ 4

Вы пробовали разные стили границ, доступные в спецификации CSS? Там уже два стиля границы, которые могут удовлетворить ваши потребности:

border-style: ridge;

или

border-style: groove;

Ответ 5

Контур хорош, но только когда вы хотите, чтобы граница была вокруг.

Предположим, что если вы хотите сделать это только снизу или сверху, вы можете использовать

<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

Вместо использования неподдерживаемых и проблемных схем просто используйте

  • background-color + padding для внутренней границы
  • нормальная граница для внешней.

Пример:

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;
}

TEST (JSFiddle): http://jsfiddle.net/68gb7/

Ответ 7

Если при "тиснении" вы имеете в виду две границы друг с другом с двумя разными цветами, существует свойство 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, outset и inset), но они имеют тенденцию меняться в разных браузерах по моему опыту.

Ответ 8

Невозможно, но вы должны проверить, могут ли значения border-style, такие как inset, outset или некоторые другие, выполнить эффект, который вы хотите.. (я сомневаюсь, хотя..)

CSS3 имеет свойства border-image, но я пока не знаю о поддержке браузеров (подробнее в http://www.css3.info/preview/border-image/)..

Ответ 9

Просто напишите

style="border:medium double;"

для тега html

Ответ 10

Вы можете использовать

<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>

Ответ 11

Это создает приятный эффект.

<div style="border: 1px solid gray; padding: 1px">
<div style="border: 1px solid gray">
   internal stuff
</div>
</div>