CSS로 <br> 무시 하시겠습니까?


114

<br>일부 제목 과 같이 줄 바꿈이 삽입 된 사이트 에서 작업 중입니다. 소스 HTML을 편집 할 수 없다고 가정 할 때 CSS를 사용하여 이러한 중단을 무시할 수있는 방법이 있습니까?

저는 사이트를 모바일 최적화하고 있으므로 JavaScript를 사용하고 싶지 않습니다.


1
@Ben Johnson mk2 : 귀하의 질문에 대한 답변 : "Firefox 및 Opera에 대한 @Aneesh Karthik C의 답변에 대한 해결책을 원합니다."는 br요소를 사용할 수 없다는 것입니다 ! 그 이유는 이미 여러 번 설명되었습니다! 내 대답에서 나는 유효하고 강력하며 크로스 브라우저 방식으로 목표를 달성하는 대체 방법을 보여주었습니다.
Netsurfer

답변:


198

css를 사용하면 br 태그를 "숨길"수 있으며 효과가 없습니다.

br {
    display: none;
}

특정 제목 유형 내에서 일부만 숨기려면 CSS를 더 구체적으로 만드십시오.

h3 br {
    display: none;
}

11
Aneesh의 답변도 살펴보십시오. 관련성이 있으며 enobrev가 고려하지 않은 문제를 수정합니다.
Rick Calder

3
Aneesh의 답변은 환상적인 추가입니다. stackoverflow.com/a/18040142/14651
enobrev

2
이 솔루션은 Firefox에서 작동하지 않습니다. <br/> 주위에 공백이 없으면 <br/> 주위의 단어를 함께 결합합니다. 다음은 샘플입니다. 아래에서 이에
shinesecret

1
반응 형 디자인이 목표 인 경우 유일한 크로스 브라우저 솔루션은 @Netsurfer입니다. 명시된대로 질문에 정확히 대답하지는 않지만 모든 최신 브라우저에서 목표를 달성합니다.
Andrew Lundin 2014-07-25

94

참고 :이 솔루션은 자체 닫는 태그에 의사 요소를 잘못 적용하는 Webkit 브라우저에서만 작동합니다.

위의 답변에 대한 부록으로 어떤 경우에는 단순히 무시하는 대신 공백을 삽입해야한다는 점에 주목할 가치가 있습니다 <br>.

예를 들어 위의 답변은

Monday<br>05 August

Monday05 August

주간 이벤트 캘린더를 포맷하는 동안 확인했습니다. "월요일"뒤에 공백을 삽입하는 것이 좋습니다. CSS에 다음을 삽입하면 쉽게 수행 할 수 있습니다.

br  {
    content: ' '
}
br:after {
    content: ' '
}

이것은 만들 것입니다

Monday<br>05 August

처럼 보인다

Monday 05 August

쉼표로 구분하려는 경우 content속성을 br:after로 변경 ', '하거나 원하는 항목을 입력 ' '하여 구분 기호로 만들 수 있습니다! 그런데

Monday, 05 August

깔끔해 보인다 ;-)

참조는 여기 를 참조 하십시오 .

위의 답변에서와 같이 태그별로 만들고 싶다면 할 수 있습니다. 이 속성이 tag <h3>에 대해 작동하도록하려면 예를 들어 및 h3앞에 각각을 추가하면 됩니다 .brbr:after

가장 일반적으로 의사 태그에 대해 작동합니다.


2
매우 천재적입니다!
jon

1
잘하셨습니다. 실제로 단순히 비활성화했을 때의 결과에 대해 생각해보십시오!
Rick Calder

10
좋은 지적이지만 이것은 Firefox 및 IE가있는 Webkit 브라우저 (Chrome 및 Safari)에서만 작동하는 것 같습니다.이 기술은 작동하지 않습니다. jsfiddle.net/nicooprat/ZHxNA 를 Firefox 및 IE로 확인하십시오. br을 대체하는 방법에 대한 아이디어가 있습니다. 모든 메인 브라우저와 함께 작동하도록 공간이 있습니까?
firepol 2013 년

6
@firepol : A는 같이 사실, 파이어 폭스와 IE는 "올바른"일을하는 <br />하나 개 의사 요소에 대한 작업에 안되는 요소 . 그리고 content의사 요소에서만 작동합니다.
ScottS

7
이것은 @ScottS가 이미 작성한 것 때문에 매우 잘못된 해결책입니다. "콘텐츠"는 의사 요소에서만 작동해야하며 의사 요소는 자체 닫힘 태그와 함께 작동하지 않아야합니다. 지금은이 방법이 작동 할 수 있지만이 솔루션을 미래 지향적이라고 할 수는 없습니다.
nd_macias 2014

16

스타일을 추가하면

br{
    display: none;
}

그러면 작동합니다. 그래도 이전 버전의 IE에서 작동하는지 확실하지 않습니다.


3
이것은 이전에 게시되었고 더 적은 표를 가지고 있습니다 .. 왜?
Mr_Green 2014

때때로, 우리는 무시 당합니다; (
Tim B James

@TimBJames 그것은 FIREFOX에서 작동하지 않습니다 당신은 위의
shinesecret

12

이것이 내가하는 방법입니다.

br { 
    display: inline;
    content: ' ';
    clear:none;
}

6

대체 요소에 대해 "정의되지 않은"의사 요소에 따라 다르기 때문에 공백 메서드가 작동하도록하려면 span대신 요소를 사용할 수 있습니다 br.

HTML

<p>
   To break lines<span class="line-break">in a paragraph,</span><span>don't use</span><span>the 'br' element.</span>
</p>

CSS

span {white-space: pre;}

span:after {content: ' ';}

span.line-break {display: block;}

span.line-break:after {content: none;}

데모

줄 바꿈은 적절한 범위 요소를로 설정하여 간단히 수행됩니다 display:block.

HTML 마크 업에서 ID 및 / 또는 클래스를 사용하여 CSS로 모든 단일 또는 조합 요소를 쉽게 타겟팅하거나 nth-child().

따라서 반응 형 레이아웃에 미디어 쿼리를 사용하여 다른 중단 점을 정의 할 수 있습니다.

또한 Javascript (jQuery)로 클래스를 추가 / 제거 / 토글 할 수도 있습니다.

이 방법의 "장점"은 견고성입니다. 의사 요소를 지원하는 모든 브라우저에서 작동합니다 (참조 : Can I use-CSS 생성 콘텐츠 ).

대안으로 의사 요소를 통해 줄 바꿈을 추가 할 수도 있습니다.

span.break:before {  
    content: "\A";
    white-space: pre;
}

데모


4
"소스 HTML을 편집 할 수 없다고 가정하면"질문의이 부분을 놓쳤습니까?
ScottS 2014

1
@ScottS : 아니요,하지 않았습니다. 아마도 당신은 부분을 놓쳤을 것입니다 : '나는 파이어 폭스와 오페라에 대한 @Aneesh Karthik C의 대답에 대한 해결책을 원합니다'(현상금을 시작한 사람이 OP가 아니기 때문에). 그리고 이것에 대한 대답 <br>은 적어도 크로스 브라우저에서는 불가능하다는 것입니다 . 그래서 대안을 보여주었습니다.
Netsurfer 2014

2
아니요, 그 부분을 놓치지 않았습니다 (OP는 현상금과 Aneesh의 답변에 초점이 다릅니다). 그러나 Aneesh의 대답은 "CSS로 <br> 무시 하시겠습니까?"라는 전체 질문의 맥락에 있습니다. HTML을 실제로 제어 할 수있는 경우 요소를 삭제<br> 하면 문제가 해결 된다는 것이 다소 분명해 보입니다 (아마도 공백으로 대체). 따라서 질문 전체가 염려하는 전체 문제 는 html을 제어수없는 경우입니다 . 그들이 정말로 그것을 해결하기 위해 (어떤 이유로 든) 자바 스크립트를 사용하고 싶지 않다는 추가 규정으로 인해 복잡합니다.
ScottS 2014

" <br>CSS 로 무시하는 방법"이라는 질문 이미 답변을 받았습니다. 그리고 당신이 HTML을 제어 할 수있는 경우에만 변경을 원합니다. 그러나 반응 형 디자인에서는 줄 바꿈을 제어하는 ​​것이 바람직합니다 (자동 줄 바꿈 제외). 그리고 그러한 경우 공백을 갖거나 CSS (미디어 쿼리)에 의해 제어되지 않는 방법은 목표를 달성하기위한 최소한 "하나의 방법"입니다.
Netsurfer 2014

위의 솔루션이 더 이상 firefox에서 작동하지 않기 때문에 이것은 더 잘 작동했습니다.
Christos Hrousis

3

나를 위해 다음과 같이 더 좋아 보입니다.

Some text, Some text, Some text

br {
  display: inline;
  content: '';
}

br:after {
  content: ', ';
  display: inline-block;
}
<div style="display:block">
  <span>Some text</span>
  <br>
  <span>Some text</span>
  <br>
  <span>Some text</span>
</div>


1

이를 위해 다음과 같이 할 수 있습니다.

br{display: none;}

PRE 태그 안에 있으면 PRE 태그가 일반 블록 요소처럼 작동하도록하려면 다음 CSS를 사용할 수 있습니다.

pre {white-space: normal;}

또는 다음 과 같이 Aneesh Karthik C 의 스타일을 따를 수 있습니다 .

br  {content: ' '}
br:after {content: ' '}

나는 당신이 그것을 얻은 것 같아요


나는 당신이 유사 요소가 좋아 ::before하고 ::after적어도 "대체 된 요소"에 대해 "정의되지 않은" 요점을 놓쳤다 고 생각 한다 br. 따라서 신뢰할 수있는 일관된 브라우저 동작은 없습니다! 할 수있는 유일한 방법은 이러한 요소에 의사 요소사용하지 않는 것입니다 !
Netsurfer 2014

1

질문에 따라 Aneesh Karthik C 접근 방식을 사용하여 Firefox 및 Opera에서이 문제를 해결 하려면 "float"right "속성을 추가해야합니다.

여기 에서 예를 확인 하십시오. 이 CSS는 Firefox (26.0), Opera (12.15), Chrome (32.0.1700) 및 Safari (7.0)에서 작동합니다.

br {
   content: " ";  
   float:right; 
}

나는 이것이 당신의 질문에 대답하기를 바랍니다 !!


content 속성은 CSS 의사 요소에만 영향을 미칩니다. 따라서 데모에서는 전혀 쓸모가 없습니다! 그리고 a를 "중화"하는 방법 br은 이미 답변되어 있습니다 (두 번 이상). 질문은 조건부 공백 에 관한 것입니다 . 그리고 이것은 의사 요소의 사용을 필요로하기 때문에br .
Netsurfer

질문을주의 깊게 읽으면. 당신은 대답을 이해할 것입니다. 나는 그것을 display : none으로 설정함으로써 피하는 것이 가장 좋은 위의 대답을 보았다. 그러나 두 번째 질문에 따르면 FF 및 Opera for Aneesh 솔루션에서 발생하는 문제를 어떻게 해결할 수 있는지 알아보고자합니다.
shinesecret 2014

나는 질문뿐만 아니라 모든 답변과 코멘트도 매우주의 깊게 읽었습니다. 콘텐츠 속성 br은 단순히 말도 안됩니다! 그리고 나머지 답변이 "조건부 공백 및 라인 브레카"와 관련이 있는지 여전히 알 수 없습니다. 좀 더 설명 해주시 겠어요?
Netsurfer 2014

1
br요소 주위에 이미 공백이 있으므로 귀하의 예는 오해의 소지가 있습니다 . 이를 제거하면 공간을 추가하는 데 작동하지 않는 것을 볼 수 있습니다.
ScottS 2014

1
귀하의 예 br에는 첫 번째와 마지막 요소 앞뒤에 공백 이있는 세 가지 요소가 있습니다. 솔루션이 실제로 작동하지 않는 것처럼 보이게하는 공간입니다. 수정 된 예제에서했던 것처럼 이러한 공간을 제거하면 솔루션이 Firefox에서 공간을 전혀 추가하지 않는다는 것을 알 수 있습니다.
ScottS 2014

0

이 질문은 이미 해결 된 것처럼 보이지만 수락 된 답변으로는 Firefox에서 문제가 해결되지 않았습니다. 파이어 폭스 (그리고 IE는 시도하지 않았지만)는 "content"태그의 내용을 읽는 동안 공백을 건너 뜁니다. Mozilla가 왜 그렇게했는지 완전히 이해하지만 문제가 있습니다. 내가 찾은 가장 쉬운 해결 방법은 아래와 같이 일반 공백 대신 깨지지 않는 공백을 사용하는 것입니다.

.noLineBreaks br:before{
content: '\a0'
}

보세요 .


1
바이올린에 before요소 가없는 이유는 무엇 br입니까? 당신은 br바이올린에 당신의 html 에조차 없습니다. 문제의 일부는 일부 브라우저에서 before작동하지 않는다는 것입니다 br.
ScottS

이는 사양에 명시된대로 상당히 예상되는 동작입니다. 2.5.1 Common parser
idioms

그쪽은 확실히 이상합니다. 프로젝트에 적용 할 때 작동합니다. 내 텍스트가 모두 HTML은 아니지만 내가 변경하는 내용은 데이터베이스에서 가져온 것입니다. 내 anwser가 도움이되지 않아서 죄송합니다.
Santo Guevarra 2014

0

예, 무시할 수 있습니다 <br>. 특히 모바일 장치의 중단을 제거해야하는 반응 형 디자인의 경우이 기능이 필요할 수 있습니다.

HTML

<h2>

  Where ever you go <br class="break"> i am there.

</h2>

모바일 예제 용 CSS

/* Resize the browser window to check */

@media (max-width: 640px) 
{
  .break {display: none;}
}

이 Codepen을 확인하십시오.
https://codepen.io/fluidbrush/pen/pojGQyM


-1

댓글로 간단히 변환 할 수 있습니다.

또는 다음을 수행 할 수 있습니다.

br {
display: none;
}

하지만 원하지 않는다면 왜 거기에 두는 거죠?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.