Я пытаюсь добавить горизонтальную линию между двумя элементами, например LinkedIn: Я не могу заставить линию слева от изображения останавливаться на счетчике левой стороны. Я давно гуглил и не могу найти этот конкретный случай. Я уверен, что это где-то там, но я не нашел. Вот как далеко я зашел:
HTML:
<label>count</label>
<div class="img">
<img src="http://i.stack.imgur.com/qh235.png" />
</div>
И CSS:
div.img {
position: relative;
font-size: 30px;
z-index: 1;
overflow: hidden;
text-align: right;
}
div.img:before {
position: absolute;
top: 51%;
overflow: hidden;
width: 100%;
margin-left: -100%;
text-align: right;
height: 1px;
content: '\a0';
background-color: blue;
}
http://jsfiddle.net/XWVxk/1465/
Я также подумал, что эта структура может быть вариантом (div между элементами с div, имеющим границу):
HTML:
<label>count</label>
<div class="hr-line"></div>
<img src="http://i.stack.imgur.com/qh235.png" />
И CSS:
div.hr-line {
position: relative;
display: inline-block;
margin-left: 5px;
margin-right: 5px;
width: 100%;
border-bottom: 1px solid #7A7A7A;
}
http://jsfiddle.net/XWVxk/1464/
Но и это точно не работает. Если бы кто-нибудь мог исправить любую попытку, было бы здорово.
2 ответа
Метод 1: Flexbox
.divided {
display: flex;
align-items: center;
}
.divider {
flex-grow: 1;
border-bottom: 1px solid black;
margin: 5px
}
<p class="divided">
<span>Content 1</span>
<span class="divider"></span>
<span>Content 2</span>
</p>
Поскольку родительский элемент - это flexbox, мы можем просто указать элементу .divider
заполнить все доступное пространство, установив flex-grow: 1;
.
Метод 2: сплошной цвет фона
.divided {
background: linear-gradient(transparent 45%, black 45%, black 55%, transparent 55%);
}
.divided span {
background: white;
padding: 0 5px;
}
.divided span:last-of-type {
float: right;
}
<p class="divided">
<span>Content 1</span>
<span>Content 2</span>
</p>
Мы задаем .divided
линейный градиент в качестве фона, чтобы изображение выглядело как линия нужного вам цвета, а затем настраиваем <span>
на одинаковый цвет фона, чтобы они закройте линию.
Вы можете сделать то же самое несколькими разными способами, например, используя псевдоэлемент в качестве строки, а затем присвоив <span>
значениям position
и z-index
.
Какие недостатки у этого метода? Он только работает с фоном сплошного цвета. Бросьте изображение, градиент или что-нибудь, что будет покрывать фон содержимого, и вы получите такое отображение:
Вот еще один:
.box {
width: 100%;
display:-moz-flex;
display:-webkit-flex;
display:-ms-flex;
display:flex;
}
hr {
/*border: .5px solid #000;*/
margin-left: 10px;
margin-right: 10px;
}
.hr-line {
-moz-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
}
<div class="box">
<label>count</label>
<div class="hr-line"><hr></div>
<img src="http://i.stack.imgur.com/qh235.png">
</div>
Похожие вопросы
Связанные вопросы
Новые вопросы
html
HTML (язык гипертекстовой разметки) — это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы относительно HTML должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто в паре с [CSS] и [JavaScript].