IR(image replacement)기법은 검색 최적화를 위해 텍스트를 HTML에 작성하고 CSS를 활용하여 배경 이미지로 대체하는 기법이다.

전통적으로는 내부의 텍스트를 안보이도록 하기 위해 text-indent 속성을 많이 활용했다. 

        .logo a{
            width: 100px;
            height:50px;
            background:url(../images/logo.png) no-repeat;
            text-indent: -9999em;
            display: block;
            overflow: hidden;
        }

하지만 최근에는 rect 속성을 이용하여 글씨 부분에 마스크를 적용하여 가리는 추세인 것 같다. 최근에 네이버와 애플의 로고 방식이 아래와 같이 변경되었다. 

 

[ 네이버 로고 - HTML ]

a태그에는 특별한 속성이 없고 ::before요소에 로고 이미지를 배경으로 처리했다. 배경을 sprite 이미지로 로고 부분이 보이도록 background-position으로 위치를 잡아주었다. 

#header .logo_default .logo_naver:before {
    display: inline-block;
    width: 222px;
    height: 52px;
    background-position: 0 -158px;
    background-repeat: no-repeat;
    vertical-align: top;
    content: '';
}

핵심은 span태그를 어떻게 보이지 않도록 했느냐이다.

.blind {
    position: absolute;
    clip: rect(0 0 0 0);
    width: 1px;
    height: 1px;
    margin: -1px;
    overflow: hidden;
}

클래스명 blind요소에 clip을 이용하여 마스크를 적용하고 있다. clip 속성은 반드시 position 속성의 값이 absolute로 되어 있어야 작동한다. 크기를 1px만 주고 margin을 -1px로 주어 바깥 방향으로 내용이 나가도록 하고 overflow:hidden을 이용하여 넘치는 부분을 보이지 않도록 했다. 

clip:rect(0 0 0 0)까지만 작성했을 때는 아래와 같이 span 태그의 공간이 나타난다. 이부분을 너비를 1px만 주고 보이지 않도록 축소한 것이다.

애플의 로고의 경우도 naver와 마찬가지로 a 태그 안에 span 태그로 텍스트를 표시하고, a 태그에 배경을 지정했다. 

 

#ac-globalnav .ac-gn-link-apple {
    background-size: 14px 44px;
    background-repeat: no-repeat;
    background-image: url(../../en_US/images/be15095f-5a20-57d0-ad14-cf4c638e223a/globalnav_apple_image__b5er5ngrzxqq_large.svg);
    background-position: center center;
    width: 14px;
}

반응형

+ Recent posts