Jak zrobić pionową linię w HTML

335

Jak utworzyć linię pionową za pomocą HTML?

Gopal
źródło
39
Czy W3 nie może być po prostu mądrzejszy i dodać specyfikację<vr>
OverCoder

Odpowiedzi:

545

Umieść <div>znacznik wokół miejsca, w którym ma się pojawić linia, i użyj stylów CSS:

.verticalLine {
  border-left: thick solid #ff0000;
}
<div class="verticalLine">
  some other content
</div>

Kris van der Mast
źródło
3
Łączenie stylu z treścią nie jest dla wielu tabu. <div style = "border-left: thin solid # 0000ff"> Nie mam nic do powiedzenia i mówię to </div>
ctpenrose
15
@ctpenrose To rzeczywiście nie jest tabu, ale ich oddzielenie jest przydatne, ponieważ w razie potrzeby można łatwo dostosować w jednym miejscu. Również umieszczenie go w osobnym pliku CSS jest lepsze dla wydajności, ponieważ może być buforowane przez przeglądarkę i kończy się przesyłaniem mniejszej ilości bajtów przez drut za każdym razem, gdy żądasz renderowanego HTML.
Kris van der Mast
235

Za pomocą znacznika reguły poziomej można tworzyć pionowe linie.

<hr width="1" size="500">

Dzięki zastosowaniu minimalnej szerokości i dużego rozmiaru reguła pozioma staje się pionową.

Anthony
źródło
7
Brawo, proszę pana. To fajna sztuczka. Nadal trzeba ustawić go w display:inline-blockprzeciwnym razie nie będzie ładnie siedzieć obok innych elementów wbudowanych.
Alex W
2
Nie sądzę jednak, aby działało to w przeglądarce Firefox. Linia jest tam, ale wydaje się, że nie jest widoczna ...
Edd
2
Dzięki za ten kod. Oto działający przykład jsfiddle tego jsfiddle.net/ccatto/c8RQc
Catto
Giulio, ponieważ tak naprawdę nie dzieli ekranu na dwie kolumny. znowu musisz użyć trochę css dla pożądanego rezultatu, tak jak div.
Ismail Sahin
Podoba mi się to bardziej, ponieważ pozwala uniknąć dziwności posiadania ukrytego diva z widoczną tylko jedną stroną. To prawda, że ​​nie jest to sposób, w jaki zwykle używasz hr, ale nadal ma to dla mnie większy sens.
levininja
71

Możesz użyć pustego <div>stylu, który jest dokładnie taki, jak chcesz, aby pojawiała się linia:

HTML:

<div class="vertical-line"></div>

Z dokładną wysokością (nadrzędny styl w linii):

  div.vertical-line{
      width: 1px; /* Line width */
      background-color: black; /* Line color */
      height: 100%; /* Override in-line if you want specific height. */
      float: left; /* Causes the line to float to left of content. 
        You can instead use position:absolute or display:inline-block
        if this fits better with your design */
    }
<div class="vertical-line" style="height: 45px;"></div>

Nadaj styl ramce, jeśli chcesz wyglądać 3D:

    div.vertical-line{
      width: 0px; /* Use only border style */
      height: 100%;
      float: left; 
      border: 1px inset; /* This is default border style for <hr> tag */
    }
   <div class="vertical-line" style="height: 45px;"></div>

Możesz oczywiście także eksperymentować z zaawansowanymi kombinacjami:

  div.vertical-line{
      width: 1px;
      background-color: silver;
      height: 100%;
      float: left;
      border: 2px ridge silver ;
      border-radius: 2px;
    }
 <div class="vertical-line" style="height: 45px;"></div>

groza
źródło
1
+1 to rozwiązanie jest dobre, ponieważ można je łatwo dostosować do różnych potrzeb
Fanckush
31

Możesz także utworzyć linię pionową za pomocą poziomej linii HTML <hr />

html, body{height: 100%;}

hr.vertical {
  width: 0px;
  height: 100%;
  /* or height in PX */
}
<hr class="vertical" />

Ishan Jain
źródło
1
Świetna sztuczka, aby uzyskać styl linii taki sam jak standardowy <hr>. Prawdopodobnie również potrzebują dodatkowej stylizacji do pływaka na stronie treści (przykładowo float:left;)
respekt
Ta „pionowa” reguła wciąż rozdziela (tekst) elementy pionowo, jak normalna pozioma reguła.
Qwerty
20

Nie ma pionowego odpowiednika <hr>elementu. Jednak jednym z podejść, które możesz wypróbować, jest użycie prostej ramki po lewej lub prawej stronie tego, co oddzielasz:

#your_col {
  border-left: 1px solid black;
}
<div id="your_col">
  Your content here
</div>

Daniel Vassallo
źródło
17

Elementy niestandardowe HTML5 (lub czysty CSS)

wprowadź opis zdjęcia tutaj

1. javascript

Zarejestruj swój element.

var vr = document.registerElement('v-r'); // vertical rule please, yes!

* -Jest obowiązkowy we wszystkich niestandardowych elementach.

2. css

v-r {
    height: 100%;
    width: 1px;
    border-left: 1px solid gray;
    /*display: inline-block;*/    
    /*margin: 0 auto;*/
}

* Być może będziesz musiał trochę pogrzebać, display:inline-block|inlineponieważ inlinenie rozwija się do wysokości elementu. Użyj marginesu, aby wyśrodkować linię w kontenerze.

3. utworzyć wystąpienie

js: document.body.appendChild(new vr());
or
HTML: <v-r></v-r>

* Niestety nie można tworzyć niestandardowych tagów samozamykających.

stosowanie

 <h1>THIS<v-r></v-r>WORKS</h1>

wprowadź opis zdjęcia tutaj

przykład: http://html5.qry.me/vertical-rule


Nie chcesz zadzierać z javascript?

Po prostu zastosuj tę klasę CSS do wyznaczonego elementu.

css

.vr {
    height: 100%;
    width: 1px;
    border-left: 1px solid gray;
    /*display: inline-block;*/    
    /*margin: 0 auto;*/
}

* Patrz uwagi powyżej.

Qwerty
źródło
Przykro mi z powodu ograniczeń, ale wygląda to naprawdę, bardzo przydatne w niektórych innych miejscach.
Smar
Nie wypełnia wszystkich rozmiarów div, jak to naprawić?
Otávio Barreto
1
@ OtávioBarreto Być może trzeba będzie majstrować przy komentowanej displaynieruchomości. Ustaw na jeden inlinelub inline-block. Zobacz uwagi powyżej i przykładowy adres URL.
Qwerty
9

Inną opcją jest użycie obrazu 1-pikselowego i ustawienie wysokości - ta opcja pozwoli Ci przenieść go tam, gdzie chcesz.

Nie jest to jednak najbardziej eleganckie rozwiązanie.

Chris
źródło
1
nic złego z tą metodą, w rzeczywistości używają jej na stronie jquery
stephenmurdoch
6

Możesz narysować linię pionową, po prostu używając wysokości / szerokości z dowolnym elementem HTML.

#verticle-line {
  width: 1px;
  min-height: 400px;
  background: red;
}
<div id="verticle-line"></div>

Aamir Shahzad
źródło
5

Nie ma żadnego znacznika do utworzenia pionowej linii w HTML.

  1. Metoda: ładujesz obraz linii. Następnie ustaw swój styl"height: 100px ; width: 2px"

  2. Metoda: Możesz użyć <td>tagów<td style="border-left: 1px solid red; padding: 5px;"> X </td>

onurbaysan
źródło
4

Możesz użyć znacznika hr (pozioma linia), a następnie obrócić go o 90 stopni za pomocą css poniżej

hr {   
    transform:rotate(90deg);
    -o-transform:rotate(90deg);
    -moz-transform:rotate(90deg);
    -webkit-transform:rotate(90deg);
}

http://jsfiddle.net/haykaghabekyan/0c969bm6/1/

Hayk Aghabekyan
źródło
Spowoduje to uszkodzenie dowolnego tekstu lub elementów stojących obok.
Qwerty,
4

Użyłem kombinacji sugerowanego kodu „hr” i oto, jak wygląda mój kod:

<hr style="width:0.5px; height:500px; position: absolute; left: 315px;"/>

Po prostu zmieniłem wartość „lewego” piksela, aby go ustawić. (Użyłem pionowej linii do uszeregowania treści na mojej stronie, a następnie ją usunąłem).

Chłopak
źródło
4

Aby utworzyć pionową linię wyśrodkowaną w div, myślę, że możesz użyć tego kodu. „Pojemnik” może mieć chyba 100% szerokości.

div.container {
  width: 400px;
}

div.vertical-line {
  border-left: 1px solid #808080;
  height: 350px;
  margin-left: auto;
  margin-right: auto;
  width: 1px;
}
<div class="container">
  <div class="vertical-line">&nbsp;</div>
</div>

Edd
źródło
Najlepsze Answear, wszystkie inne utknęły w lewo lub w prawo. Dzięki!
Abdelhadi Lahlou
3

Dlaczego nie użyć & # 124, który jest znakiem specjalnym HTML dla |

Lance Caraccioli
źródło
2
Ponieważ nie jest to linia pionowa
OverCoder
3

Jeśli Twoim celem jest umieszczenie pionowych linii w kontenerze w celu oddzielenia obok siebie elementów potomnych (elementów kolumny), możesz rozważyć stylizację kontenera w następujący sposób:

.container > *:not(:first-child) {
  border-left: solid gray 2px;
}

Dodaje to lewą ramkę do wszystkich elementów potomnych, począwszy od drugiego dziecka. Innymi słowy, otrzymujesz pionowe granice między sąsiadującymi dziećmi.

  • >jest selektorem dzieci. Pasuje do dowolnego elementu podrzędnego elementu określonego po lewej stronie.
  • *jest uniwersalnym selektorem. Pasuje do elementu dowolnego typu.
  • :not(:first-child) oznacza, że ​​nie jest to pierwsze dziecko jego rodzica.

Obsługa przeglądarki: > *: first-child i : not ()

Myślę, że to lepsze niż proste .child-except-first {border-left: ...} reguła, ponieważ bardziej sensowne jest, aby pionowe linie pochodziły z reguł kontenera, a nie reguł różnych elementów potomnych.

To, czy jest to lepsze niż użycie prowizorycznego elementu reguły pionowej (poprzez stylowanie reguły poziomej itp.), Będzie zależeć od twojego przypadku użycia, ale jest to przynajmniej alternatywa.

S. Kirby
źródło
3

Możliwe jest jeszcze jedno podejście: użycie SVG .

np .:

<svg height="210" width="500">
    <line x1="0" y1="0" x2="0" y2="100" style="stroke:rgb(255,0,0);stroke-width:2" />
      Sorry, your browser does not support inline SVG.
</svg>

Plusy:

  • Możesz mieć linię o dowolnej długości i orientacji.
  • Możesz łatwo określić szerokość i kolor

Cons :

  • Pliki SVG są teraz obsługiwane w większości nowoczesnych przeglądarek. Ale niektóre stare przeglądarki (np. IE 8 i starsze) nie obsługują tego.
Sachin
źródło
3

Linia pionowa bezpośrednio do div

    <div style="width:50%">
        <div style="border-right:1px solid;">
            <ul>
                <li>
                    Empty div didn't shows line
                </li>
                <li>
                    Vertical line length depends on the content in the div
                </li>
                <li>
                    Here I am using inline style. You can replace it by external style or internal style.
                </li>
            </ul>
        </div>
    </div>
  

Linia pionowa w lewo do div

    <div style="width:50%">
        <div style="border-left:1px solid;">
            <ul>
                <li>
                    Empty div didn't shows line
                </li>
                <li>
                    Vertical line length depends on the content in the div
                </li>
                <li>
                    Here I am using inline style. You can replace it by external style or internal style.
                </li>
            </ul>
        </div>
    </div>
  

Pranav VR
źródło
2

Aby dodać linię pionową, musisz stylizować godz.

Teraz, gdy utworzysz linię pionową, pojawi się ona na środku strony:

<hr style="width:0.5px;height:500px;"/>

Teraz, aby umieścić go tam, gdzie chcesz, możesz użyć tego kodu:

<hr style="width:0.5px;height:500px;margin-left:-500px;margin-right:500px;"/>

Spowoduje to ustawienie go w lewo, możesz go odwrócić, aby ustawić go w prawo.

Peter Georges Bou Saada
źródło
2

Jest <hr>znacznik dla linii poziomej. Można go używać z CSS do tworzenia linii poziomej również:

.divider{
    margin-left: 5px;
    margin-right: 5px;
    height: 100px;
    width: 1px;
    background-color: red;
}
<hr class="divider">

Właściwość width określa grubość linii. Właściwość height określa długość linii. Właściwość kolor tła określa kolor linii.

Muminur Rahman
źródło
1

W poprzednim elemencie, po którym chcesz zastosować wiersz pionowy, możesz ustawić CSS ...

border-right-width: thin;
border-right-color: black;
border-right-style: solid;
Abhishek Mathur
źródło
1

Obróć o <hr>90 stopni:

<hr style="width:100px; transform:rotate(90deg);">

Rozwiązania MeKoo
źródło
0

Dla stylu wbudowanego użyłem tego kodu:

<div style="border-left:1px black solid; position:absolute; left:50%; height:300px;" />

i to umieściło go bezpośrednio w centrum.

James Drinkard
źródło
0

Potrzebowałem liniowej linii pionowej, więc oszukałem przycisk, aby stać się linią.

<button type="button" class="v_line">l</button>

.v_line {
         width: 0px;
         padding: .5em .5px;
         background-color: black;
         margin: 0px; 4px;
        }
Nikki
źródło
0
<div style="width:1px;background-color:#C0C0C0;"></div>

To zadziałało dla mnie świetnie

Lucas
źródło
-1

Aby ustawić linię pionową na środku w środku, użyj:

position: absolute; 
left: 50%;
andr3wll
źródło
zapytał, jak zrobić linię pionową, a nie jak ustawić linię środkową na środku
Bloodhound