Клиент хочет две цветовые границы для рельефного изображения. Могу ли я сделать это на одном элементе? Я надеялся избежать укладки двух элементов 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-обмана!
<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>