HTML'de bir vr (dikey kural) var mı?


133

Html'de hr (yatay kural) olduğunu biliyorum, ancak bir vr (dikey kural) olduğuna inanmıyorum. Yanılıyor muyum ve değilse neden dikey bir kural yok?


17
Bu kesin olmayan bir sorudur, ancak artık CSS3 spesifikasyonu ile, dikey, yatay bir kural oluşturmak için transform: rotate (90deg) kullanabilirsiniz.
Jules

3
Flexbox'ı satırlar olarak kullanırsanız (display: flex; flex-direction: row;) hröğeler otomatik olarak dikey hale gelecektir. Sadece heightözelliğini ayarlamanız gerekir (örneğin, yükseklik:% 80;).
Rodrigo

Yanıtlar:


156

Hayır, dikey kural yoktur.

Birine sahip olmak mantıklı değil. HTML sırayla ayrıştırılır, yani HTML kodunuzu yukarıdan aşağıya, soldan sağa, yukarıdan aşağıya, soldan sağa (genellikle) görünmesini istediğiniz şekilde düzenlersiniz.

Bir vr etiketi bu paradigmayı takip etmez.

Ancak bunu CSS kullanarak yapmak kolaydır. Ör:

<div style="border-left:1px solid #000;height:500px"></div>

Bir yükseklik belirtmeniz veya kabı içerikle doldurmanız gerektiğini unutmayın.


4
Tablolar öğeleri dikey olarak ayırabilir, bu nedenle vr etiketi olmamasının gerçek nedeni söylediğiniz şey değildir.
CiscoIPPhone

6
HTML spesifikasyonuna tabloların eklenmesinin nedeni bu değildi. Tablolar, tablo halindeki verileri görüntülemek içindir. Hemen hemen herhangi bir HTML elemanı dikey ayrı öğeler için kullanılabilir (şey size ekrana ayarlayın: blok ve şamandıra: herhangi bir yükseklik seti ile sol)
Andy Baird

19
erf. Eğer şeyler zaten dikey olarak ayrılabiliyorsa, vr eklemek nasıl HTML paradigmasını takip etmez?
CiscoIPPhone

4
@CiscoIPPhone - Dikey ayırma yatay bir kural gerektirir. Yanal ayırma, dikey bir kural gerektirir. Ergo, Andy Baird haklı sanırım.
Joshua

3
Paradigmayı takip etmediği konusunda hemfikir değilim. Dediğin gibi, yukarıdan aşağıya, soldan sağa sırayla ayrıştırılır. Soldan sağa giden içeriği dikey bir kuralla bölebilirsiniz. HTML'nin daha önceki günlerinde bunun mantıklı olmayacağına katılıyorum. Şimdi dikey bir kural, anlamsal olarak doğru bir etiket olmasa da, html'de sıklıkla kullanılan bir şeydir. Sadece iki sentim.
Hendeca

37

Şuna benzer bir dikey kural yapabilirsiniz: <hr style="width: 1px; height: 20px; display: inline-block;">


16

Başkalarının da işaret ettiği gibi, dikey bir kural kavramı, HTML belgelerinin yapısı ve sunumunun arkasındaki orijinal fikirlere uymaz. Bununla birlikte, bu günlerde (özellikle web uygulamalarının yaygınlaşmasıyla) bunun gerçekten yararlı olacağı az sayıda senaryo var.

Örneğin, çoğu pencereli GUI uygulamasındaki menü çubuğuna benzer şekilde, ekranın üst kısmına sabitlenmiş yatay bir gezinme menüsünü düşünün. Soldan sağa düzenlenmiş ve tıklandığında aşağı açılır menüleri açan birkaç üst düzey menü öğeniz vardır. Yıllar önce, bunu tek satırlı bir tablo ile oluşturmak yaygın bir uygulamadır, ancak bu kötü HTML'dir ve doğru yolun yoğun şekilde özelleştirilmiş CSS içeren bir liste olacağı yaygın olarak kabul edilmektedir.

Şimdi, benzer öğeleri gruplamak istediğinizi, ancak şöyle bir şey elde etmek için gruplar arasına dikey bir ayırıcı eklemek istediğinizi varsayalım:

[Item 1a] [Item 1b] | [Item 2a] [Item 2b]

<hr style="width: 1px; height: 100%; ..." />Çalışmaları kullanmak , ancak bu öğenin gerçekte ne için olduğunu değiştirdiğiniz için anlamsal olarak yanlış kabul edilebilir. Ayrıca, HTML DTD'nin yalnızca satır içi öğelere izin verdiği belirli öğelerde (örneğin bir <span>öğe içinde ) bunu kullanamazsınız .

Daha iyi bir seçenek <span style="display: inline-block; width:1px; height:100%; background:#000; margin: 0 2px;"></span>, ancak tüm tarayıcılar display: inline-block;CSS özelliğini desteklemeyecektir , bu nedenle tek gerçek satır içi seçenek, aşağıdaki gibi bir görüntü kullanmaktır:

<img src="pixel.gif" alt="|" style="width:1px; height:100%; background:#000; margin: 0 2px;" />

Bu, görüntü yerine dikey çizgi karakteri görüntülendiğinden, salt metin tarayıcılarla (lynx gibi) uyumlu olma avantajına sahiptir. (M $ IE'nin yanlış bir şekilde alt metni bir araç ipucu olarak kullanması beni hala rahatsız ediyor; başlık niteliği bunun için!)


8
<style type="text/css">
.vr
{
  display:inline;
  height:100%;
  width:1px;
  border:1px inset;
  margin:5px
}
</style>

<div style="font-size:50px">Vertical Rule: &rarr;<div class="vr"></div>&larr;</div>

Denemek.


8

Bir ekran: flex içindeki bir <hr> dikey olarak görüntülenmesini sağlayacaktır.

JSFiddle: https://jsfiddle.net/w6y5t1kL/

Misal:

<div style="display:flex;">
  <div>
    Content
    <ul>
      <li>Continued content...</li>
    </ul>
  </div>
  <hr>
  <div>
    Content
    <ul>
      <li>Continued content...</li>
    </ul>
  </div>
</div>

7

Peki ya:

writing-mode:tb-rl

Nerede üst-> alt, sağ-> sol?

Bunun için dikey kurala ihtiyacımız olacak.


İyi bir noktaya değindin. Ancak, domaindeki diğer tüm unsurlarla rekabet etmek zorunda olduğunuz için sayfayı alışılmadık bir şekilde oluşturmak anlamına gelir. Bazen tarayıcılar arasında işleme farklılıkları olduğunu fark ettiniz mi? ;) ~ Yine de, çok iyi bir nokta .
jcolebrand

3

Yok, nereye gidecek?

Böyle bir şey istiyorsanız, bir öğeye kenarlık koymak için CSS kullanın.


2

HTML, içerik düzeninin tipografik yapısı nedeniyle çok az dikey konumlandırmaya sahiptir veya hiç yoktur. Dikey Kural, anlamlarına uymuyor.


2

Deneyin ve kendinizi tanıyacaksınız:

<body>
rokon<br />
rkn <hr style="width: 1px; height: 10px; display: inline; margin-left: 2px; margin-right: 2px;" />rockon<br />
rocks
</body>
</html>

2

2 şekilde yapabilirsiniz:

  1. div'de zaten verdiğiniz gibi stil oluşturun, ancak border-left'i border-right olarak değiştirin
  2. bir resim alın ve genişliğini 1-2 piksel yapın

2

Eski bir soru ama bunu çözdüm display:flex;ve harika çalışıyor:

<div style="display:flex;border:1px dotted black;margin-bottom:20px;">
    <div>
        This is a div
    </div>
    <div style="border-left:1px solid black;margin:0 7.5px;"></div>
    <div>
        This is another div
    </div>  
</div>

https://jsfiddle.net/6qfd59vm/3/

Bu çözüm ayrıca sabit yükseklik gerektirmez.


Geleceğin çözümü, ancak muhtemelen 2017-18 + 'a kadar değil :)
jave.web

2

Bunu dene.

" Hr " kapsamındaki gibi " div " öğesinde yüksekliği ve genişliği ayarlayabilirsiniz .

" Hr " marjı hizalama için kullanılır.

<div style="display: inline-flex; width: 25px; height: 100px;">
  <hr style="margin: 0px 0px 0px 12.5px;">
</div>


2

Cevabımı çok geç eklediğimi biliyorum ama buna değeceğine eminim. Dikey çizgiyi kullanarak elde edebilirsinizflexVehr

Codepenimi burada görün .


2
Geç olsun güç olmasın!
Jry9972

1

Gezinme olarak kullanılan bir liste öğesi bağlamında, bir <vr /> etiketi mükemmel şekilde yararlı olacaktır. Varolmamasının nedeni, on yıl önce HTML bağlamında "birine sahip olmanın mantıklı gelmemesidir".


1

Çoğu masaüstü istemcisi için HTML e-postada kullanmak için tabloları kullanmanız gerekir. Bu durumda, <hr>gerekli (ancak basit) satır içi stillere sahip etiketi kullanabilirsiniz , örneğin:

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

Tabii ki CSS ile stil vermek daha esnektir, ancak GMail ve benzeri, satır içi dışında herhangi bir CSS stilinin kullanılmasına izin vermez ...


1

Dikey bir çizgiyi simüle etmek için css kullanabilir ve div öğesindeki sınıfı kullanabilirsiniz.

.vhLine {
  border-left: thick solid #000000;
}

1

Bunu çok kolay bir şekilde yapabilirsiniz.

hr{
 transform: rotate(90deg);
}
<html>
<head>
</head>
<body>
<hr>
</body> 
</html>
Saatin yüksekliği ve genişliği konusunda dikkatli olun


1

HTML5 özel öğeleri (veya saf CSS)

görüntü açıklamasını buraya girin

1. javascript

Elemanınızı kaydedin.

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

* -Tüm özel öğelerde zorunludur.

2. css

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

* Biraz uğraşmanız gerekebilir display:inline-block|inlineçünkü inlineelementin yüksekliğini içerecek şekilde genişlemeyecektir. Çizgiyi bir kap içinde ortalamak için kenar boşluğunu kullanın.

3. somutlaştırmak

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

* Maalesef özel kendi kendine kapanan etiketler oluşturamazsınız.

kullanım

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

görüntü açıklamasını buraya girin

örnek: http://html5.qry.me/vertical-rule


JavaScript ile uğraşmak istemiyor musunuz?

Bu CSS sınıfını belirlediğiniz öğeye uygulamanız yeterlidir.

css

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

* Yukarıdaki notlara bakın.

SO'daki orijinal cevaba bağlantı .


0

Aşağıdaki gibi özel bir etiket oluşturabilirsiniz:

<html>
<head>
<style>
vr {
display: inline-block;
// This is where you'd set the ruler color
background-color: black;
// This is where you'd set the ruler width
width: 2px;
//this is where you'd set the spacing between the ruler and surrounding text
margin: 0px 5px 0px 5px;
height: 100%;
vertical-align: top;
}
</style>
</head>
<body>
this is text <vr></vr> more text
</body>
</html>

(Bunu "açık uçlu" bir etikete dönüştürebileceğimi bilen biri varsa, örneğin <hr>bana bildirin ve içinde düzenleyeyim)


Kısa etiketleyebilirsiniz<vr />
jave.web


0

Yeni HTML5 SVG etiketini kullanabilirsiniz:

<svg style="position:absolute;width:100%;height:100%;">
    <line id="myVerticalLine" y1="0" y2="100" x1="0" x2="0">
    </line>
</svg>

0

Bir satırın görüntüsünü oluşturmayı ve ardından bunu bir "kural" olarak koda ekleyerek, genişliği ve / veya yüksekliği gerektiği gibi ayarlamayı kolay buluyorum . Bunların hepsi yatay kuralı resimlerdi, ancak beni (veya sizi) "dikey kural" resmini kullanmaktan alıkoyan hiçbir şey yok.

Bu, birçok nedenden dolayı harika; Farklı çizgileri, renkleri veya desenleri kolayca "kurallar" olarak kullanabilirsiniz ve metin içermeyeceğinden, HTML'de "hr" kullanarak "normal" şekilde yapmış olsanız bile, SEO veya benzeri diğer şeyleri etkilememelidir. söyledi. Ve resim dosyası çok küçük olacaktır (en fazla 1 veya 2KB).


Önerdiğiniz tekniği göstermek için örnek kod eklemelisiniz.
Adam Katz

0

Çok fazla aşırı karmaşık yanıt. Yalnızca satır aralığını kullanarak kaç satıra yayılmasını istediğiniz bir TableData etiketi yapın. Ardından gerçek çubuk için sağ kenarlığı kullanın.

Misal:

<td rowspan="5" style="border-right-color: #000000; border-right-width: thin; border-right-style: solid">&nbsp;</td>
<td rowspan="5">&nbsp;</td>

İkinci satırdaki "& nbsp" nin ilk satırla aynı miktarda satır çalıştırdığından emin olun. böylece ikisi arasında uygun boşluk var.

Bu teknik bana HTML5'teki zamanımda oldukça iyi hizmet etti.


0

Bugün mümkün CSS3

hr {
  background-color:black;
  color:black;
  -webkit-transform:rotate(90deg);
  position:absolute;
  width:100px;
  height:2px;
  left:100px;
}

0

Metin için sütun oluşturmaya çalışan kişiler için, kullanmayı düşünmeniz gereken bir sütun kuralı özelliği vardır!

.content{
  margin: 20px 5%;
  padding: 5px;
  
}
.content p{
  -webkit-column-count: 3;
  -moz-column-count:3;
  -o-column-count:3;
  column-count: 3; 
  -webkit-column-rule: 1px solid #ccc;
  -moz-column-rule: 1px solid #ccc;
  -o-column-rule: 1px solid #ccc;
  column-rule: 1px solid #ccc;
 
  text-align: justify;
}
<div class="content">
  <p>
    Lorizzle ipsum tellivizzle sit amizzle, consectetizzle adipiscing elit. Nullam away things, shizznit stuff, suscipizzle shiz, gravida vizzle, funky fresh. Doggy phat tortizzle. Check it out its fo rizzle. Bizzle izzle shizzle my nizzle crocodizzle dapibus turpizzle tempizzle i'm in the shizzle. Mauris gizzle nibh et ghetto. Vestibulum ass phat. Pellentesque eleifend nizzle nisi. Fo shizzle my shizz shiznit fo shizzle dizzle. Donec dapibus. That's the shizzle uhuh ... yih! urna, pretium eu, mattizzle cool, shit things, nunc. Fizzle suscipizzle. Shizzlin dizzle semper daahng dawg boofron bow wow wow.



  </p>
  
  
</div>


0
<div style="width:1px;background-color:red;height:30px;float:right;"></div>

Böyle bir div kullanılarak kolaylıkla yapılabilir


-1

Yok.

Neden? Muhtemelen iki sütunlu bir tablo işe yarayacağı için.


23
Çünkü insanlar bunun için tabloların kullanılması gerektiğini düşünmüyor (Ben olumsuz oy vermedim).
erikkallen

-2

Hayır yok. Ve neden olmadığına dair size küçük bir hikaye anlatacağım. Ama önce hızlı çözümler:

a) Temel öğeler için CSS sınıfını kullanın span/ div, örneğin <span class="vr"></span>:

.vr{ 
   display: inline-block; 
   vertical-align: middle; 
   /* note that height must be precise, 100% does not work in some major browsers */
   height: 100px; 
   width: 1px; 
   background-color: #000;
}

Kullanım gösterimi => https://jsfiddle.net/fe3tasa0/

b):first-child Kardeş / komşu öğeler arasında genel bir bölücüler uygulamak istiyorsanız, yalnızca tek taraflı bir kenarlık ve muhtemelen CSS seçiciden yararlanın.

Orijinal paradigmadaki <vr> FITTING hakkındaki hikaye ,
ancak hala orada değil:

Buradaki birçok cevap, dikey bölücünün orijinal HTML paradigmasına / yaklaşımına uymadığını öne sürüyor ... bu tamamen yanlış. Cevaplar da kendileriyle çok çelişiyor.

Aynı kişiler muhtemelen kendi açık CSS sınıflarına "clearfix" diyorlar - float hakkında düzeltilecek bir şey yok, sadece onu temizliyorsunuz ... HTML3'te bile bir öğe vardı: <clear> . Ne yazık ki, bu ve yüzmenin temizlenmesi, birkaç yaygın yanlış anlamadan biridir.

Neyse. "O zamanlar" "orjinal HTML yaştan" in, böyle bir konuda hiçbir düşünce yoktu inline-blockorada sadece vardı blocks, inlinesve tables.

Sonuncusu aslında <vr>var olmamasının sebebidir .
O zamanlar şu varsayılıyordu:
Bir şeyi dikey olarak bölmek ve / veya soldan sağa daha fazla blok
yapmak istiyorsanız =>
=> sütunlar yapıyorsunuz / yapmak istiyorsunuz => => bu bir tablo oluşturduğunuzu ima eder =>
= > tablolar onların hücreler arasında doğal sınırlarını var =>
hiçbir neden bir hale getirmek için<vr>

Bu yaklaşım aslında hala geçerlidir, ancak zamanın gösterdiği gibi, tablolar için yapılan sözdizimi, varsayılan stillerin yanı sıra her durum için uygun değildir.


Muhtemelen daha sonra bir başka varsayım, eğer tablo oluşturmuyorsanız, muhtemelen blok elemanları yüzüyorsunuzdur . Onlar yapıştırıyoruz anlam O arada ve tekrar, sen bir sınır ayarlayabilirsiniz ve o günleri belki de kullanmak :first-childYukarıda önerilen seçici ...

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.