css h1-텍스트 너비 만


80

내 사이트에 H1 스타일이 있습니다.

.centercol h1 {
    color: #006bb6;
    font-weight: normal;
    font-size: 18px;
    padding:3px 3px 3px 6px;
    border-left:3px solid #c6c1b8;
    background:#f2efe9;
    display:block;
}

배경색은 centercol의 전체 너비, 500px에 걸쳐 있습니다.

이 H1을 H1의 텍스트 너비에만 확장하려면 어떻게해야합니까?

답변:


108

표시를 위해 인라인 블록 값을 사용할 수 있지만이 경우 h1의 블록 기능을 잃게됩니다. 즉, 형제가 인라인 요소 인 경우 h1과 함께 인라인으로 표시됩니다 (이 경우 줄 바꿈을 사용할 수 있음
).

display:inline-block; 

26
이렇게 display:table;하면 줄 바꿈을 사용할 필요가 없습니다.
Arno van Oordt 2013 년

인용구 너비를 설정하는 방법 (사진의 왼쪽에 맞아야 함)을 설정하는 방법을 궁금해하는 사람들을 위해 display : block; 오버 플로우 : 숨겨진
JinSnow

35
.h1 {
  width: -moz-fit-content;
  width: fit-content;

  // workaround for IE11
  display: table;
}

모든 최신 브라우저는이를 지원 width: fit-content합니다.

IE11의 경우 또는 display: table처럼 여백 붕괴를 중단하지 않는 이 동작을 에뮬레이션 할 수 있습니다.display: inline-blockfloat: left


1
이것은 최선의 답변입니다
숀 T

19

display:inline-block이 동작을 강제 하는 데 사용할 수 있습니다.


4

이에 대한 쉬운 해결 방법은 H1 요소를 왼쪽으로 띄우는 것입니다.

.centercol h1{
    background: #F2EFE9;
    border-left: 3px solid #C6C1B8;
    color: #006BB6;
    display: block;
    float: left;
    font-weight: normal;
    font-size: 18px;
    padding: 3px 3px 3px 6px;
}

좀 더 일반적인 대답을 찾는 사람을 위해 H1 요소의 너비에 "float : left"스타일의 효과를 보여주는 간단한 jsfiddle 예제를 작성했습니다.

http://jsfiddle.net/zmEBt/1/


3

이것은 당신 <h1> centercol의 너비 이기 때문 입니다. 너비를 지정하고 중앙에 배치 <h1>하려면 사용 margin: 0 auto;하십시오.

또는를 플로팅 <h1>하여 텍스트 너비 만 정확히 만들 수 있습니다.


너비를 지정하면 더 많은 텍스트가있는 H1 태그가 줄 바꿈됩니다. 맞습니까?
tony noriega

0

나는 최근에 표 캡션을 사용 하여이 문제를 해결했지만 권장 여부는 말할 수 없습니다. 다른 답변은 제 경우에는 운동하지 않는 것 같습니다.

h1 {
  display: table-caption;
}

-1

다른 제안과 비슷하게 다음 코드를 사용할 수 있습니다. 그러나 여백으로 가면 : 0 auto; route H1의 상단과 하단에 대한 여백을 0이 아닌 다른 값으로 설정하는 것이 좋습니다. 따라서 여백 : 6px auto; 또는 뭔가.

.centercol h1{
    display: inline-block;
    color: #006bb6;
    font-weight: normal;
    font-size: 18px;
    padding:3px 3px 3px 6px;
    border-left:3px solid #c6c1b8;
    background:#f2efe9;
    display:block;
}

-3

flexbox에서 align-self-start, align-self-center ...

.centercol h1{
    background: #F2EFE9;
    border-left: 3px solid #C6C1B8;
    color: #006BB6;
    display: block;
    align-self: center;
    font-weight: normal;
    font-size: 18px;
    padding: 3px 3px 3px 6px;
}

4
당신의 대답은 불완전, 당신도 인 flexbox 무엇인지 설명하지 않았다
엘리아스 소아레스

-6

당신은 사용할 수있는 <span>대신의를 <h1>.


스타일링을하기 위해 의미론 (의미 적 의미)을 변경하는 것은별로 좋은 생각이 아닙니다. <h1>css 속성과 함께 사용 하는 것이 훨씬 낫습니다 display: inline-block.
magikMaker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.