CSS "alt çizgi" özelliğinin çizgi kalınlığını düzenleyin


118

CSS'deki herhangi bir metnin altını şu şekilde çizebileceğiniz için:

H4 {text-decoration: underline;}

O zaman çizilen o 'çizgiyi' nasıl düzenleyebilirsiniz, çizgi üzerinde elde ettiğiniz renk kolayca 'renk: kırmızı' olarak belirlenir, ancak çizginin yüksekliği, yani kalınlık nasıl düzenlenir?


10
h4 {border-bottom: 10px solid #000;}
Pranav 웃

@PranavKapoor - Güzel! Bu harika, çok teşekkür ederim. Bu sınırın genişliğini şimdi nasıl 'otomatik' olarak ayarlayabilirim ki, içerdiği div'in tüm genişliğini değil, yalnızca H4 etiketini sınırlar?

display:inline-blockGenişliğin ayarlandığından emin olmak için ekleme yapabilirsiniz, ancak, içeride bir öğe kullanmak <h4>ve içini şekillendirmek daha iyi olacaktır. Aşağıdaki cevabımı kontrol edin.
Pranav 웃

1
@PranavKapoor - tekrar doğru! CSS ninja gibisin. Teşekkürler dostum. Aşağıda verilen cevabınız yerine yorumda verdiğiniz bu cevabı kullandım. Metninizi başka bir <u> etiketine kaydırmanız gerekmediği için bu şekilde daha iyi olduğunu düşünüyorum. Bunu tamamen CSS tarafından kontrol ediyorsunuz.

Yanıtlar:


92

İşte bunu başarmanın bir yolu:

HTML:

<h4>This is a heading</h4>

<h4><u>This is another heading</u></h4>

CSS:

 u {
    text-decoration: none;
    border-bottom: 10px solid black;
  }​

İşte bir örnek: http://jsfiddle.net/AQ9rL/


91
... veya birden çok metin satırı
cfx

Bu durumda, her satırdaki metni satır sonundan önce ve sonra kaydırmanız ve <span>oraya border-bottom'ı uygulamanız gerekir. Yine de, kodlanmamış senaryolarda acı verici olabilecek bir geçici çözümdür.
Fabián

@cfx yapabiliyorsanız, bunu yine de yapabilirsiniz display: inline;(ama artık herhangi bir engel olmayacak, o zaman birine yardım edebilir)
jave.web

Günümü gün ettin. Teşekkürler
Tessaracter

Bu, düzenin değişmesine neden olacaktır. Bir sınır, alt çizginin aksine diğer öğeleri hareket etmeye zorlayacaktır.
Joel Karunungan

51

Son zamanlarda, FF'deki metinden çok kalın ve altını çizen FF ile uğraşmak zorunda kaldım ve bir çift kutu gölgesi kullanarak bununla başa çıkmanın daha iyi bir yolunu buldum:

.custom-underline{
    box-shadow: inset 0 0px 0 white, inset 0 -1px 0 black
}

İlk gölge ikincinin üzerine yerleştirilir ve bu, her ikisinin de 'px' değerini değiştirerek ikincisini kontrol edebilirsiniz.

Artı: çeşitli renkler, kalınlık ve alt çizgi konumu

Eksi: düz olmayan arka planlarda kullanılamaz

Burada birkaç örnek yaptım: http://jsfiddle.net/xsL6rktx/


4
Ne kadar temiz. Bunun için en azından bir uzman (en azından bana göre), "çizgi" kalınlığının metne doğru artmasıdır, bu da metin ve satır arasındaki boşluğu daha az büyük yapar.
Victor Häggqvist

Bunu yaparken alt çizgiye ek olarak yarım piksel dikey çizgiler elde ediyorum.
yeahdixon

Bir noktada mükemmel bir cevap gibi görünüyor, ancak Chrome 66'daki elementin her iki tarafında çok ince dikey çizgiler görüyorum
küçük minik adam

Beyaz yerine, herhangi bir arka plan durumunda şeffaf kullanmak işe yarayacaktır.
Jay Dadhania

Bu en iyi cevap. Sınırların yaptığı gibi konumları değiştirmeyen HTML ve saf CSS çözümünü değiştirmeye gerek yoktur.
Joel Karunungan

15

Çok kolay ... küçük yazı tipi ve altı çizili dış "yayılma" öğesi ve içinde daha büyük yazı tipi boyutu olan "yazı tipi" öğesi.

<span style="font-size:1em;text-decoration:underline;">
 <span style="font-size:1.5em;">
   Text with big font size and thin underline
 </span>
</span>


8
Eski <font>etiketi bir spanetiketle değiştirirseniz, soruyu gerçekten ele alan tek cevap bu olacaktır.
matteo

11

Bunu yapmanın başka bir yolu, altını çizmek istediğiniz öğede ": after" (sözde öğe) kullanmaktır.

h2{
  position:relative;
  display:inline-block;
  font-weight:700;
  font-family:arial,sans-serif;
  text-transform:uppercase;
  font-size:3em;
}
h2:after{
  content:"";
  position:absolute;
  left:0;
  bottom:0;
  right:0;
  margin:auto;
  background:#000;
  height:1px;

}

10

Şu text-decoration-thicknessanda CSS Metin Dekorasyon Modülü Seviye 4'ün bir parçası var . "Editörün Taslağı" aşamasında - yani devam eden bir çalışmadır ve değişebilir. Ocak 2020 itibariyle yalnızca Firefox ve Safari'de desteklenmektedir .

Metin süsleme kalınlığı CSS özelliği, çizgi, alt çizgi veya üst çizgi gibi bir öğedeki metinde kullanılan dekorasyon çizgisinin kalınlığını veya genişliğini ayarlar.

a {
  text-decoration-thickness: 2px;
}

Codepen: https://codepen.io/mrotaru/pen/yLyLOgr (yalnızca Firefox)


CSS Metin Dekorasyon Modülü Seviye 3'ün birtext-decoration-color parçası olan da var . Bu daha olgundur (Aday Öneri) ve çoğu büyük tarayıcıda desteklenir (istisnalar Edge ve IE'dir). Kuşkusuz, çizginin kalınlığını değiştirmek için kullanılamaz, ancak daha "sessiz" bir alt çizgi elde etmek için kullanılabilir (kod kaleminde de gösterilmiştir).


Kullanıcı Firefox'taysa, tüm metin dekorasyon şeylerine erişilebilir text-decoration. Bunun hepsine dahil edilmesi planlanıyor mu bilmiyorum ama eğer öyleyse gelecekte çok güzel olacak. DÜZENLEME: Bunu desteklemek için bir çalışma taslağıdırtext-decoration .
Stormblessed

9

Şunun gibi basit bir şey yapacağım:

.thickness-underline {
    display: inline-block;
    text-decoration: none;
    border-bottom: 1px solid black;
    margin-bottom: -1px;
}
  • Sen kullanabilirsiniz line-heightveyapadding-bottomAralarında bir olasılık ayarlamak
  • display: inlineBazı durumlarda kullanabilirsiniz

Demo: http://jsfiddle.net/5580pqe8/

CSS altı çizili


Ne yazık ki, marj-dip negatif değerler alamaz.
soleshoe

5
@soleshoe Bu yanlış, bir elemanın altında negatif bir kenar boşluğunuz olabilir.
Alex

7

background-imageAynı zamanda bir alt çizgi oluşturmak için kullanılabilir.

background-positionYatay olarak aşağı kaydırılmalı ve tekrarlanmalıdır. Çizgi genişliği kullanılarak bir dereceye kadar ayarlanabilir background-size(arka plan, öğenin içerik kutusuyla sınırlıdır).

.underline
{
    --color: green;
    font-size: 40px;
    background-image: linear-gradient(var(--color) 0%, var(--color) 100%);
    background-repeat: repeat-x;
    background-position: 0 1.05em;
    background-size: 2px 5px;
}
<span class="underline">
     Underlined<br/>
     Text
</span>


6

a {
  text-decoration: none;
  position: relative;
}

a.underline {
  text-decoration: underline;
}

a.shadow {
   box-shadow: inset 0 -4px 0 white, inset 0 -4.5px 0 blue;
}
<h1><a href="#" class="underline">Default: some text alpha gamma<br>the quick brown fox</a></h1>
<p>Working:</p>
<h1><a href="#" class="shadow">Using Shadow: some text alpha gamma<br>the quick brown fox<br>even works with<br>multiple lines</a></h1>
<br>

Nihai Çözüm: http://codepen.io/vikrant-icd/pen/gwNqoM

a.shadow {
   box-shadow: inset 0 -4px 0 white, inset 0 -4.5px 0 blue;
}

1
Sorunun altı çizili, farklı tarayıcılar tarafından farklı şekilde işleniyor.
Joel Karunungan

3

Yeni css seçeneklerinin büyüsü sayesinde bu artık yerel olarak mümkündür:

a {
  text-decoration: underline;
  text-decoration-thickness: 5px;
  text-decoration-skip-ink: auto;
  text-underline-offset: 3px;
}

Henüz destek görece zayıf . Ama sonunda ff'den başka tarayıcılara inecek.


2

Çözümüm: https://codepen.io/SOLESHOE/pen/QqJXYj

{
    display: inline-block;
    border-bottom: 1px solid;
    padding-bottom: 0;
    line-height: 70%;
}

Alt çizgi konumunu çizgi yüksekliği değeri, alt çizgi kalınlığı ve kenarlık alt ile stil ile ayarlayabilirsiniz.

Bir href'in altını çizmek istiyorsanız, varsayılan alt çizgi davranışını devre dışı bırakmaya dikkat edin.

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.