목차 클릭해 해당 위치로 이동 관련해 고민이 생겼습니다.
본문
세크티 님께서 좋은 소스 공유 해주셔서 일단 해당 기능을 구현했어요.
https://homzzang.com/b/free-5017
그런데,
제목에 하이라이트 배경색 넣은 건 못 찾더라구요.
그래서, 이 기능을 적용해야 하나 말아야 하나 고민이 생겨버렸네요.
사실, 저 같은 경우엔 스크롤 할 때 제목이 빨리 눈에 띄는 게 중요해서
제목의 배경색 하이라이트를 포기하기엔 좀 그렇습니다.
jquery 소스와 스크립트를 좀 수정하면 어떻게 잘 될 것도 같은데,
고수님들 살펴보고 가능하면 수정 팁 좀 부탁드립니다.
[jquery.highlight-5.js 플러그인 소스]
jQuery.fn.highlight = function(pat) {
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
pos -= (node.data.substr(0, pos).toUpperCase().length - node.data.substr(0, pos).length);
if (pos >= 0) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(pos);
var endbit = middlebit.splitText(pat.length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
}
else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i) {
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.length && pat && pat.length ? this.each(function() {
innerHighlight(this, pat.toUpperCase());
}) : this;
};
jQuery.fn.removeHighlight = function() {
return this.find("span.highlight").each(function() {
this.parentNode.firstChild.nodeName;
with (this.parentNode) {
replaceChild(this.firstChild, this);
normalize();
}
}).end();
};
[출력 스크립트]
<?php
add_javascript('<script src="'.G5_JS_URL.'/jquery.highlight-5.js"></script>', 0);
?>
<script>
$(document).ready(function () {
$("#view_content a").click(function (e) {
// e.preventDefault();
var href = $(this).attr('href');
if(href!='#'){
return true;
}
var $wrap = $("#view_content");
var title = $(this).text();
$wrap.highlight(title);
var first_sch = $wrap.find('span.highlight').eq(1)
if(first_sch){
$("body,html").animate(
{scrollTop: first_sch.offset().top - (window.screen.height/2-100)},
1200 //speed
);
$("span.highlight").removeClass('highlight');
return false;
}
})
})
</script>
!-->!-->
답변 2
제목의 배경은 그냥 글에 넣으시면 되지 않을 까요?
위의 highlight는 위치를 찾아가기 위한 것 같은데..
위의 hightlight를 location등으로 변경해 보세요
답변을 작성하시기 전에 로그인 해주세요.