우선 티스토리 각주라는 것이 무엇인지부터 알아보겠습니다.
각주는 출판물에서 출처 같은 것을 명기할 때 유용하게 쓰는 도구죠. 티스토리에서는 이런 각주를 쉽게 쓸 수 있게 하는 기능을 제공합니다.
글쓰기 페이지의 티스토리 편집기입니다. 에디터 메뉴에 있는 기능으로 본문에 각주 링크를 삽입할 수 있습니다.
여기서 보이는 빨간 숫자가 각주 링크에요. 숫자를 누르면 본문 맨아래까지 스크롤이 이동합니다. 그리고 본문 최하단에는 다음과 같이 그 숫자에 연결된 각주가 번호매김되어 적혀 있습니다.
이제 [본문으로]를 누르면 스크롤은 각주 링크가 있었던 원래 위치로 되돌아갑니다.
각주 링크에 마우스 커서를 올리면 각주 내용이 담긴 말풍선이 뜹니다. 본문 하단까지 내려가지 않아도 되니까 편리하네요.
여기서 문제는 저 말풍선이 제대로 스타일 적용이 되어 있지 않아서 글자를 읽을 수가 없다는 점입니다. 이 블로그는 배경이 어둡기 때문에 문자 기본색으로 흰색에 가까운 밝은 색을 썼거든요. CSS를 수정해서 말풍선의 바탕색이던지 문자 색상이던지 하나를 수정해야 글자를 읽을 수 있을 것 같습니다.
접기
그래서 스타일을 적용할 각주 말풍선을 식별하기 위해서 사이트의 HTML 소스를 뒤져 보면 각주에 대한 정의는 있지만 각주 말풍선에 대한 것은 이런 것밖에 보이지 않습니다.
<sup class="footnote">
<a id="footnote_link_12_1" href="#footnote_12_1"
onmouseover="tistoryFootnote.show(this,12,1)"
onmouseout="tistoryFootnote.hide(12,1)"
style="color:#f9650d;font-family:Verdana,Sans-serif">
<span style="display:none">[각주:</span>1<span style="display:none">]</span>
</a>
</sup>
저 말풍선은 사용자의 입력에 따라서 동적으로 나타났다가 사라졌다가 하는 것이니까 자바스크립트를 이용하고 있습니다. tistoryFootnote라는 객체를 단서로 조금 더 찾아봅니다.
<script type="text/javascript">
window.TistoryBlog = {
url: "http://nanite.tistory.com",
tistoryUrl: "http://nanite.tistory.com"
};
var servicePath = "";
var blogURL = "";
</script>
<script type="text/javascript" src="//t1.daumcdn.net/tistory_admin/blogs/script/_/base.js"></script>
<link rel="stylesheet" type="text/css" href="//t1.daumcdn.net/tistory_admin/blogs/style/dialog.css" />
</head>
<body>
base.js에서 tistoryFootnote 객체를 다음과 같이 서술하고 있었습니다.
var tistoryFootnote = {
notes: {},
add: function(entryId, noteId, content) {
this.notes[entryId + "_" + noteId] = content
},
show: function(anchor, entryId, noteId) {
var layer = document.createElement("div");
layer.id = "tistoryFootnoteLayer_" + entryId + "_" + noteId,
layer.style.font = "11px/1 Dotum, Sans-serif",
layer.style.width = "304px",
layer.style.position = "absolute",
layer.style.left = getOffsetLeft(anchor) - 86 + "px",
layer.style.top = "0px", layer.style.zIndex = "810302",
new RegExp("MSIE [1-6]\\.").test(navigator.userAgent)
? layer.innerHTML = "<div style=\"height: 6px; overflow: hidden; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//i1.daumcdn.net/cfs.tistory/static/admin/editor/footnotes_01.png', sizingMethod='crop')\"></div><div style=\"width: 304px; padding: 6px 0; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//i1.daumcdn.net/cfs.tistory/static/admin/editor/footnotes_02.png', sizingMethod='scale')\"><div style=\"padding-bottom: 6px; border-bottom: 1px solid #f2f1be; font-weight: bold; margin: 0 15px 9px 15px\">ê°ì£¼ " + noteId + '</div><div style="margin: 0 15px; line-height: 1.5">' + this.notes[entryId + "_" + noteId] + "</div></div><div style=\"height: 15px; overflow: hidden; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//t1.daumcdn.net/tistory_admin/static/admin/editor/footnotes_03.png', sizingMethod='crop')\"></div>"
: layer.innerHTML = '<div style="height: 6px; overflow: hidden; background-image: url(//t1.daumcdn.net/tistory_admin/static/admin/editor/footnotes_01.png)"></div><div style="width: 304; padding: 6px 0; background-image: url(//t1.daumcdn.net/tistory_admin/static/admin/editor/footnotes_02.png)"><div style="padding-bottom: 6px; border-bottom: 1px solid #f2f1be; font-weight: bold; margin: 0 15px 9px 15px">ê°ì£¼ ' + noteId + '</div><div style="margin: 0 15px; line-height: 1.5; overflow: hidden">' + this.notes[entryId + "_" + noteId] + '</div></div><div style="height: 15px; overflow: hidden; background-image: url(//t1.daumcdn.net/tistory_admin/static/admin/editor/footnotes_03.png)"></div>',
document.body.appendChild(layer),
layer.style.top = getOffsetTop(anchor) - layer.offsetHeight + "px"
},
hide: function(entryId, noteId) {
var layer = document.getElementById("tistoryFootnoteLayer_" + entryId + "_" + noteId);
layer.parentNode.removeChild(layer)
}
}
이렇게 코드를 찾음으로써 말풍선의 동작 원리에 대해서는 이해하게 되었습니다. 그런데 스타일을 적용하기 위해서 이 말풍선을 어떻게 하면 가리킬 수가 있을까요. 이 요소는 body 하위에 div가 있다는 것 이외에는 id를 동적으로 생성할 뿐이어서 블로그 스킨의 style.css에서는 접근하기가 곤란합니다.
그러니까 tistoryFootnote라는 자바스크립트 객체를 통해서 말풍선을 다뤄야 합니다. 자바스크립트는 따로 배운 적이 없어서 생소하긴 하지만 저 show() 함수를 오버라이드하면 좋겠다는 생각이 들었습니다. 그래서 말풍선의 글자 색깔을 변경할 수 있게 이런 스크립트를 작성했습니다.
접기
이상의 스크립트를 이용하면 말풍선의 글자색을 다음과 같이 검정으로 변경할 수 있습니다. 스크립트는 티스토리 관리자 메뉴의 스킨 편집으로 가서 skin.html의 </body> 바로 위쯤에 추가하거나 작성중인 포스트의 본문 가운데에 넣습니다.