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?

BSMP
sumber
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/

Pranav 웃
sumber
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/

anvar
sumber
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>

pengguna4378029
sumber
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;

}
Patrick
sumber
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).

Mihai Rotaru
sumber
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

l2aelba
sumber
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>

HB
sumber
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;
}
viCky
sumber
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.

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

sepatu sol sepatu
sumber