홈 화면에 주로 사용되는 커버 갤러리에 대해 살펴보았습니다.
(뭐가 뭔지 매번 적용해서 보고 수정하고 하는게 자증나서..ㅋ 공부하는 차원으로...)
커버 갤러리1 | 커버 갤러리2 |
한 화면 노출 글 수: PC (5), Mobile (2) (그 이상은 슬라이더로 처리됨) |
한 화면 노출 글 수: PC (3), Mobile (1) (그 이상은 슬라이더로 처리됨) |
표시 항목: 이미지 + 제목 | 표시 항목: 이미지 + 제목 + 본문3줄 + 댓글 수 + 작성일 |
CSS 클래스명: cover-thumbnail-3 | CSS 클래스명: cover-thumbnail-4 |
위는 북클럽 스킨의 목록 스타일로 제공되는 커버 갤러리1과 2의 비교 표입니다.
각기 스타일도 다르고 아이템의 크기도 다르니 잘 살펴보시고 필요에 따라 적당히 골라 사용하시면 되겠습니다.
그리고 아래는 이 목록들과 관련해서 제가 찾은 버그들과 각 해결책입니다.
커버 갤러리1 - 창 크기를 줄였을 시 슬라이더로 변환 안됨
애초부터 작은 화면으로 접속했으면 괜찮은데, 큰 화면에서 작은 화면으로 줄일 경우 슬라이더 변환도 안되고, 가로로 페이지를 뚫고 길게 나오는 증상이 발견되었네요.
헤결책은, 스킨에 업로드된 script.js 파일의 내용 중 function coverSlider(){...} 함수의 내용을 아래 내용으로 덮어 줍니다.
function coverSlider(){
var $element = $(".cover-thumbnail-3, .cover-thumbnail-4");
$element.each(function(){
var $cover = $(this),
$list = $cover.find("ul"),
$item = $cover.find("li"),
itemOuter = $item.outerWidth(),
itemLength = $item.length,
viewLength = Math.round($cover.width()/itemOuter),
num = 0;
$list.wrap('<div class="slide-wrap"></div>');
$item.css({
"width": itemOuter,
"padding-left": Math.abs(parseInt($list.css("margin-left"))),
});
$list.width(itemOuter*itemLength);
if ( viewLength < itemLength ){
$cover.append('<button type="button" class="prev">이전</button><button type="button" class="next">다음</button>');
}
$cover.on("click", ".prev", function(){
if ( $list.is(":animated") ) return false;
viewLength = Math.round($cover.width()/itemOuter);
if ( num > 0 ){
num = num > itemLength-viewLength ? itemLength-viewLength-1 : num-1;
$list.animate({ "left": -itemOuter*num }, 300 );
}
});
$cover.on("click", ".next", function(){
if ( $list.is(":animated") ) return false;
viewLength = Math.round($cover.width()/itemOuter);
if ( num < itemLength-viewLength ){
num++;
$list.animate({ "left": -itemOuter*num }, 300 );
}
});
$cover.on("touchstart", function(){
var touch = event.touches[0];
touchstartX = touch.clientX,
touchstartY = touch.clientY;
});
$cover.on("touchend", function(){
if( event.touches.length == 0 ){
var touch = event.changedTouches[event.changedTouches.length - 1];
touchendX = touch.clientX,
touchendY = touch.clientY,
touchoffsetX = touchendX - touchstartX,
touchoffsetY = touchendY - touchstartY;
if ( Math.abs(touchoffsetX) > 10 && Math.abs(touchoffsetY) <= 100 ){
if (touchoffsetX < 0 ){
$cover.find(".next").click();
} else {
$cover.find(".prev").click();
}
}
}
});
$(window).resize(function(){
$cover.find("ul, li").width("");
itemWidth = $item.width();
itemOuter = $item.outerWidth();
var viewLength = Math.round($cover.width()/itemOuter);
$item.css({
"width": itemOuter,
"padding-left": Math.abs(parseInt($list.css("margin-left"))),
});
$list.css({
"width": itemOuter*itemLength,
"left": (num > viewLength ? -itemOuter*viewLength : -itemOuter*num)
});
if ( viewLength >= itemLength ){
$cover.find("button").remove();
$list.css("left", 0);
} else {
if ( !$cover.find("button").length ){
$cover.append('<button type="button" class="prev">이전</button><button type="button" class="next">다음</button>');
}
}
});
});
};
수정된 줄은 하이라이트 되어 있습니다.
또는, 잘 모르시겠으면 그냥 아래 파일을 다운받아 스킨에 업로드 해줘도 됩니다.
커버 갤러리2 - 글 제목이 중복해서 나옴
관리 > 스킨편집 > html 편집에서,
<s_cover name='cover-thumbnail-4'> 로 찾아서 그 밑에를 잘 보시면
<span class="title"></span> 이게 두번 있어요. (실수겠죠?)
아래처럼 <!-- ... --> 로 감싸서 주석처리해주거나 아예 지워버리시면 됩니다.
<!-- <span class="title"></span> -->
<s_cover_item_article_info> <span class="title"></span>
'웹 코딩 > 티스토리' 카테고리의 다른 글
사이드 바 - 달력 / 글 보관함 / 링크 (4) | 2020.09.28 |
---|---|
댓글/방명록 이모티콘 - 장려하기? (1) | 2020.09.24 |
북클럽 스킨 - 메뉴 확장 (5) | 2020.09.18 |
이미지 클릭 시 다른 이미지 보여주기 (3) | 2020.09.17 |
Odyssey 오디세이 스킨 - 사이드 바 고정 (3) | 2020.09.16 |
댓글