Chỉnh sửa độ dày dòng của thuộc tính CSS 'underline'


117

Vì bạn có thể gạch dưới bất kỳ văn bản nào trong CSS như vậy:

H4 {text-decoration: underline;}

Làm thế nào bạn cũng có thể chỉnh sửa 'đường' được vẽ đó, màu bạn nhận được trên đường dễ dàng được chỉ định là 'màu: đỏ' nhưng làm cách nào để chỉnh sửa chiều cao của đường, tức là độ dày?


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

@PranavKapoor - Đẹp! Thật tuyệt vời, cảm ơn bạn rất nhiều. Làm cách nào để đặt chiều rộng cho đường viền này thành 'tự động' ngay bây giờ để nó chỉ viền thẻ H4 chứ không phải toàn bộ chiều rộng của div chứa?

Bạn có thể thêm display:inline-blockđể đảm bảo rằng chiều rộng được đặt, Tuy nhiên, sử dụng một phần tử bên trong <h4>và tạo kiểu cho phần bên trong sẽ tốt hơn. Kiểm tra câu trả lời của tôi bên dưới.
Pranav 웃 12/12/12

1
@PranavKapoor - lại đúng! Bạn giống như một ninja CSS. Cảm ơn anh bạn. Tôi đã sử dụng câu trả lời này mà bạn đưa ra trong bình luận thay vì câu trả lời của bạn được đăng bên dưới. Theo cách này, tôi nghĩ là tốt hơn vì bạn không cần phải bọc văn bản của mình trong một thẻ <u> khác. Bạn hoàn toàn kiểm soát điều này từ phía CSS.

có thể trùng lặp của Độ dày của gạch dưới
Jukka K. Korpela

Câu trả lời:


91

Đây là một cách để đạt được điều này:

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

Đây là một ví dụ: http://jsfiddle.net/AQ9rL/


91
... hoặc nhiều dòng văn bản
cfx

Trong trường hợp đó, bạn phải quấn văn bản từ mỗi dòng, trước và sau dấu ngắt dòng <span>và áp dụng đường viền dưới cùng ở đó. Tuy nhiên, đó là một cách giải quyết có thể gây khó khăn trong các tình huống không được mã hóa cứng.
Fabián

@cfx nếu bạn có thể, bạn vẫn có thể làm điều này với display: inline;(nhưng sau đó nó sẽ không còn bị chặn dưới bất kỳ hình thức nào nữa, mặc dù có thể giúp ai đó)
jave.web

Bạn đã làm nên ngày của tôi. THanks
Tessaracter

Điều này sẽ làm cho bố cục thay đổi. Một đường viền sẽ buộc các phần tử khác di chuyển, không giống như một dấu gạch dưới sẽ không.
Joel Karunungan

51

Gần đây, tôi đã phải đối phó với FF mà gạch dưới quá dày và quá xa so với văn bản trong FF, và tìm ra cách tốt hơn để xử lý nó bằng cách sử dụng một cặp bóng hộp:

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

Bóng đầu tiên được đặt trên bóng thứ hai và đó là cách bạn có thể kiểm soát bóng thứ hai bằng cách thay đổi giá trị 'px' của cả hai.

Thêm vào đó: nhiều màu sắc, độ dày và vị trí gạch chân

Điểm trừ: không thể sử dụng trên nền không rắn

Ở đây tôi đã làm một vài ví dụ: http://jsfiddle.net/xsL6rktx/


4
Thật gọn gàng. Một điểm chuyên nghiệp (đối với tôi ít nhất) đối với vấn đề này đối với phần đáy là độ dày "dòng" tăng dần về phía văn bản, điều này làm cho khoảng cách giữa văn bản và dòng ít lớn hơn.
Victor Häggqvist

Tôi nhận được các đường thẳng đứng nửa pixel ngoài gạch dưới khi thực hiện việc này.
yeahdixon

Có vẻ như tại một thời điểm, đây là một câu trả lời hoàn hảo, nhưng tôi nhận được các đường thẳng đứng rất mỏng ở mỗi bên của phần tử trong Chrome 66
người đàn ông tí hon

Thay vì màu trắng , sử dụng trong suốt sẽ hoạt động trong trường hợp bất kỳ nền nào.
Jay Dadhania,

Đây là câu trả lời tốt nhất. Không cần phải thay đổi giải pháp HTML và CSS thuần túy sẽ không làm thay đổi vị trí như những gì đường viền làm.
Joel Karunungan

15

Rất dễ dàng ... phần tử "span" bên ngoài với phông chữ nhỏ và gạch dưới, và phần tử "phông chữ" bên trong với kích thước phông chữ lớn hơn.

<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
Nếu bạn thay thế <font>thẻ lỗi thời bằng một spanthẻ, đây sẽ là câu trả lời duy nhất thực sự giải quyết câu hỏi.
matteo

11

Một cách khác để làm điều này là sử dụng ": after" (phần tử giả) trên phần tử bạn muốn gạch dưới.

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

Hiện text-decoration-thicknesstại có một phần của Mô-đun trang trí văn bản CSS cấp độ 4 . Đó là ở giai đoạn "Bản nháp của người biên tập" - vì vậy đây là một công việc đang được tiến hành và có thể thay đổi. Kể từ tháng 1 năm 2020, nó chỉ được hỗ trợ trong Firefox và Safari .

Thuộc tính CSS text-decoration-width đặt độ dày hoặc chiều rộng của đường trang trí được sử dụng trên văn bản trong một phần tử, chẳng hạn như dòng kẻ, gạch dưới hoặc gạch ngang.

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

Codepen: https://codepen.io/mrotaru/pen/yLyLOgr (chỉ dành cho Firefox)


Ngoài ra còn có text-decoration-color, là một phần của Mô-đun trang trí văn bản CSS cấp độ 3 . Điều này dành cho người lớn hơn (Đề xuất ứng viên) và được hỗ trợ trong hầu hết các trình duyệt chính (ngoại lệ là Edge và IE). Tất nhiên nó không thể được sử dụng để thay đổi độ dày của dòng, nhưng có thể được sử dụng để tạo ra một gạch dưới "tắt tiếng" hơn (cũng được hiển thị trong codepen).


Nếu người dùng đang sử dụng Firefox, tất cả những thứ trang trí văn bản đều có thể được truy cập vào text-decoration. Tôi không biết liệu điều này có được lên kế hoạch cho tất cả chúng hay không, nhưng nếu có thì nó sẽ rất tốt trong tương lai. CHỈNH SỬA: đây là một bản nháp đang hoạt động để hỗ trợ điều này trongtext-decoration .
Không có bão

9

Tôi sẽ làm một việc đơn giản như:

.thickness-underline {
    display: inline-block;
    text-decoration: none;
    border-bottom: 1px solid black;
    margin-bottom: -1px;
}
  • Bạn có thể sử dụng line-heighthoặcpadding-bottom thiết lập quyền sở hữu giữa chúng
  • Bạn có thể sử dụng display: inlinetrong một số trường hợp

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

Gạch dưới CSS


Thật không may, margin-bottom không thể nhận giá trị âm.
solehoe

5
@soleshoe Điều đó không chính xác, bạn có thể có lề âm ở cuối phần tử.
Alex

7

Cũng background-imagecó thể được sử dụng để tạo một gạch dưới.

Nó phải được chuyển xuống dưới background-positionvà lặp lại theo chiều ngang. Chiều rộng dòng có thể được điều chỉnh ở một mức độ nào đó bằng cách sử dụng background-size(nền được giới hạn trong hộp nội dung của phần tử).

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

Giải pháp cuối cùng: http://codepen.io/vikrant-icd/pen/gwNqoM

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

1
Vấn đề được gạch chân được các trình duyệt khác nhau hiển thị khác nhau.
Joel Karunungan

3

Nhờ sự kỳ diệu của các tùy chọn css mới, điều này hiện có thể thực hiện được:

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

Cho đến nay, hỗ trợ là tương đối kém . Nhưng cuối cùng nó sẽ hạ cánh trên các trình duyệt khác ngoài ff.


2

Giải pháp của tôi: https://codepen.io/SOLESHOE/pen/QqJXYj

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

Bạn có thể điều chỉnh vị trí gạch chân với giá trị chiều cao dòng, độ dày gạch dưới và kiểu với đường viền dưới cùng.

Hãy cẩn thận để tắt hành vi gạch chân mặc định nếu bạn muốn gạch dưới một href.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.