Bearbeiten Sie die Linienstärke des CSS-Attributs "Unterstreichen"


117

Da Sie jeden Text in CSS wie folgt unterstreichen können:

H4 {text-decoration: underline;}

Wie können Sie dann auch die gezeichnete 'Linie' bearbeiten, die Farbe, die Sie auf der Linie erhalten, kann leicht als 'Farbe: Rot' angegeben werden, aber wie bearbeitet man die Höhe der Linie, dh die Dicke?


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

@PranavKapoor - Schön! Das ist großartig, vielen Dank. Wie setze ich die Breite dieses Rahmens jetzt auf "Auto", damit nur das H4-Tag und nicht die gesamte Breite des enthaltenen Div begrenzt wird?

Sie können hinzufügen display:inline-block, um sicherzustellen, dass die Breite festgelegt ist. Es ist jedoch <h4>besser , ein Element im Inneren zu verwenden und das innere zu gestalten. Überprüfen Sie meine Antwort unten.
Pranav 웃

1
@PranavKapoor - wieder richtig! Du bist wie ein CSS-Ninja. Danke, Mann. Ich habe diese Antwort, die Sie im Kommentar gegeben haben, anstelle Ihrer unten angegebenen Antwort verwendet. Auf diese Weise finde ich es besser, da Sie Ihren Text nicht in ein anderes <u> -Tag einschließen müssen. Sie steuern dies vollständig von der CSS-Seite.

mögliches Duplikat der Dicke der Unterstreichung
Jukka K. Korpela

Antworten:


91

Hier ist eine Möglichkeit, dies zu erreichen:

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

Hier ist ein Beispiel: http://jsfiddle.net/AQ9rL/


91
... oder mehrere Textzeilen
cfx

In diesem Fall müssen Sie den Text aus jeder Zeile vor und nach dem Zeilenumbruch mit <span>einschließen und den unteren Rand dort anwenden. Dies ist eine Problemumgehung, die in nicht fest codierten Szenarien schmerzhaft sein kann.
Fabián

@cfx wenn du kannst, kannst du das immer noch mit machen display: inline;(aber es wäre dann kein Block mehr, könnte aber jemandem helfen)
jave.web

Du hast meinen Tag gerettet. DANKE
Tessaracter

Dadurch ändert sich das Layout. Ein Rand zwingt andere Elemente, sich zu bewegen, im Gegensatz zu einem Unterstrich, der dies nicht tut.
Joel Karunungan

51

Vor kurzem musste ich mich mit FF befassen, dessen Unterstreichungen zu dick und zu weit vom Text in FF entfernt waren, und fand einen besseren Weg, um mit zwei Kastenschatten damit umzugehen:

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

Der erste Schatten wird auf den zweiten gelegt, und so können Sie den zweiten steuern, indem Sie den 'px'-Wert von beiden variieren.

Plus: verschiedene Farben, Dicke und Unterstreichungsposition

Minus: Kann nicht auf nicht festen Hintergründen verwendet werden

Hier habe ich einige Beispiele gemacht: http://jsfiddle.net/xsL6rktx/


4
Wie ordentlich. Ein Vorteil (zumindest für mich) in Bezug auf den unteren Rand ist, dass die "Liniendicke" zum Text hin zunimmt, wodurch die Lücke zwischen Text und Linie weniger groß wird.
Victor Häggqvist

Dabei erhalte ich zusätzlich zur Unterstreichung vertikale Linien mit einem halben Pixel.
yeahdixon

Scheint, als wäre es an einem Punkt eine perfekte Antwort gewesen, aber ich bekomme sehr, sehr dünne vertikale Linien auf jeder Seite des Elements in Chrome 66
kleiner winziger Mann

Anstelle von Weiß würde die Verwendung von transparent bei jedem Hintergrund funktionieren.
Jay Dadhania

Dies ist die beste Antwort. Es ist nicht erforderlich, die HTML- und reine CSS-Lösung zu ändern, wodurch Positionen wie die Rahmen nicht geändert werden.
Joel Karunungan

15

Sehr einfach ... außerhalb des "span" -Elements mit kleiner Schrift und Unterstreichung und innerhalb des "font" -Elements mit größerer Schriftgröße.

<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
Wenn Sie den veralteten ersetzen <font>Tag mit einem spanTag, würde dies die einzige Antwort sein , dass die Frage tatsächlich anspricht.
Matto

11

Eine andere Möglichkeit, dies zu tun, ist die Verwendung von ": after" (Pseudoelement) für das Element, das Sie unterstreichen möchten.

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

Es ist text-decoration-thicknessderzeit Teil der CSS Text Dekoration des Moduls 4 . Es befindet sich in der Phase "Editor's Draft" - es ist also in Arbeit und kann sich ändern. Ab Januar 2020 wird es nur in Firefox und Safari unterstützt .

Die CSS-Eigenschaft Textdekorationsdicke legt die Dicke oder Breite der Dekorationslinie fest, die für Text in einem Element verwendet wird, z. B. eine Linie durch, eine Unterstreichung oder eine Überstreichung.

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

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


Es gibt auch einen text-decoration-colorTeil des CSS Text Decoration Module Level 3 . Dies ist ausgereifter (Kandidatenempfehlung) und wird in den meisten gängigen Browsern unterstützt (Ausnahmen sind Edge und IE). Natürlich kann es nicht verwendet werden, um die Dicke der Linie zu ändern, aber es kann verwendet werden, um eine "gedämpfte" Unterstreichung zu erzielen (auch im Codepen gezeigt).


Wenn der Benutzer Firefox verwendet, kann auf alle Textdekorationselemente zugegriffen werden text-decoration. Ich weiß nicht, ob dies in allen enthalten sein soll, aber wenn ja, wird es in Zukunft sehr schön sein. EDIT: Es ist ein Arbeitsentwurf, um dies zu unterstützentext-decoration .
Stormblessed

9

Ich werde etwas Einfaches tun wie:

.thickness-underline {
    display: inline-block;
    text-decoration: none;
    border-bottom: 1px solid black;
    margin-bottom: -1px;
}
  • Sie können line-heightoder verwenden padding-bottom, um Besitz zwischen ihnen zu setzen
  • Sie können display: inlinein einigen Fällen verwenden

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

CSS unterstreichen


Leider kann Margin-Bottom keine negativen Werte erhalten.
Soleshoe

5
@soleshoe Das ist falsch, Sie können einen negativen Rand am unteren Rand eines Elements haben.
Alex

7

Mit background-imagekann auch eine Unterstreichung erstellt werden.

Es muss über nach unten verschoben background-positionund horizontal wiederholt werden. Die Linienbreite kann mit bis zu einem gewissen Grad angepasst werden background-size(der Hintergrund ist auf das Inhaltsfeld des Elements beschränkt).

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


5

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>

Endgültige Lösung: http://codepen.io/vikrant-icd/pen/gwNqoM

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

1
Problem ist unterstrichen wird von verschiedenen Browsern unterschiedlich gerendert.
Joel Karunungan

2

Meine Lösung: https://codepen.io/SOLESHOE/pen/QqJXYj

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

Sie können die Unterstreichungsposition mit dem Wert für die Zeilenhöhe, die Dicke der Unterstreichung und den Stil mit dem unteren Rand anpassen.

Achten Sie darauf, das Standard-Unterstreichungsverhalten zu deaktivieren, wenn Sie eine href unterstreichen möchten.


2

Dank der Magie der neuen CSS-Optionen ist dies jetzt nativ möglich:

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

Bisher ist die Unterstützung relativ schlecht . Aber es wird irgendwann in anderen Browsern als ff landen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.