텍스트를 text-decoration:underline
적용 했을 때 CSS를 사용 하면 텍스트와 밑줄 사이의 거리를 늘릴 수 있습니까?
답변
아니,하지만 당신은 같은 것을 함께 갈 수 border-bottom: 1px solid #000
와 padding-bottom: 3px
.
동일한 색상의 “밑줄”(이 예제에서는 테두리)을 원할 경우 색상 선언을 생략하면됩니다 (예 : border-bottom-width: 1px
및) border-bottom-style: solid
.
여러 줄의 경우 여러 줄의 텍스트를 요소 내부의 범위로 줄 바꿈 할 수 있습니다. 예는 <a href="#"><span>insert multiline texts here</span></a>
다음 단지 추가 border-bottom
및 padding
온 <span>
– 데모
답변
2019 업데이트 : CSS 실무 그룹은 새로운 속성을 추가 할 뿐만 아니라 텍스트 장식 레벨 4 초안을 게시 text-underline-offset
했습니다.text-decoration-thickness
하여 밑줄의 정확한 배치를 제어 할 수 있도록 )을 . 이 글을 쓰는 시점에서 초안 초안이며 어떤 브라우저에서도 구현되지 않았지만 결국 아래 기술을 쓸모없는 것으로 보입니다.
아래의 원래 답변.
border-bottom
직접 사용의 문제점 은로도 padding-bottom: 0
밑줄이 텍스트에서 너무 멀리 떨어져 있어보기에 좋지 않다는 것입니다. 따라서 우리는 여전히 완전한 통제권을 가지고 있지 않습니다.
픽셀 정확도를 제공하는 솔루션 중 하나는 :after
의사 요소 를 사용하는 것입니다 .
a {
text-decoration: none;
position: relative;
}
a:after {
content: '';
width: 100%;
position: absolute;
left: 0;
bottom: 1px;
border-width: 0 0 1px;
border-style: solid;
}
bottom
속성 을 변경하면 (음수가 좋습니다) 밑줄을 원하는 위치에 정확하게 배치 할 수 있습니다.
이 기술의 한 가지 문제점은 줄 바꿈에서 약간 이상하게 작동한다는 것입니다.
답변
이것을 사용할 수 있습니다 text-underline-position: under
자세한 내용은 여기를 참조하십시오 : https://css-tricks.com/almanac/properties/t/text-underline-position/
브라우저 호환성 도 참조하십시오 .
답변
여기 나를 위해 잘 작동하는 것이 있습니다.
<style type="text/css">
#underline-gap {
text-decoration: underline;
text-underline-position: under;
}
</style>
<body>
<h1 id="underline-gap"><a href="https://Google.com">Google</a></h1>
</body>
답변
비주얼 스타일의 세부 사항에 들어가는 것은 text-decoration:underline
쓸데없는 일이므로, 일종의 핵을 제거 text-decoration:underline
하고 마법의 먼 미래 버전의 CSS가 우리에게 더 많은 통제력을 부여 할 때까지 다른 것으로 대체해야합니다. .
이것은 나를 위해 일했다 :
a {
background-image: linear-gradient(
180deg, rgba(0,0,0,0),
rgba(0,0,0,0) 81%,
#222222 81.1%,
#222222 85%,
rgba(0,0,0,0) 85.1%,
rgba(0,0,0,0)
);
text-decoration: none;
}
<a href="#">Lorem ipsum</a> dolor sit amet, <a href="#">consetetur sadipscing</a> elitr, sed diam nonumy eirmod tempor <a href="#">invidunt ut labore.</a>
- 줄이 텍스트에서 얼마나 떨어져 있는지 변경하려면 % 값 (81 % 및 85 %)을 조정하십시오.
- 두 % 값의 차이를 조정하여 선 두께를 변경하십시오.
- 밑줄 색상을 변경하려면 색상 값을 조정하고 (# 222222)
- 여러 줄 인라인 요소와 함께 작동
- 어떤 배경에서도 작동
이전 버전과의 호환성을 위해 모든 독점 속성이 포함 된 버전은 다음과 같습니다.
a {
/* This code generated from: http://colorzilla.com/gradient-editor/ */
background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 81%, rgba(0,0,0,1) 81.1%, rgba(0,0,0,1) 85%, rgba(0,0,0,0) 85.1%, rgba(0,0,0,0) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0)), color-stop(81%,rgba(0,0,0,0)), color-stop(81.1%,rgba(0,0,0,1)), color-stop(85%,rgba(0,0,0,1)), color-stop(85.1%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,0))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* W3C */
text-decoration: none;
}
업데이트 : SASSY 버전
나는 이것을 위해 scss mixin을 만들었다. SASS를 사용하지 않으면 위의 일반 버전이 여전히 훌륭하게 작동합니다 …
@mixin fake-underline($color: #666, $top: 84%, $bottom: 90%) {
background-image: linear-gradient(
180deg, rgba(0,0,0,0),
rgba(0,0,0,0) $top,
$color $top + 0.1%,
$color $bottom,
rgba(0,0,0,0) $bottom + 0.1%,
rgba(0,0,0,0)
);
text-decoration: none;
}
다음과 같이 사용하십시오.
$blue = #0054a6;
a {
color: $blue;
@include fake-underline(lighten($blue,20%));
}
a.thick {
color: $blue;
@include fake-underline(lighten($blue,40%), 86%, 99%);
}
업데이트 2 : Descenders 팁
배경색이 단색이면 얇 text-stroke
거나text-shadow
과 같은 색 같은 색을 하여 내림차순으로 보이도록하십시오.
신용
이것은 원래 https://eager.io/app/smartunderline 에서 찾은 기술의 단순화 된 버전 이지만 기사가 게시되지 않았습니다.
답변
나는 그것이 오래된 질문이라는 것을 알고 있지만 한 줄 텍스트 설정 display: inline-block
과 설정은 height
테두리와 텍스트 사이의 거리를 제어하는 데 효과적이었습니다.
답변
@ last-child ‘s answer은 훌륭한 답변입니다!
그러나 H2에 테두리를 추가하면 텍스트보다 밑줄이 길어집니다.
CSS를 동적으로 작성하거나 운이 좋으면 텍스트가 무엇인지 알면 다음을 수행 할 수 있습니다.
-
를
content
올바른 길이로 변경하십시오 (즉, 동일한 -
텍스트) 글꼴 색을
transparent
(또는rgba(0,0,0,0)
)
밑줄을 표시하려면 <h2>Processing</h2>
(예를 들어) 마지막 자녀의 코드를 다음과 같이 변경하십시오.
a {
text-decoration: none;
position: relative;
}
a:after {
content: 'Processing';
color: transparent;
width: 100%;
position: absolute;
left: 0;
bottom: 1px;
border-width: 0 0 1px;
border-style: solid;
}