2008-09-25 11 views
6

이것은 바보 같은 질문 일 수도 있지만,이 방법을 사용하는 것이 더 좋거나 적절한 방법이 있다면 배우는 것을 좋아합니다.내 웹 페이지에 작은 공백이 계속 나타나는 이유는 무엇입니까?

저는 최근에 HTML 페이지의 렌더링 된 버전에 작은 공백이 표시되는 등 최근 몇 차례에 걸쳐 실행되었습니다. 직관적으로 나는 텍스트 또는 엔티티의 외부에서 페이지의 HTML의 형식이 중요하지 않아야하지만 분명히 그렇게하기 때문에 이것이 존재하지 않아야한다고 생각합니다.

나는이 말을 인용하고 있습니다. 클라이언트의 포토샵 파일을 통해 사이트의 모습을보고 싶습니다. 그들은 기본적으로이 파일의 이미지에 픽셀 완벽하게 보이기를 원합니다.

페이지의 장소 중 하나가 메뉴 막대를 호출합니다. 각 메뉴 막대는 호버링시 변경 비트를 나타내며 하이퍼 링크와 같은 역할을합니다. Photoshop 파일에서이 막대는 하나의 긴 막대이므로 저렴하고 쉬운 방법입니다. 이렇게하려면 해당 세그먼트를 여러 이미지로 분할 한 다음 파일에서 서로를 배치해야합니다.

그래서 본능적으로 난 그렇게 등

<a href="page1.html"> 
    <img src="image1.png" /> 
</a> 
<a href="page2.html"> 
    <img src="image2.png" /> 
</a> 
<a href="page3.html"> 
    <img src="image3.png" /> 
</a> 

하고 (거기에 더이야하지만이 요점이다)처럼 배치.

문제는 이미지가 클라이언트 사이에 픽셀이 완벽하기를 바라기 때문에 받아 들일 수없는 작은 공간을 가지고 있다는 것입니다. 제대로 렌더링 갈 수

한 가지 방법은 이미지 사이의 캐리지 리턴을 제거하는 것입니다

이미지를 잘 서로 (원하는 효과)에 대한 최대 이동하지만 믿을 수 없을만큼 긴 줄을하게 만드는
<a href="page1.html"> 
    <img src="image1.png" /> 
</a> 
<a href="page2.html"> 
    <img src="image2.png" /> 
</a> 
<a href="page3.html"> 
    <img src="image3.png" /> 
</a> 

그리고 코드를 유지하기가 더 어렵습니다. (그래서 여기에 줄 바꿈이 있습니다. 이것은 단순화 된 버전입니다. 실제 파일은 더 긴 파일 이름과 자바 스크립트를 사용하여 호버링을 수행합니다.)

이것은 발생하지 않아야하지만 HTML의 캐리지 리턴이 작은 빈 공간으로 렌더링되는 것처럼 보입니다. 그리고 이것은 모든 브라우저에서 발생합니다.

위의 두 조각이 동일하게 렌더링되어야한다고 생각하던가요? 내가 잘못하고 있는게 있니? 파일을 잘못된 인코딩으로 저장 했습니까? 이 링크들 모두를 완벽하게 배치 된 CSS 요소로 대신해야합니까?

답변

14

공백 (캐리지 리턴 포함)은 일반적으로 모든 브라우저에서 공백으로 렌더링됩니다.

당신은 다른 후 요소에 1 점을 추가하는 듯합니다,하지만 당신은 트릭 사용할 수 있습니다

<a href="page1.html"><img src="image1.png" 
/></a><a href="page2.html"><img src="image2.png" 
/></a><a href="page3.html"><img src="image3.png" 
/></a> 

이것은 또한 약간의 추한 모습을,하지만 여전히 하나 개의 라인보다 더 낫다. 서식을 변경할 수도 있지만, 캐리지 리턴은 요소 내부가 아닌 요소 내부에 추가하는 것이 좋습니다.

+0

좋은 답변들, 나는 이것을 할 생각이 전혀 없었다! –

+0

하나의 단일 라인보다 낫다. 나는 이것을 시도해야한다. – TonyOssa

2

HTML 사양의 일부입니다. 공백은 마크 업에 있으므로 문서의 일부로 간주됩니다.당신이 서식을 싫어하기 때문에

당신이있어 유일한 다른 옵션은 HTML 태그를 파괴하는 것입니다 : 내 의견으로는 바람직하지 않다, 또는 동적으로 HTML을 생성

<a href="..."><img src=".." /></a 
    ><a href="..."><img src=".." /></a 
    ><a href="..."><img src=".." /></a 

- 자바 스크립트 또는를 통해 하나 템플릿 시스템과 동적 html을 사용합니다.

+0

좋은 답변들, 나는 이것을 할 생각이 전혀 없었다! –

7

귀하의 페이지에 충분히 일반적인지는 잘 모르겠지만 이러한 특정 코드를 개의 태그로 분류하여 모두 왼쪽으로 떠올리면 HTML 형식이 무엇이든 상관없이 함께 묶을 수 있습니다.

<style> 
    a.together { 
     float:left; 
    } 
</style> 

<a class='together' href="page1.html"><img src="image1.png" /></a> 
<a class='together' href="page2.html"><img src="image2.png" /></a> 
<a class='together' href="page3.html"><img src="image3.png" /></a> 
+0

인라인 요소를 플로트 할 수 없습니다. "display : 블록"도 사용해야합니다. –

+0

나는 이것에 대한 대답을 받아 들였지만 나는 상상적 인 해결 방법을 제시하는 사람들이 있다는 것을 좋아한다. 감사! –

+0

@ Dan : 흠, FF3에서 이것을 테스트했는데 아무런 문제가 없었습니다. 아마도 FF의 표준 준수 문제 일 수 있습니다. –

2

이유는 간단합니다. HTML 공백은 중요하지만 한 번만 중요합니다. 반복되는 공백은 무시되고 첫 번째 공백 만 표시됩니다.

이 문제를 피할 수있는 유일한 방법은 요소 사이에 공백을 넣지 않는 것입니다.

테이블 기반 레이아웃이 현재보다 적을 때, 제로 경계, 0 패딩 테이블을 사용하여 요소를 소스 코드의 개별 행에 정렬하면서 정렬 할 수 있습니다.

1

웹 사이트에서 탭 인터페이스를 수행하려는 경우 제대로 수행하려면 큰 노력을 기울이면 유용 할 것입니다. CSS 탭 구현의 좋은 예가있는 많은 웹 사이트가 있습니다. 그 중 하나를 사용하는 것을 고려하십시오.

This one에는 많은 CSS + 자바 스크립트/AJAX 탭이 있습니다. 또는 this set of simple CSS examples (일부 스타일)을 참조하십시오. 마지막으로, 이것을 실제로 체크 아웃하십시오. tabs generator.

2

브라우저에서 캐리지 리턴을 공백으로 처리하기 때문에 위에서 설명한 동작이 true입니다.

#nav a { display: block; float: left; } 
: 특정 요소만을, 즉의 선택 범위를 좁히려 수 있도록

a { display: block; float: left; } 

은, 위의 규칙은 모든 링크에 적용 참고 :이 문제를 해결하려면, 당신은 너무처럼 스타일을 지정할 수 있습니다

2

내가 처리하는 방법은 정렬되지 않은 목록을 사용하고 각 이미지/링크를 항목으로 만드는 것입니다. 그런 다음 CSS를 사용하여 각 항목을 인라인으로 표시 한 다음 왼쪽으로 이동하십시오.

이렇게하면 훨씬 더 많은 유연성을 얻을 수 있으며 마크 업을 매우 쉽게 읽을 수 있습니다.