<hr> etiketimin kalınlığını nasıl değiştirebilirim


311

CSS'deki yatay kuralımın ( <hr>) kalınlığını değiştirmek istiyorum . HTML gibi yapılabilir biliyorum -

<hr size="10">

Ama bu olduğunu duymak kaldırılmış üzerinde belirtildiği gibi burada MDN'yi . CSS'de kullanmayı denedim height:1pxama kalınlığı değiştirmiyor. <hr>Çizginin 0.5pxkalın olmasını istiyorum .

Ubuntu'da Firefox 3.6.11 kullanıyorum


Gerçekten ince olmasını istiyorum, kullanıcı özellikle aramadıkça orada olduğunu fark etmemelidir. Neyse çalışıyoruz ...
Srikar Appalaraju

7
Ayrıca daha fazla arka plan rengini yapmayı deneyebilirsiniz böylece ...
JustcallmeDrago

4
1 piksel minimum olduğundan, daha az fark edilir olmasını istiyorsanız çizgiyi açık gri yapmalısınız.
Gert Grenander

2
@MovieYoda: Boyutlar alt piksele gidebilir, ancak oluşturma en yakın piksele yuvarlanır. Bu bir tamsayı değerinin 1.23784 olmasını beklemek gibi ... İmkansız. Bu tür bir değere ayarlayabilirsiniz, ancak en yakın tam sayıya yuvarlanır. Teorik olarak, teknoloji özellikleri nedeniyle LCD'lerde 1/3 piksele yuvarlanmış genişlikleri oluşturabilirsiniz, ancak tarayıcıların bunu da yaptığını sanmıyorum. Kalan alt piksel boyutu herhangi bir renkte olamaz çünkü RGB fosforlarından sadece biriyle ilgilidir.
Robert Koritnik

15
Yarım piksel değil, yarım piksel. Soru tamamen aptalca değil. reddit.com/r/shittyprogramming/comments/20zyea/…
Luke Rehmann

Yanıtlar:


523

Tutarlılık için kenarlıkları kaldırın ve <hr>kalınlık için yüksekliği kullanın . Bir arka plan rengi eklediğinizde, <hr>belirtilen yükseklik ve renkle stilize edilir.

Stil sayfanızda:

hr {
    border: none;
    height: 1px;
    /* Set the hr color */
    color: #333; /* old IE */
    background-color: #333; /* Modern Browsers */
}

Ya da sahip olduğunuz gibi satır içi:

<hr style="height:1px;border:none;color:#333;background-color:#333;" />

Burada daha uzun açıklama


10
Neden yapıyoruz border:none? Herhangi bir nedenle? Kenarlık da kalınlık ekliyor mu?
Srikar Appalaraju

11
Evet, çizgiyi tutarlılık için görüntülemek için arka plan rengini kullanmak istiyoruz. FF kenarlığı <hr> oluşturmak için kullanır, ancak kullanmaz. Bu ikisini de aynı kılacaktır.
Gregg B

2
Evet, çapraz tarayıcı <hr> etiketlerini her zaman iğrenç buldum. Onlara düzgün davranmalarını sağlamak güzel.
Gregg B

Ya da sadece bir kereye mahsus ihtiyacınız varsa, bunu yerinde yapabilirsiniz<hr style="border: none; height:1px; color:#333; background-color:#333;">;
Jesse Chisholm

1
Yedek için IE kaç yaşında color?
trysis

53

Tarayıcılarda alt piksel oluşturma

Alt piksel oluşturma zor. Bir monitörün pikselden daha ince bir çizgi oluşturmasını bekleyemezsiniz. Ancak alt piksel boyutları sağlamak mümkündür. Tarayıcıya bağlı olarak bunları farklı şekilde işlerler. Bu konuda John Resig'in blog gönderisini kontrol edin .

Temel olarak monitörünüz bir LCD ise ve dikey çizgiler çiziyorsanız, kolayca 1/3 piksel çizgi çizebilirsiniz. Arka planınız beyazsa, çizgi renginizi verin #f0f. Göze göre bu çizgi 1/3 piksel genişliğinde olacaktır. Bazı renkler olsa da, monitörü büyütürseniz, tüm pikselin (RGB'den oluşan) yalnızca bir bölümünün karanlık olacağını görürsünüz. Bu, ClearType gibi ince tip ipucu için kullanılan hemen hemen bir tekniktir .

Ancak yatay çizgiler yalnızca tam piksel yüksekliğinde olabilir. Bu, LCD monitörlerin teknoloji sınırlamasıdır. CRT'ler üçgen fosforları ile daha da karmaşıktı ( diyafram ızgarası tipi yani Sony Trinitron olmadıkları sürece ), ancak bu farklı bir hikaye.

Temel olarak bir alt piksel boyutu sağlamak ve bu şekilde oluşturulmasını beklemek, bir tamsayı değişkeninin bir dizi 1.2034759349 saklanmasını beklemekle aynıdır. Bunun imkansız olduğunu anlarsanız, monitörlerin alt piksel boyutlarını oluşturamadığını anlamalısınız.

Çapraz tarayıcı güvenli tarzı

Ancak yatay kuralların karıştığı yol genellikle renkler kullanılarak yapılır. Yani arka planınız örneğin beyazsa ( #fff) her zaman HR çok aydınlık yapabilirsiniz. Gibi #eee.

Çok hafif yatay kural için tarayıcılar arası güvenli stil:

hr
{
    background-color: #eee;
    border: 0 none;
    color: #eee;
    height: 1px;
}

Ve satır içi stiller yerine bir CSS dosyası kullanın. Yalnızca belirli bir öğe için değil, tüm site için merkezi bir tanım sağlarlar. Sürdürülebilirliği çok daha iyi hale getirir.


8

Ayrılmış CSS'nin tüm yükü en hızlı veya en kısa çözüm olmadığından, 1 piksellik bir çizgi çizmenin en kısa yolunu arıyordum.

HTML5'e kadar, WAS 1px saat daha kısa bir yol: <hr noshade> ama .. HTML5'te <hr> noshade özelliği desteklenmez. Bunun yerine CSS kullanın. (daha önce boyut, genişlik, hizalama olarak kullanılan diğer özellikler ) ...


Şimdi, bu oldukça zor, ama en basit 1 piksel saat gerekirse iyi çalışır:

Varyasyon 1, BLACK saat: (siyah için en iyi çözüm)

<hr style="border-bottom: 0px">

Çıktı: FF, Opera - siyah / Safari - koyu gri


Varyasyon 2, GRİ sa (en kısa!):

<hr style="border-top: 0px">

Çıktı: Opera - koyu gri / FF - gri / Safari - açık gri


Varyasyon 3, RENK istenildiği gibi:

<hr style="border: none; border-bottom: 1px solid red;">

Çıktı: Opera / FF / Safari: 1 piksel kırmızı.


Birisi Chrome ve IE için test edecekse memnun olurum. İlk iki varyasyon oldukça zor, esp. Görünen ilk BLACK 1px çıktısını veren 2. varyasyon.
Muscaria

Bu çözümü seviyorum, çünkü karanlık modla uyumluluk için yararlı olabilecek herhangi bir renk bilgisini zor kodlamıyor. Chrome'da sorunsuz çalışıyor.
tresf

6

HRKendini 0pxyüksek olarak ayarlamanızı ve onun yerine görünür olmasını sağlamak için sınırını kullanmanızı tavsiye ederim . Yakınlaştırıp uzaklaştırdığınızda (ctrl + fare tekerleği) HRkendisinin kalınlığının değiştiğini, kenarlığı ayarladığınızda her zaman aynı kaldığını fark ettim :

hr {
    height: 0px;
    border: none;
    border-top: 1px solid black;
}

En son Chrome'da sayfanın geri kalanında kalınlığın değiştiğini görebiliyorum. Daha da kötüsü, uzaklaştırırsanız kaybolabilir :(
Pavel Alexeev

5

height özniteliği html 5'te kullanımdan kaldırılmıştır. Yapacağım şey, saatin etrafında bir kenarlık oluşturmak ve kenarlığın kalınlığını şu şekilde arttırmaktır: hr style = "border: solid 2px black;"


1

Çizgiye opaklık ekledim, bu yüzden daha ince görünüyor:

<hr style="opacity: 0.25">

0

Stil <hr>etiketi için en iyi başarının aşağıdaki gibi olduğuna inanıyorum :

hr {
color:#ddd;
background-color:
#ddd; height:1px;
border:none;
max-width:100%;
}

Ve HTML kodu için sadece ekleyin: <hr>.


0

İşte kenarlık veya kenar boşluğu olmayan 1 piksel siyah çizgi için bir çözüm

hr {background-color:black; border:none; height:1px; margin:0px;}
  • Google Chrome'da test edildi

Diğer cevaplar içermiyordu çünkü bu eklersiniz düşündüm: margin:0px;.

  • gösteri

hr {background-color:black; border:none; height:1px; margin:0px;}
<div style="border: 1px solid black; text-align:center;">
<div style="background-color:lightblue;"> ↑ container ↑ <br> <br> <br> ↓ hr ↓ </div>
<hr>
<div style="background-color:lightgreen;"> ↑ hr ↑ <br> <br> <br> ↓ container ↓ </div>
</div>


-4

İnşaat gibi kullanmanızı öneririm

<style>
  .hr { height:0; border-top:1px solid _anycolor_; }
  .hr hr { display:none }
</style>

<div class="hr"><hr /></div>

Heheheh :) Daha önce hiç görmedim :)
Prakash Raman
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.