wake-up-neo.com

H1 텍스트를 로고 이미지로 교체 : SEO 및 접근성을위한 최선의 방법?

거기에는 몇 가지 다른 기술이있는 것 같습니다. 그래서 나는 이것에 대한 "결정적인"답변을 얻고 싶었습니다 ...

웹 사이트에서는 홈페이지로 연결되는 로고를 만드는 것이 일반적입니다. 검색 엔진, 화면 판독기, IE 6+ 및 CSS 및/또는 이미지를 비활성화 한 브라우저에 가장 최적화하면서 동일한 작업을 수행하고 싶습니다.

예제 1 : h1 태그를 사용하지 않습니다. SEO에 좋지 않은가?

<div id="logo">
    <a href="">
        <img src="logo.png" alt="Stack Overflow" />
    </a>
</div>

예 2 : 어딘가에서 찾았습니다. CSS는 약간 해키처럼 보입니다.

<h1 id="logo">
    <a href="">Stack Overflow</a>
</h1>
/* css */
#logo {
    padding: 70px 0 0 0;
    overflow: hidden;
    background-image: url("logo.png");
    background-repeat: no-repeat;
    height: 0px !important;
    height /**/:70px;
}

예 3 : 동일한 HTML, 텍스트 들여 쓰기를 사용한 다른 접근 방식. 이것은 이미지 교체에 대한 "Phark"접근 방식입니다.

<h1 id="logo">
    <a href="">Stack Overflow</a>
</h1>
/* css */
#logo {
    background: transparent url("logo.png") no-repeat scroll 0% 0%;
    width: 250px;
    height: 70px;
    text-indent: -3333px;
    border: 0;
    margin: 0;
}

#logo a {
    display: block;
    width: 280px; /* larger than actual image? */
    height: 120px;
    text-decoration: none;
    border: 0;
}

실시 예 4 : Leahy-Langridge-Jefferies 방법 . 이미지 및/또는 CSS가 꺼져있을 때 표시됩니다.

<h1 id="logo" class="logo">
    <a href="">Stack Overflow</a>
</h1>
/* css */
h1.logo {
    margin-top: 15px; /* for this particular site, set this as you like */
    position: relative; /* allows child element to be placed positioned wrt this one */
    overflow:hidden; /* don’t let content leak beyond the header - not needed as height of anchor will cover whole header */
    padding: 0; /* needed to counter the reset/default styles */
}

h1.logo a {
    position: absolute; /* defaults to top:0, left:0 and so these can be left out */
    height: 0; /* hiding text, prevent it peaking out */
    width: 100%; /* 686px; fill the parent element */
    background-position: left top;
    background-repeat: no-repeat;
}

h1#logo {
    height: 60px; /* height of replacement image */
}

h1#logo a {
    padding-top: 60px; /* height of the replacement image */
    background-image: url("logo.png"); /* the replacement image */
}

이런 종류의 물건에 가장 적합한 방법은 무엇입니까? 답변에 html과 css를 입력하십시오.

230
Andrew

옵션이 없습니다 :

<h1>
  <a href="http://stackoverflow.com">
    <img src="logo.png" alt="Stack Overflow" />
  </a>
</h1>

h1에 대한 href 및 img의 제목은 매우 중요합니다!

211
Rahul

나는 위의 것과 거의 비슷하지만 접근성 이유로 브라우저에서 이미지가 비활성화 될 가능성을 지원해야합니다. 따라서 페이지 외부의 링크에서 텍스트를 들여 쓰지 않고 <span> </ code>을 <a>의 전체 너비와 높이에 배치하고 z-index를 사용하여 스택 순서로 링크 텍스트 위에 배치하여이를 다룹니다.

가격은 하나의 빈 <span>이지만 <h1>만큼 중요한 것을 기꺼이 가지고 있습니다.

<h1 id="logo">
  <a href="">Stack Overflow<span></span></a>
</h1>
#logo a {
   position:relative;
   display:block;
   width:[image width];
   height:[image height]; }

#logo a span {
   display:block;
   position:absolute;
   width:100%;
   height:100%;
   background:#ffffff url(image.png) no-repeat left top;
   z-index:100; /* Places <span> on top of <a> text */  }
17
Rob Knight

접근성 이유가 중요한 경우 첫 번째 변형을 사용합니다 (고객이 스타일없이 이미지를보고자 할 때)

<div id="logo">
    <a href="">
        <img src="logo.png" alt="Stack Overflow" />
    </a>
</div>

위의 HTML 코드는 올바른 구조를 가지고 있으므로 방문자에게 적합한 것으로 결정해야하기 때문에 가상의 SEO 요구 사항을 따를 필요가 없습니다.

또한 HTML 코드가 적은 변형을 사용할 수 있습니다

<h1 id="logo">
  <a href=""><span>Stack Overflow</span></a>
</h1>
/* position code, it may be absolute position or normal - depends on other parts of your site */
#logo {
  ...
}

#logo a {
   display:block;
   width: actual_image_width;
   height: actual_image_height;
   background: url(image.png) no-repeat left top;
}

/* for accessibility reasons - without styles variant*/
#logo a span {display: none}

다른 모든 CSS 스타일과 해킹은 작업에 해당하지 않기 때문에 제거했습니다. 특별한 경우에만 유용 할 수 있습니다.

11
se_pavel

여기서 조금 늦었지만, 저항 할 수 없었습니다.

당신은 질문에 반쯤 빠져 있습니다. 설명하겠습니다 :

이미지 교체에 대한 귀하의 질문의 전반부는 유효한 질문이며, 제 의견은 로고의 경우 간단한 이미지라는 것입니다. 대체 속성; 포지셔닝을위한 CSS로 충분합니다.

로고의 H1의 "SEO 값"에 대한 질문의 나머지 절반은 다른 유형의 콘텐츠에 사용할 요소를 결정하는 잘못된 방법입니다.

로고는 기본 제목이 아니거나 전혀 제목이 아니며 H1 요소를 사용하여 사이트의 각 페이지에 로고를 마크 업하면 순위에 좋지 않은 것 (약간)보다 더 해를 끼칩니다. 의미 적으로 제목 (H1-H6)은 콘텐츠 제목 및 부제목에만 적합합니다.

HTML5에서는 페이지 당 하나 이상의 제목이 허용되지만 로고 중 하나를 사용할 자격이 없습니다. 퍼지 녹색 위젯 일 수있는 일부 로고와 일부 텍스트가 이미지를 헤더 옆에있는 이유는 콘텐츠를 구성하는 계층 적 요소가 아니라 일종의 "스탬프"입니다. 사이트의 각 페이지 중 첫 번째 (제목을 더 많이 사용하는지 여부는 제목 체계에 따라 다름) H1이 제목을 표시해야합니다. 인덱스 페이지의 주요 기본 제목은 'NYC의 퍼지 그린 위젯에 가장 적합한 소스'일 수 있습니다. 다른 페이지의 기본 제목은 '퍼지 위젯에 대한 운송 세부 사항'일 수 있습니다. 다른 페이지에서는 '버트 퍼지 위젯에 대하여'일 수 있습니다. 당신은 아이디어를 얻습니다.

참고 사항 : 들리는 것처럼 놀라운 마크 업의 예를 보려면 Google이 소유 한 웹 속성의 출처를 보지 마십시오. 이것은 그 자체에 대한 전체 게시물입니다.

HTML과 그 요소를 최대한 활용하려면 HTML5 specs 를 살펴보고 검색 엔진보다 먼저 사용자에게 (HTML) 의미 및 가치를 기반으로 마크 업 결정을 내리십시오. SEO로 더 나은 성공을 거둘 수 있습니다.

3
Mattypants

H1 토론 에 관심이 있으신 것 같습니다. 페이지 제목이나 로고에 h1 요소를 사용할 지에 대한 토론입니다.

개인적으로 나는 당신의 첫 번째 제안, 다음 라인을 따라 갈 것입니다 :

<div id="header">
    <a href="http://example.com/"><img src="images/logo.png" id="site-logo" alt="MyCorp" /></a>
</div>

<!-- or alternatively (with css in a stylesheet ofc-->
<div id="header">
    <div id="logo" style="background: url('logo.png'); display: block; 
        float: left; width: 100px; height: 50px;">
        <a href="#" style="display: block; height: 50px; width: 100px;">
            <span style="visibility: hidden;">Homepage</span>
        </a>
    </div>
    <!-- with css in a stylesheet: -->
    <div id="logo"><a href="#"><span>Homepage</span></a></div>
</div>


<div id="body">
    <h1>About Us</h1>
    <p>MyCorp has been dealing in narcotics for over nine-thousand years...</p>
</div>

물론 이것은 디자인에서 페이지 제목을 사용하는지 여부에 달려 있지만 이것이이 문제에 대한 나의 입장입니다.

3
Ross
<h1>
  <a href="http://stackoverflow.com">
  Stack Overflow<img src="logo.png" alt="Stack Overflow" />
  </a>
</h1>

SEO는 H1 태그에 높은 우선 순위를 부여하고 h1 태그 내부는 사이트 이름이어야하므로 SEO에 적합한 옵션입니다. SEO에서 사이트 이름을 검색 할 때이 방법을 사용하면 사이트 로고도 표시됩니다.

사이트 이름 OR 텍스트를 숨기려면 텍스트 들여 쓰기를 음수 값으로 사용하십시오. 전의

h1 a {
 text-indent: -99999px;
}
2
Vishal Gupta

<a> 요소에서 제목이 누락되었습니다.

<h1 id="logo">
  <a href="#" title="..."><span>Stack Overflow</span></a>
</h1>

클라이언트가 해당 이미지의 의미가 무엇인지 알고 싶기 때문에 <a> 요소에 제목을 넣는 것이 좋습니다. text-indent 테스트에 대해 <h1>를 설정 했으므로 프런트 엔드 사용자는 로고 위에 마우스를 놓으면서 주 로고 정보를 얻을 수 있습니다.

2
30ml

아무도 다루지 않은 한 가지 점은 h1 속성이 모든 페이지에 고유해야하며 사이트 로고를 사용하면 사이트의 모든 페이지에서 H1을 효과적으로 복제한다는 것입니다.

최고의 SEO h1은 종종 판매 또는 미적 가치에 최고가 아니기 때문에 각 페이지에 z 색인 숨겨진 h1을 사용하고 싶습니다.

1
DFA

SEO 이유 :

<div itemscope itemtype="https://schema.org/Organization">
 <p id="logo"><a href="/"><span itemprop="Brand">Your business</span> <span class="icon fa-stg"></span> - <span itemprop="makesOffer">sell staff</span></a></p>
 </div>
   <h1>Your awesome title</h1>
0
Potky

W3C는 어떻습니까?

https://www.w3.org/ 를 살펴보십시오. 이미지에 z-index:1가 있으며 z-index:0에 연결된 position: absolute;로 인해 텍스트가 여기 있지만 뒤에 있습니다.

원래 HTML :

<h1 class="logo">
    <a tabindex="2" accesskey="1" href="/">
        <img src="/2008/site/images/logo-w3c-mobile-lg" width="90" height="53" alt="W3C">
    </a>
    <span class="alt-logo">W3C</span>
</h1>

원래 CSS :

#w3c_mast h1 a {
    display: block;
    float: left;
    background: url(../images/logo-w3c-screen-lg) no-repeat top left;
    width: 100%;
    height: 107px;
    position: relative;
    z-index: 1;
}
.alt-logo {
    display: block;
    position: absolute;
    left: 20px;
    z-index: 0;
    background-color: #fff;
}
0
Sebastien Horin

새로운 (켈러) 방법은 -9999px 방법보다 속도를 향상시켜야합니다.

.hide-text {
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
}

여기에 권장됩니다 : http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/

0
coral_sea

모르겠지만 이것이 사용 된 형식입니다 ...

<h1>
    <span id="site-logo" title="xxx" href="#" target="_self">
        <img src="http://www.xxx.com/images/xxx.png" alt="xxx" width="xxx" height="xxx" />
        <a style="display:none">
            <strong>xxx</strong>
        </a>
    </span>
</h1>

간단하고 그것은 내가 볼 수있는 한 내 사이트를 해치지 않았습니다. 당신은 그것을 CSS 할 수는 있지만 더 빨리로드되는 것을 보지 못합니다.

0
Taswiz

이미지가 비활성화 된 경우 대체 텍스트가 표시되므로 예제 1이 충분하다고 생각합니다. 또한 검색 엔진이 사이트에 대해 알 수 있도록 도와줍니다.

업데이트 : 내가 틀린 것 같습니다. 이것을 확인하십시오 article .

0
Shoban