<Hr /> benzeri bir satırın ortasına ortalanmış metin ekleme


217

Biri gibi metin her iki tarafında bir çizgi oluşturmak için sıkı xhtml 1.0 katı hangi seçenekleri olduğunu merak ediyorum:

Bölüm Bir
----------------------- Sonraki bölüm -----------------------
İkinci bölüm

Böyle süslü şeyler yapmayı düşündüm:

<div style="float:left; width: 44%;"><hr/></div>
<div style="float:right; width: 44%;"><hr/></div>
Next section

Veya alternatif olarak, yukarıdakilerin hizalama ile ilgili sorunları olduğu için (hem dikey hem de yatay):

<table><tr>
<td style="width:47%"><hr/></td>
<td style="vertical-align:middle; text-align: center">Next section</td>
<td style="width:47%"><hr/></td>
</tr></table>

Bu da bu karmaşa ile çözdüğüm hizalama sorunları var:

<table><tr>
<td style="border-bottom: 1px solid gray; width: 47%">&nbsp;</td>
<td style="vertical-align:middle;text-align:center" rowspan="2">Next section</td>
<td style="border-bottom: 1px solid gray; width: 47%">&nbsp;</td>
</tr><tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr></table>

Hizalama sorunlarına ek olarak, her iki seçenek de 'şişmanlık' hisseder ve bunu daha önce görmüş ve zarif bir çözüm biliyorsanız çok zorunluluk duyarım.


3
İşte ekstra etiketsiz bir meydan okuma ve başka bir çözüm içeren başka bir iş parçacığı! stackoverflow.com/questions/12648513/…
willoller

1
stackoverflow.com/questions/5214127/… hala en iyi çözümdür.

Burada yararlı bir cevap CSS Grid kullanır.
Brian M. Hunt

Hemen hemen her öğeyi ayarlanmış arka plan olmadan bir ayırıcıya dönüştüren ve ayarlamaya izin veren bir yanıt (SCSS) eklendi: ayırıcının renk ve kontur stili (düz, noktalı, kesikli), metnin konumu (sol, sağ, orta) ve bunu uygulayan sınıf (varsayılan olarak .divider).
tao

Mevcut flexbox desteği verildiğinde, cevabımın biraz görünürlük kazanabileceğini düşünüyorum .
MatTheCat

Yanıtlar:


64

Bu çözülmüş olup olmadığını bilmiyorum ama flexbox oldukça bir çözüm sunuyor:

<div class="separator">Next section</div>

.separator {
    display: flex;
    align-items: center;
    text-align: center;
}
.separator::before, .separator::after {
    content: '';
    flex: 1;
    border-bottom: 1px solid #000;
}
.separator::before {
    margin-right: .25em;
}
.separator::after {
    margin-left: .25em;
}

Bkz. Http://jsfiddle.net/MatTheCat/Laut6zyc/Demo için .

Bugün uyumluluk o kadar da kötü değil (tüm eski flexbox sözdizimlerini ekleyebilirsiniz) ve zarif bir şekilde bozunur.


Flexbox destek bugünlerde dikkate en iyi cevap
Akivajgordon

Bu güzel bir çözüm
Smaillns

217

Nasıl olur:

<div style="width: 100%; height: 20px; border-bottom: 1px solid black; text-align: center">
  <span style="font-size: 40px; background-color: #F3F5F6; padding: 0 10px;">
    Section Title <!--Padding is optional-->
  </span>
</div>

Bu JSFiddle'a göz atın .

Duyarlı hale getirmek için vwveya %düğmesini kullanabilirsiniz .


2
Kesin en yüksek değeri elde etmek biraz zor. Tam olarak -0.5em değil;
Mitar

mükemmel. "Duyarlı" da
JimXC

4
Arka plan rengini veya genişliği belirtmenizi gerektirmeyen bir çözüm için cevabıma bakın.
MartinF

Duyarlı, şeffaf bg, değişken stili ve bölücünün yüksekliği, metnin değişken konumu için cevabım bakın . Aynı projede birden fazla bölücü stiline sahip olmak için SCSS kullanarak farklı seçicilere birden fazla kez de uygulanabilir. Herhangi biriyle çalışır font-size.
tao

193

Genişliği ve arka plan rengini bilmeden bunu çözmenin yolu şudur:

yapı

<div class="strike">
   <span>Kringle</span>
</div>

CSS

.strike {
    display: block;
    text-align: center;
    overflow: hidden;
    white-space: nowrap; 
}

.strike > span {
    position: relative;
    display: inline-block;
}

.strike > span:before,
.strike > span:after {
    content: "";
    position: absolute;
    top: 50%;
    width: 9999px;
    height: 1px;
    background: red;
}

.strike > span:before {
    right: 100%;
    margin-right: 15px;
}

.strike > span:after {
    left: 100%;
    margin-left: 15px;
}

Örnek: http://jsfiddle.net/z8Hnz/

Çift çizgi

Çift çizgi oluşturmak için aşağıdaki seçeneklerden birini kullanın:

1) Hatlar arasındaki sabit alan

.strike > span:before,
.strike > span:after {
    content: "";
    position: absolute;
    top: 50%;
    width: 9999px;
    border-top: 4px double red;

Misal: http://jsfiddle.net/z8Hnz/103/

2) Satırlar arasındaki özel alan

.strike > span:before,
.strike > span:after {
    content: "";
    position: absolute;
    top: 50%;
    width: 9999px;
    height: 5px; /* space between lines */
    margin-top: -2px; /* adjust vertical align */
    border-top: 1px solid red;
    border-bottom: 1px solid red;
}

Örnek: http://jsfiddle.net/z8Hnz/105/


SASS (SCSS) sürümü

Bu çözüme dayanarak, SCSS'yi "color özelliği ile" eklediysem, birine yardım edebilirse ...

//mixins.scss
@mixin bg-strike($color) {

    display: block;
    text-align: center;
    overflow: hidden;
    white-space: nowrap; 

    > span {

        position: relative;
        display: inline-block;

        &:before,
        &:after {
            content: "";
            position: absolute;
            top: 50%;
            width: 9999px;
            height: 1px;
            background: $color;
        }

        &:before {
            right: 100%;
            margin-right: 15px;
        }

        &:after {
            left: 100%;
            margin-left: 15px;
        }
    }
}

kullanım örneği:

//content.scss
h2 {
    @include bg-strike($col1);
    color: $col1;
}

Çizgi için bir görüntü kullanıyorsanız bu sürüm daha iyi çalışır - ya da en azından düzenlemek ve duyarlı kalmak daha kolaydır
tehlivi

Güzel iş! Çift çizgi oluşturmak için sihirbazınızı kullanabilir misiniz? (Aksi takdirde, küçük bir yinelenen arka plan görüntüsü kullanmaya başvuracağım.)
wloescher

3
Harika pasaj! Teşekkürler :)
plong0

2
Bu en iyi cevaptır çünkü arka planı ayarlamadan çalışacak ve şeffaf arka planı ayarlamanız gerektiğinde çalışacaktır
Dinesh Dabhi

1
İlk örnek sadece harika! Tebrikler! Doğru cevap olmalı!
Luiz Eduardo

87

Kap veya arka plan renginin genişliğini bilmeden :: before ve :: after ile bunu yapabilir ve satır sonlarını daha iyi şekillendirebilirsiniz. Örneğin, bu çift çizgiler, noktalı çizgiler vb. Yapmak için değiştirilebilir.

JSFiddle

CSS ve HTML kullanımı:

.hr-sect {
	display: flex;
	flex-basis: 100%;
	align-items: center;
	color: rgba(0, 0, 0, 0.35);
	margin: 8px 0px;
}
.hr-sect::before,
.hr-sect::after {
	content: "";
	flex-grow: 1;
	background: rgba(0, 0, 0, 0.35);
	height: 1px;
	font-size: 0px;
	line-height: 0px;
	margin: 0px 8px;
}
<div class="hr-sect">CATEGORY</div>

SCSS Sürümü:

.hr-sect {
    display: flex;
    flex-basis: 100%;
    align-items: center;
    color: rgba(0, 0, 0, 0.35);
    margin: 8px 0;

    &:before, &:after {
        content: "";
        flex-grow: 1;
        background: rgba(0, 0, 0, 0.35);
        height: 1px;
        font-size: 0;
        line-height: 0;
        margin: 0 8px;
    }
}

1
Zarif bir çözüm olsa da, bir uyarı var: metin olmayacaksa, çizgiler arasında hala bir boşluk olacak.
Farside

13
Bu, bu konudaki en temiz çözüm dürüst olmak gerekirse, metin içermeyen sorun göz ardı edilebilir, çünkü her zaman metin içeren bölücü isteyeceksiniz.
Robert

51

Bunu dene:

.divider {
	width:500px;
	text-align:center;
}

.divider hr {
	margin-left:auto;
	margin-right:auto;
	width:40%;

}

.left {
	float:left;
}

.right {
	float:right;
}
<div class="divider">
    <hr class="left"/>TEXT<hr class="right" />
</div>

Canlı önizleme jsFiddle .


4
Mükemmel çalışır ve bu cevap ile yanlış ne olabilir yani <hr /> kullanır? Birşey demiyorum.
Kirby

4
+1 Arka plan rengiyle uğraşmanıza veya etiketleri istenmeyen şekillerde kullanmanıza gerek yoktur. Bir dezavantajı, .divider hrgenişliğin metnin ne kadar uzun olduğuna bağlı olmasıdır. Öneri: .dividerve.divider hr genişlikler embirim olarak belirtilmelidir . hrGenişlik elde etmek için ( .dividergenişlik eksi karakter sayısı) / 2 tuşunu kullanın .
Kelvin

12
Bu en iyi çözüm değil. Metnin genişliği hakkında kesinliğiniz yoksa ne olur? Metin daha uzun olacağı zaman her şey mahvolur.
Iwona Trąbka

Bu en iyi ve en basit cevap
ha9u63ar

1
% 40 burada yanlış. Metin daha uzunsa, yanlış hizalanmış olur
TomSawyer

21

Aynı problemle daha yeni karşılaştım, işte bunu çözmenin bir yolu var:

<table width="100%">
  <tr>
    <td><hr /></td>
    <td style="width:1px; padding: 0 10px; white-space: nowrap;">Some text</td>
    <td><hr /></td>
  </tr>
</table>

Metin öğesinde bir arka plan ayarlamadan çalışır, yani arkasındaki arka plandan bağımsız olarak iyi görünecektir.

Burada deneyebilirsiniz: http://jsfiddle.net/88vgS/


OP'nin problemini çözmez. Bu, aralarında metin bulunan iki satır oluşturur. Kısmen kesilmiş bir çizgi istiyor ve kesik bölümde metin var, sonra çizgi devam ediyor.
Dracorat

2
Aslında OP'nin istediği şeyi yapar. Bunu jsfiddle.net/88vgS
Robert

Ayrıca, aralarında metin bulunan iki satır değilse, kırık bölümdeki metinle birlikte kısmen kesilmiş bir çizgi nedir?
Robert Kajic

Buraya uygun TR etiketleri atmalısınız. Sanırım bir an için beni şaşırtan şey bu. Aslında bir nedenden dolayı üç satırda değil üç satırda olduğunu düşündüm. Doğru işaretleme muhtemelen onu bu şekilde görmeme neden olmazdı. Ne olursa olsun, kesinlikle uygulanabilir bir çözümdür.
Dracorat

1
Ama bu tabloları kullanır, bu bir İZİN VERİLMEDİ! Sadece şaka yapıyorum. GRIDS'in yeri vardır, neredeyse tüm diğer GUI XML çerçeveleri bunu tanır ve her yerde kullanır (örneğin WPF / XAML). Çözüm arkadaşı için teşekkürler! Bu 3'ten fazla oyu hak ediyor. İnsanların nefret edilen masalara olan nefretinin bir engel olacağından şüpheleniyorum.
Nicholas Petersen

10

GÜNCELLEME: Bu HTML5 kullanılarak çalışmaz

Bunun yerine, daha fazla teknik için bu soruya bakın: CSS zorluğu, daha fazla HTML girmeden bunu yapabilir miyim?


Eskiden guerilla-alumnus.comline-height:0 sitemin başlığında efekt oluşturuyordum

<div class="description">
   <span>Text</span>
</div>

.description {
   border-top:1px dotted #AAAAAA;
}

.description span {
   background:white none repeat scroll 0 0;
   line-height:0;
   padding:0.1em 1.5em;
   position:relative;
}

Başka bir iyi yöntem de http://robots.thoughtbot.com/ adresindedir.

Bir arka plan görüntüsü kullanır ve serin bir etki elde etmek için yüzer


1
Bunu beğendim, sitenizde harika görünüyor, ancak işe yaramadım (jQuery css'den parazit olduğundan şüpheleniyorum). :( Ama gerçekten harika.
Brian M. Hunt

Sanırım h1'iniz açıklığı aşağı itiyor.
20'de imns

1
Bu, DOCTYPE XTHML 1.0 Transitional için farklı oluşturma davranışını kullanan bir "hack" dir. DOCTYPE html (HTML5 için) kullanırsanız, çalışmaz.
Peter

6
<div style="text-align: center; border-top: 1px solid black">
  <div style="display: inline-block; position: relative; top: -10px; background-color: white; padding: 0px 10px">text</div>
</div>

6

CSS kullanabiliyorsanız ve kullanımdan kaldırılmış alignniteliği kullanmaya istekli iseniz, stilize edilmiş bir alan kümesi / açıklama işe yarayacaktır:

<style type="text/css">
fieldset { 
    border-width: 1px 0 0 0;
}
</style>

<fieldset>
<legend align="center">First Section</legend>
Section 1 Stuff
</fieldset>

<fieldset>
<legend align="center">Second Section</legend>
Section 2 Stuff
</fieldset>

Bir alan kümesinin amaçlanan amacı, form alanlarını mantıksal olarak gruplandırmaktır. Willoler'ın işaret ettiği gibi, öğeler text-align: centeriçin bir stil çalışmaz legend. align="center"HTML kullanımdan kaldırıldı, ancak metni tüm tarayıcılarda düzgün bir şekilde ortalamalıdır.


Ne istediğime dair daha ayrıntılı bir açıklama.
dclowd9901

Ben çok emin değilim <legend>bir görüntü özellikleri alır blockveya inline-blocko yastıklı olabilir gibi eleman ve hangi araçları margined text-align:centerolmamalı çalışma ...
dclowd9901

evet efsaneler semantik için harika - radyo gruplarını sarmak için kullanıyorum ama kötü bir şekilde inatçı
willoller

Cevabımı düzelttim. Ne yazık ki legendöğeyi şekillendirirken belirli tarayıcıların inatçılık nedeniyle align="center", güvenilir bir şekilde bulabildiğim tek çözümdür a legend.
Trey Hunner

6

Bootstrap ızgarası:

HTML:

  <div class="row vertical-center">
    <div class="col-xs-5"><hr></div>
    <div class="col-xs-2" style="color: white"> Text</div>
    <div class="col-xs-5"><hr></div>
  </div>

CSS:

.vertical-center{
  display: flex;
  align-items: center;
}

1
vertical-centerSınıf artık bootstrap (4.3.1) bulunmaktadır. Lütfen yanıtınızı güncelleyebilir misiniz align-items-center?
Cameron Hudson

5

Sadece göreli konum kullanabilirsiniz ve üst öğe için bir yükseklik ayarlayabilirsiniz

.fake-legend {
  height: 15px;
  width:100%;
  border-bottom: solid 2px #000;
  text-align: center;
  margin: 2em 0;
}
.fake-legend span {
  background: #fff;
  position: relative;
  top: 0;
  padding: 0 20px;
  line-height:30px;
}
<p class="fake-legend"><span>Or</span>
</p>


5

Heres sadece css ile basit bir çözüm, arka plan hilesi yok ...

.center-separator {
    display: flex;
  line-height: 1em;
  color: gray;
}

.center-separator::before, .center-separator::after {
    content: '';
    display: inline-block;
    flex-grow: 1;
    margin-top: 0.5em;
    background: gray;
    height: 1px;
    margin-right: 10px;
    margin-left: 10px;
  }

HTML:

  <div class="center-separator">
    centered text
  </div>

örnek keman: https://jsfiddle.net/0Lkj6wd3/


Fayda sınıfı gibi harika ve tekrar kullanılabilir bir çözüm.
Vignesh

3
<fieldset style="border:0px; border-top:1px solid black">
    <legend>Test</legend>
</fieldset>

Kötü hack ...


1
Buna bir kesmek demezdim, ama desteklemeyi düşündüğünüz tüm tarayıcılarda çalıştığını test ederdim.
Nick Larsen

fieldset böyle kullanmak istemiyor, yerine hacklendi ;-)
Dänu

3

2 yaşındaki bir görevde darbelere, ama işte bu durumlara sadece bir element ve CSS kullanarak yaklaşıyorum.

​h1 {
    text-align: center;
}

h1:before,
h1:after {
    content: "";
    background: url('http://heritageonfifth.com/images/seperator.png') left center repeat-x;
    width: 15%;
    height: 30px;
    display: inline-block;
    margin: 0 15px 0 0;
}

h1:after{
    background-position: right center;
    margin: 0 0 0 15px;
}

Ve kontrol etmek için bir keman: http://jsfiddle.net/sRhBc/ (sınırdan alınan Google'dan rastgele görüntü).

Bu yaklaşımın tek dezavantajı IE7'yi desteklememesidir.


3

Sadece kullan

    hr
    {
        padding: 0;
        border: none;
        border-top: 1px solid #CCC;
        color: #333;
        text-align: center;
        font-size: 12px;
        vertical-align:middle;
    }
    hr:after
    {
        content: "Or";
        display: inline-block;
        position: relative;
        top: -0.7em;
        font-size: 1.2em;
        padding: 0 0.25em;
        background: white;
    }

2

Woohoo benim ilk yazı bu bir yaşında olmasına rağmen. Sarmalayıcılarla arka plan boyama sorunlarından kaçınmak için, hr ile satır içi bloğu kullanabilirsiniz (kimse bunu açıkça söylemedi). Metin hizalama, satır içi öğeler oldukları için doğru şekilde ortalanmalıdır.

<div style="text-align:center">
    <hr style="display:inline-block; position:relative; top:4px; width:45%" />
       &nbsp;New Section&nbsp;
    <hr style="display:inline-block; position:relative; top:4px; width:45%" />
</div>

2

h1Ortada açıklıklı bir a kullanıyorum .

HTML Örneği:

<h1><span>Test archief</span></h1>

CSS Örneği:

.archive h1 {border-top:3px dotted #AAAAAA;}
.archive h1 span { display:block; background:#fff; width:200px; margin:-23px auto; text-align:center }

Bu kadar basit.


StackOverflow'a hoş geldiniz, Youri. A yerine a spankullanmayı düşünebilirsiniz div. Doğal olarak bir blok elemanı olması dışında aynı amaca hizmet eder. :)
Nix

@ Satır içi öğenin içindeki Blok öğesi? Hayır teşekkürler, span iyi bir seçim
Jonathan Azulay

1
@MrAzulay h1bir satır içi öğedir. spansarma şeyler için güzel, ama ben tercih sebebi divYouri kullanımı CSS ayarlamak için çünkü bu durumda, olduğu spaniçin display:block;. Kullanılabilir uygun blok elemanları ( div) olduğunda, bir satır elemanı içine bir satır elemanı yapma noktasını görmüyorum .
Nix

@Nix Bu oldukça yaygın bir şey değil mi? Inline içine blok koymak kötü uygulama imo. Bu konuda iyi bir yazı, skypoetsworld.blogspot.se/2008/10/…
Jonathan Azulay

Hata! Son yorumumda yanlış yazmıştım. Bir satır içi öğenin içine bir blok yerleştirmemeniz gerektiğini kabul ediyorum, ancak h1aslında bir BLOCK öğesi. Karışıklık için özür dilerim. Yine de, spanbir blok unsuru haline getirme noktasını görmüyorum , ama yeterince adil.
Nix

2

Yukarıya baktığımda şu şekilde değiştirdim:

CSS

.divider {
    font: 33px sans-serif;
    margin-top: 30px;
    text-align:center;
    text-transform: uppercase;
}
.divider span {
    position:relative;
}
.divider span:before, .divider span:after {
    border-top: 2px solid #000;
    content:"";
    position: absolute;
    top: 15px;
    right: 10em;
    bottom: 0;
    width: 80%;
}
.divider span:after {
    position: absolute;
    top: 15px;
    left:10em;
    right:0;
    bottom: 0;
}

HTML

<div class="divider">
    <span>This is your title</span></div>

İyi çalışıyor gibi görünüyor.


2

@ Kajic'in çözümünü almak ve stili CSS'ye koymak:

<table class="tablehr">
  <td><hr /></td>
  <td>Text!</td>
  <td><hr /></td>
</table>

Sonra CSS (ancak n. Seçici kullanılarak CSS3'e bağlıdır):

.tablehr { width:100%; }
.tablehr > tbody > tr > td:nth-child(2) { width:1px; padding: 0 10px; white-space: nowrap; }

Şerefe.

(PS tbody ve tr, Chrome, IE ve Firefox en azından otomatik olarak bir tbody ve tr ekler. 2013 itibariyle IE, Chrome ve Firefox'un en yeni sürümleriyle test edilmiştir).


2

DEMO SAYFASI

HTML

<header>
  <h1 contenteditable>Write something</h1>
</header>

CSS

header{ 
  display:table;
  text-align:center; 
}
header:before, header:after{ 
  content:'';
  display:table-cell; 
  background:#000; 
  width:50%;
  -webkit-transform:scaleY(0.3);
  transform:scaleY(0.3);
}
header > h1{ white-space:pre; padding:0 15px; }

2

Bu benim için çalıştı ve bir kenarlık çizgisini gizlemek için metnin arkasında arka plan rengi gerektirmez, bunun yerine gerçek hr etiketi kullanır. Farklı boyutlarda İK çizgileri elde etmek için genişliklerle oynayabilirsiniz.

<div>
    <div style="display:inline-block;width:45%"><hr width='80%' /></div>
    <div style="display:inline-block;width: 9%;text-align: center;vertical-align:90%;text-height: 24px"><h4>OR</h4></div>
    <div style="display:inline-block;width:45%;float:right" ><hr width='80%'/></div>
</div>

2

Bir keman yaptımFlexBox kullanan ve size farklı İK stilleri (çift çizgi, çizginin ortasındaki semboller, alt gölge, iç metin, kesik, vb.) Vereceğim.

CSS

button {
    padding: 8px;
    border-radius: 4px;
    background-color: #fff;
    border: 1px solid #ccc;
    margin: 2px;
  }

  button:hover {
    cursor: pointer;
  }

  button.active {
    background-color: rgb(34, 179, 247);
    color: #fff;
  }

  .codeBlock {
    display: none;
  }

  .htmlCode, .cssCode {
    background-color: rgba(34, 179, 247, 0.5); 
    width: 100%;
    padding: 10px;
  }

  .divider {
    display: flex;
    flex-direction: row;
    flex-flow: row;
    width: 100%;
  }

  .divider.fixed {
    width: 400px;
  }

  .divider > label {
    align-self: baseline;
    flex-grow: 2;
    white-space: nowrap;
  }

  .divider > hr {
    margin-top: 10px;
    width: 100%;
    border: 0;
    height: 1px;
    background: #666;
  }

  .divider.left > label {
    order: 1;
    padding-right: 5px;
  }

  .divider.left > hr {
    order: 2
  }

  .divider.right > label {
    padding-left: 5px;
  }
  /* hr bars with centered text */
  /* first HR in a centered version */

  .divider.center >:first-child {
    margin-right: 5px;
  }
  /* second HR in a centered version */

  .divider.center >:last-child {
    margin-left: 5px;
  }
  /** HR style variations **/

  hr.gradient {
    background: transparent;
    background-image: linear-gradient(to right, #f00, #333, #f00);
  }

  hr.gradient2 {
    background: transparent;
    background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(255, 0, 0, 0.5), rgba(0, 0, 0, 0));
  }

  hr.dashed {
    background: transparent;
    border: 0;
    border-top: 1px dashed #666;
  }

  hr.dropshadow {
    background: transparent;
    height: 12px;
    border: 0;
    box-shadow: inset 0 12px 12px -12px rgba(0, 0, 0, 0.5);
  }

  hr.blur {
    background: transparent;
    border: 0;
    height: 0;
    /* Firefox... */
    box-shadow: 0 0 10px 1px black;
  }

  hr.blur:after {
    background: transparent;
    /* Not really supposed to work, but does */
    content: "\00a0";
    /* Prevent margin collapse */
  }

  hr.inset {
    background: transparent;
    border: 0;
    height: 0;
    border-top: 1px solid rgba(0, 0, 0, 0.1);
    border-bottom: 1px solid rgba(255, 255, 255, 0.3);
  }

  hr.flared {
    background: transparent;
    overflow: visible;
    /* For IE */
    height: 30px;
    border-style: solid;
    border-color: black;
    border-width: 1px 0 0 0;
    border-radius: 20px;
  }

  hr.flared:before {
    background: transparent;
    display: block;
    content: "";
    height: 30px;
    margin-top: -31px;
    border-style: solid;
    border-color: black;
    border-width: 0 0 1px 0;
    border-radius: 20px;
  }

  hr.double {
    background: transparent;
    overflow: visible;
    /* For IE */
    padding: 0;
    border: none;
    border-top: medium double #333;
    color: #333;
    text-align: center;
  }

  hr.double:after {
    background: transparent;
    content: "§";
    display: inline-block;
    position: relative;
    top: -0.7em;
    font-size: 1.5em;
    padding: 0 0.25em;
  }

HTML

<div class="divider left">
  <hr />
  <label>Welcome!</label>
</div>
<p>&nbsp;</p>
<div class="divider right">
  <hr />
  <label>Welcome!</label>
</div>
<p>&nbsp;</p>
<div class="divider center">
  <hr />
  <label>Welcome!</label>
  <hr />
</div>
<p>&nbsp;</p>
<div class="divider left fixed">
  <hr />
  <label>Welcome!</label>
</div>
<p>&nbsp;</p>
<div class="divider right fixed">
  <hr />
  <label>Welcome!</label>
</div>
<p>&nbsp;</p>
<div class="divider center fixed">
  <hr />
  <label>Welcome!</label>
  <hr />
</div>

Veya burada etkileşimli bir Keman: http://jsfiddle.net/mpyszenj/439/


2

fieldset"Legend" öğesini ("sonraki bölüm" metniniz) yalnızca border-topkümeyle alanın ortasına hizalamayı deneyebilirsiniz . Bir efsanenin fieldset öğesine göre nasıl yerleştirildiğinden emin değilim. Bunun basit bir şey olabileceğini hayal ediyorummargin: 0px autoYine de, hile yapmanın .

misal :

<fieldset>
      <legend>Title</legend>
</fieldset>

1

Bunu olmadan yapabilirsiniz <hr />. Anlamsal olarak, tasarım CSS araçlarıyla yapılmalıdır, bu durumda oldukça mümkündür.

div.header
{
  position: relative;
  text-align: center;
  padding: 0 10px;
  background: #ffffff;
}

div.line
{
  position: absolute;
  top: 50%;
  border-top: 1px dashed;
  z-index: -1;
}

<div class="header">
  Next section
  <div class="line">&nbsp;</div>
</div>

1

Her zaman iyi eski FIELDSET vardır

 fieldset
 {
border-left: none;
border-right: none;
border-bottom: none;
 }
 fieldset legend
 {
text-align: center;
padding-left: 10px;
padding-right: 10px;
 }

Alan kümeleri yalnızca formlarla kullanılmalıdır.
tehlivi

1

html

<div style="display: grid; grid-template-columns: 1fr 1fr 1fr;" class="add-heading">
    <hr class="add-hr">
    <h2>Add Employer</h2>
    <hr class="add-hr">
</div>

css

.add-hr { 
    display: block; height: 1px;
    border: 0; border-top: 4px solid #000;
    margin: 1em 0; padding: 0; 
  }

.add-heading h2{
  text-align: center;
}

0

CSS

.Divider {
width: 100%; height: 30px;  text-align: center;display: flex;
}
.Side{
width: 46.665%;padding: 30px 0;
}
.Middle{
width: 6.67%;padding: 20px 0;
}

HTML

<div class="Divider">
    <div class="Side"><hr></div>
    <div class="Middle"><span>OR</span></div>
    <div class="Side"><hr></div>
</div>

"Span" sınıfındaki genişliği, "span" etiketindeki metninizin uzunluğuna göre değiştirebilirsiniz. "Orta" nın genişliğinin ve "yan" ın genişliğinin% 100'üne eşit olduğundan emin olun.


0

Duyarlı, şeffaf arka plan, değişken bölücü yüksekliği ve stili, metnin değişken konumu, bölücü ve metin arasında ayarlanabilir mesafe. Aynı projede birden çok bölücü stili için farklı seçicilerle birden çok kez uygulanabilir.
Aşağıdaki SCSS.

İşaretleme (HTML):

<div class="divider" text-position="right">Divider</div>

CSS :

.divider {
  display: flex;
  align-items: center;
  padding: 0 1rem;
}

.divider:before,
.divider:after {
  content: '';
  flex: 0 1 100%;
  border-bottom: 5px dotted #ccc;
  margin: 0 1rem;
}

.divider:before {
  margin-left: 0;
}

.divider:after {
  margin-right: 0;
}

.divider[text-position="right"]:after,
.divider[text-position="left"]:before {
  content: none;
}

olmadan text-position varsayılan olarak ortalanır.

Demo:

Ve SCSS , hızlı bir şekilde değiştirmek için:

$divider-selector    : ".divider";
$divider-border-color: rgba(0,0,0,.21);
$divider-padding     : 1rem;
$divider-border-width: 1px;
$divider-border-style: solid;
$divider-max-width   : 100%;

#{$divider-selector} {
    display: flex;
    align-items: center;
    padding: 0 $divider-padding;
    max-width: $divider-max-width;
    margin-left: auto;
    margin-right: auto;

    &:before,
    &:after {
        content: '';
        flex: 0 1 100%;
        border-bottom: $divider-border-width $divider-border-style $divider-border-color;
        margin: 0 $divider-padding;
        transform: translateY(#{$divider-border-width} / 2)
    }

    &:before {
        margin-left: 0;
    }

    &:after {
        margin-right: 0;
    }

    &[text-position="right"]:after,
    &[text-position="left"]:before {
        content: none;
    }
}

burada keman .


Merhaba, kod snippet'ini gerçekten takdir ediyorum. İngilizce dışında bir bölücü içeren bir metin koyarsam (benim durumumda, korece), her iki harfte metinler kesilir. Nedenini bulabilir misin?
cadenzah

0

.orSpan{
  position: absolute;
  margin-top: -1.3rem;
  margin-left:50%;
  padding:0 5px;
  background-color: white;
}
<div>
   <hr> <span class="orSpan">OR</span>
</div>

Margin özelliğini ayarlamanız gerekebilir


0
<div class="divider-line-x"><span>Next section</span></div>
/***** Divider *****/

.divider-line-x {
    position: relative;
    text-align: center; 
    font-family: Arial; 
    font-weight: bold;
    font-size: 12px;    
    color: #333;
    border-bottom: 1px dashed #ccc;
}

.divider-line-x span {
    position: relative; 
    top: 10px;
    padding: 0 25px;    
    background: #fff;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.