그래서, 보통과 같이 내 HTML 소스 코드를 포맷 : 그러나문제
<article>
<section>
<p>
Text...
Text...
</p>
<pre>
Code...
Code...
Code...
</pre>
<p>
Text...
Text...
</p>
</section>
</article>
을,이 포맷 스타일은 이러한 요소 내부의 모든 공백 이후 PRE 요소와 호환되지 않습니다 중요하다.
는 여기를 참조하십시오 :http://jsfiddle.net/pjEYm/
코드 블록의 프리젠 테이션을 해결하기 위해, 나는과 같이 소스 코드를 포맷해야 할 것입니다 :
<article>
<section>
<p>
Text...
Text...
</p>
<pre>
Code...
Code...
Code...</pre>
<p>
Text...
Text...
</p>
</section>
</article>
여기를 참조하십시오 :http://jsfiddle.net/pjEYm/1/
을그러나 이것은 소스 코드의 깔끔하고 가독성을 떨어 뜨립니다.
서식 스타일을 유지할 수있는 솔루션을 사용하고 싶습니다.
white-space
속성을 설정해 보았습니다. 솔루션에 가장 가까운 것이 white-space: pre-line
이지만 코드에서 들여 쓰기도 모두 제거됩니다.
는 여기를 참조하십시오 :http://jsfiddle.net/pjEYm/2/show/
그래서, 자바 스크립트와 함께 갔다 :
$('pre').each(function() {
var lines, offset;
// split the content of the PRE element into an array of lines
lines = $(this).text().split('\n');
// the last line is expected to be an empty line - remove it
if (lines.length > 1 && lines[ lines.length - 1 ].trim() === '') {
lines.pop();
}
// how much white-space do we need to remove form each line?
offset = lines[ 0 ].match(/^\s*/)[ 0 ].length;
// remove the exess white-space from the beginning of each line
lines = lines.map(function (line) {
return line.slice(offset);
});
// set this new content to the PRE element
$(this).text(lines.join('\n'));
});
라이브 데모 :http://jsfiddle.net/pjEYm/3/
이 작동하는 동안, 나는 여전히 어떤 종류의 선호 CSS 솔루션. 하나 있습니까?
귀하의 질문은 나의 해결책입니다. – pilau