Edit ketebalan garis atribut 'garis bawah' CSS


118

Karena Anda dapat menggarisbawahi teks apa pun di CSS seperti ini:

H4 {text-decoration: underline;}

Bagaimana Anda juga bisa mengedit 'garis' yang digambar, warna yang Anda dapatkan pada garis dengan mudah ditentukan sebagai 'color: red' tetapi bagaimana cara mengedit ketinggian garis, yaitu ketebalan?


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

@PranavKapoor - Bagus! Itu luar biasa, terima kasih banyak. Bagaimana cara mengatur lebar ke perbatasan ini menjadi 'otomatis' sekarang sehingga hanya berbatasan dengan tag H4 dan bukan seluruh lebar div yang memuatnya?

Anda dapat menambahkan display:inline-blockuntuk memastikan bahwa lebarnya diatur, Namun, menggunakan elemen di dalam <h4>dan menata bagian dalam akan lebih baik. Cek jawaban saya di bawah ini.
Pranav 웃

1
@PranavKapoor - benar lagi! Anda seperti ninja CSS. Terima kasih sobat. Saya menggunakan jawaban yang Anda berikan di komentar ini daripada jawaban Anda yang diposting di bawah ini. Dengan cara ini menurut saya lebih baik karena Anda tidak perlu membungkus teks Anda dengan tag <u> lain. Anda sepenuhnya mengontrol ini dari sisi CSS.

kemungkinan duplikat Tebal garis bawah
Jukka K. Korpela

Jawaban:


92

Inilah salah satu cara untuk mencapai ini:

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;
  }​

Berikut ini contohnya: http://jsfiddle.net/AQ9rL/


91
... atau beberapa baris teks
cfx

Dalam hal ini Anda harus membungkus teks dari setiap baris, sebelum dan sesudah pemisah baris dengan <span>dan menerapkan batas bawah di sana. Ini adalah solusi yang bisa menyakitkan dalam skenario non-hardcode.
Fabián

@cfx jika Anda bisa, Anda masih dapat melakukan ini dengan display: inline;(tetapi tidak akan lagi menjadi blokir apa pun, meskipun demikian, dapat membantu seseorang)
jave.

Anda membuat hari saya. Terima kasih
Tessaracter

Ini akan menyebabkan tata letak berubah. Perbatasan akan memaksa elemen lain untuk bergerak, tidak seperti garis bawah yang tidak.
Joel Karunungan

51

Baru-baru ini saya harus berurusan dengan FF yang garis bawahnya terlalu tebal dan terlalu jauh dari teks di FF, dan menemukan cara yang lebih baik untuk menghadapinya dengan menggunakan sepasang bayangan kotak:

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

Bayangan pertama diletakkan di atas bayangan kedua dan begitulah cara Anda mengontrol bayangan kedua dengan memvariasikan nilai 'px' dari keduanya.

Plus: berbagai warna, ketebalan dan posisi garis bawah

Minus: tidak dapat digunakan pada background non-solid

Di sini saya membuat beberapa contoh: http://jsfiddle.net/xsL6rktx/


4
Sungguh rapi. Sebuah pro (bagi saya setidaknya) untuk yang satu ini dalam kaitannya dengan border-bottom adalah bahwa ketebalan "garis" tumbuh ke arah teks, yang membuat jarak antara teks dan garis menjadi kurang besar.
Victor Häggqvist

Saya mendapatkan garis vertikal setengah piksel sebagai tambahan pada garis bawah saat melakukan ini.
yeahdixon

Sepertinya itu pada satu titik jawaban yang sempurna, tetapi saya mendapatkan garis vertikal yang sangat sangat tipis di setiap sisi elemen di Chrome 66
pria kecil mungil

Alih-alih putih , menggunakan transparan akan berfungsi jika ada latar belakang apa pun.
Jay Dadhania

Ini jawaban terbaik. Tidak perlu mengubah solusi HTML dan CSS murni yang tidak akan mengubah posisi seperti yang dilakukan oleh batas.
Joel Karunungan

15

Sangat mudah ... di luar elemen "span" dengan font kecil dan garis bawah, dan di dalam elemen "font" dengan ukuran font lebih besar.

<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
Jika Anda mengganti <font>tag usang dengan spantag, ini akan menjadi satu-satunya jawaban yang benar-benar menjawab pertanyaan tersebut.
matteo

11

Cara lain untuk melakukannya adalah dengan menggunakan ": after" (pseudo-element) pada elemen yang ingin Anda garis bawahi.

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

Saat ini text-decoration-thicknessada bagian dari Modul Dekorasi Teks CSS Level 4 . Ada di tahap "Draf Editor" - jadi ini adalah pekerjaan yang sedang dalam proses dan dapat berubah. Mulai Januari 2020, ini hanya didukung di Firefox dan Safari .

Properti teks-dekorasi-ketebalan CSS menetapkan ketebalan, atau lebar, garis dekorasi yang digunakan pada teks dalam elemen, seperti garis-tayang, garis bawah, atau garis atas.

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

Codepen: https://codepen.io/mrotaru/pen/yLyLOgr (khusus Firefox)


Ada juga text-decoration-coloryang merupakan bagian dari CSS Text Decoration Module Level 3 . Ini lebih matang (Rekomendasi Kandidat) dan didukung di sebagian besar browser utama (pengecualian adalah Edge dan IE). Tentu saja ini tidak dapat digunakan untuk mengubah ketebalan garis, tetapi dapat digunakan untuk mendapatkan garis bawah yang lebih "diredam" (juga ditampilkan di codepen).


Jika pengguna menggunakan Firefox, semua hal dekorasi teks dapat diakses text-decoration. Saya tidak tahu apakah ini direncanakan untuk dimasukkan ke dalam semuanya, tetapi jika demikian akan sangat menyenangkan di masa depan. EDIT: ini adalah draft kerja untuk mendukung initext-decoration .
Stormblessed

9

Saya akan melakukan sesuatu yang sederhana seperti:

.thickness-underline {
    display: inline-block;
    text-decoration: none;
    border-bottom: 1px solid black;
    margin-bottom: -1px;
}
  • Anda dapat menggunakan line-heightatau padding-bottommengatur kepemilikan di antara mereka
  • Anda dapat menggunakan display: inlinedalam beberapa kasus

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

CSS menggarisbawahi


Sayangnya, margin-bottom tidak bisa mendapatkan nilai negatif.
soleshoe

5
@soleshoe Jawaban Anda salah, Anda dapat memiliki margin negatif di bagian bawah elemen.
Alex

7

The background-imagejuga dapat digunakan untuk membuat garis bawah.

Itu harus digeser ke bawah background-positiondan diulangi secara horizontal. Lebar garis dapat disesuaikan sampai tingkat tertentu menggunakan background-size(latar belakang dibatasi pada kotak konten elemen).

.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>

Solusi Akhir: http://codepen.io/vikrant-icd/pen/gwNqoM

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

1
Masalah yang digarisbawahi dirender oleh browser yang berbeda secara berbeda.
Joel Karunungan

3

Berkat keajaiban opsi css baru , ini sekarang dimungkinkan secara native:

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

Sampai saat ini dukungannya relatif buruk . Tapi itu akan mendarat di browser lain selain ff pada akhirnya.


2

Solusi Saya: https://codepen.io/SOLESHOE/pen/QqJXYj

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

Anda dapat mengatur posisi garis bawah dengan nilai ketinggian garis, ketebalan garis bawah, dan gaya garis batas bawah.

Berhati-hatilah untuk menonaktifkan perilaku garis bawah default jika Anda ingin menggarisbawahi sebuah href.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.