черная линия слева и справа от текста [копия]

0

Я хотел бы поместить черную линию в левую и правую сторону заголовка, чтобы она выглядела так:

-------------------- Красивый текст ---------------------------

содержание bla bla blab содержание bla bla blab содержание bla
содержание bla bla blab содержание bla bla blab содержание bla
содержание bla bla blab содержание bla bla blab содержание bla
содержание bla bla blab содержание bla bla blab содержание bla

Надеюсь, вы знаете, что я имею в виду.

Какой лучший способ сделать это? Я могу добиться этого, предоставив h1 отрицательную верхнюю позицию и белый фон, установив содержимое div с черной рамкой сверху. Итак, заголовок (с белым фоном) накладывает мою черную границу.

Но я уверен, что там лучше, чем работать с отрицательным позиционированием.

  • 0
    На вопрос "Как лучше всего сделать X?" всегда предоставлять контекст и объяснять проблемы с вашим текущим решением.
  • 0
    Смотрите мой ответ ниже. jsfiddle.net/jYW4n/22/show Линия находится прямо в середине по вертикали.
Теги:

3 ответа

0
Лучший ответ

http://fiddle.jshell.net/MF4WP/4/
http://fiddle.jshell.net/MF4WP/4/show

<h1><span>My heading has a line through it.</span></h1>

Требуется дополнительный интервал. Работает также с многострочными заголовками:
См. Пример здесь:
http://fiddle.jshell.net/aZ4tr/6/show
http://fiddle.jshell.net/aZ4tr/6/

 h1 {
    color: gray;
    font-size: 0; /* fixes white-space issue SPAN */
    font-family:Helvetica;
    text-align: center;
    display: block;
    padding: 0 10px;
    position: relative;
}
h1:before {
  content: '';
  height: 1px;
  width: 100%;
  background: gray;
  position:absolute;
  z-index: -1;
  left: 0;
  top: 50%;
  margin-top: -1px;
}
h1 span {
    background: #fff;
    display: inline-block;
    font-size: 28px;  
}
1

вы можете использовать псевдоэлемент в абсолютной позиции и отрицательном поле: базовая одна строка:

http://codepen.io/gc-nomade/pen/FzjiD/

h1 {
  margin:0 1em;
  position:relative;/*here triggers overflow since no width is given */
  overflow:hidden;
  text-align:center;
}
h1:after , h1:before{
  content:'';
  margin-top:0.5em;
  height:0;
  border-top:groove 2px;
  width:100%;
  position:absolute;
  margin-right:-100%;/* reduce size virtually to zero at 100% */
  margin-left:1%;/* set margin from end  text */
}
h1:before{
  margin-left:-101%;/* reduce size virtually to zero at 100% + give margin from begin text */
}

Для многострочных линий:

http://codepen.io/gc-nomade/pen/uLynl/ вам нужно установить top координаты, чтобы они находились в вертикальном положении; и оберните текст в встроенный ящик, чтобы не накладывать его. http://codepen.io/gc-nomade/pen/qhEro/

  • 0
    Также отлично работает. Смотрите мой форк: codepen.io/anon/pen/GvHaF. Вы можете поместить его вертикально по центру, используя top: 50%; + margin-top: - [borderwidth] px
  • 0
    Единственная проблема, которая случится с заголовками-заглушками, это сломает.
Показать ещё 15 комментариев
0

Я не уверен, что это лучший способ, но это, безусловно, простой способ добиться этого:

Код HTML:

<hr class="headingrule" /><span id="heading">text</span><hr class="headingrule" />

Код CSS:

.headingrule {
    float: left;
    width: 40%;
}

#heading {
    float: left;
}

JSFiddle.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню