Вот что я до сих пор: http://jsfiddle.net/F8AN4/
Я хочу, чтобы граница с каждой стороны div была вертикально центрирована и указывала на левую/правую стороны экрана. Я видел, как это много делало, но не может, чтобы жизнь меня определяла, как это сделать!
Это будет выглядеть так:
-----|DIV|------
CSS
div {
background: lightgreen;
height: 100px;
margin: 0 auto;
position: relative;
width: 200px;
}
div::after {
border-right: 10px solid black; // not sure how to do this.
content: "";
top: 0; left: 0; right: 0; bottom: 0;
position: absolute;
}
div::before {
content: "";
top: 0; left: 0; right: 0; bottom: 0;
position: absolute;
}
Есть идеи?
Вам понадобятся два контейнера для упаковки: внутренний div, содержащий контент, и внешний div:
<div class="outer">
<div class="inner"></div>
</div>
CSS прост - внешний div должен иметь ширину 100% (так что псевдоэлемент может растягиваться до полной ширины), а внутренний div может иметь ширину, которую вы обозначили позже.
.inner {
background: lightgreen;
height: 100px;
margin: 0 auto;
width: 200px;
}
.outer {
position: relative;
width: 100%;
}
.outer:before {
border: 1px solid #000;
box-sizing: border-box;
content:"";
position: absolute;
top: 50%;
left: 0;
width: 100%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
Свойство CSS transform используется для обеспечения того, чтобы псевдоэлемент был идеально вертикально центрирован - это имеет значение, когда горизонтальная линия, которую вы хотите, толстая.
Если вам нужны нечетные размеры для горизонтальной линии, вы можете указать высоту одной границы, то есть border-top: 1px solid #000;
, или отказаться от свойства границы и установить высоту и фоновый цвет. Он работает в любом случае :)
http://jsfiddle.net/teddyrised/F8AN4/9/
[Изменить]: удалить нижнее поле на внешнем div, для работы кода не было необходимости;)
.inner
и все готово.
HTML
<div><span>TEXT</span></div>
CSS
div {
margin-top:10px;
height: 1px;
border-top: 1px solid black;
text-align: center;
position: relative;
}
span {
position: relative;
top: -.7em;
background: lightgreen;
display: inline-block;
border-width:0 2px;
border-color:black;
border-style:solid;
}
Это то, что вы ищете?
Я думаю, есть более красивый способ сделать это, может быть, у кого-то есть лучшая идея :)
<div id="main">
<div class="hrleft"></div>
<div class="mid"></div>
</div>
div.hrleft {
height: 45px;
width: 200px;
border-bottom: 10px solid black;
float: left;
}