일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 디알코
- 스케치
- 로봇청소기 리뷰
- 하버드 인생학 특강
- 원씽
- 마곡9단지 특별공급
- 마곡 9단지 청약 경쟁률
- 로봇청소기 물걸레
- 원더스리빙 로봇청소기
- Sketch
- 마곡9단지 다자녀 경쟁률
- 슬라이더
- 마곡9단지 생애최초
- 마곡9단지 청약 경쟁률
- How Will You Measure Your Life
- input range
- 마곡9단지 청약 당첨 결과
- as가능
- 다이나킹
- 마곡9단지 생애최초 경쟁률
- 로봇청소기 고민
- 마곡9단지 청약 결과 발표
- One Thing
- 마곡9단지 일반공급 청약 경쟁률
- 마곡9단지 노부모부양
- 마곡9단지 청약 사이트
- 맥북
- 마곡9단지 신혼부부 경쟁률
- 마곡9단지 노부모부양 경쟁률
- html slider
- Today
- Total
스이디: 스타트업에서 이거저거 하는 디자이너
[디알코] 부트스트랩 캐러셀 carousel 내가 원하는 모양 만들기 (이미지 롤링, 슬라이드) 본문
우선 캐러셀이란 뭐냐하면 회전목마. 즉 돌고 도는 거다.
우리가 인터넷 쇼핑몰 홈페이지에 가면
상품 배너들이 오른쪽에서 왼쪽으로 움직이면서 돌아가는 걸 본 적이 있을 거다.
우리는 보통 이미지 슬라이드, 롤링 배너 이런 식으로 부르는데
외국에선 캐러셀이라는 이름으로 많이 쓰더라.
(슬라이드라고 부르기엔 좀 슬라이드란 표현이 너무 다양한 곳에 쓰여서 그런 걸수도)
아무튼 부트스트랩 캐러셀을 보면
기본 구조인
슬라이드 영역 class="carousel-inner" 과
옵션으로 달 수 있는
인디케이터 <ol class="carousel-indicators">
(몇 개의 슬라이더가 있고 현재 몇 번째다 를 보여주는거)
컨트롤 <a class="left carousel-control" ~
(이전, 다음 버튼)
크게 이렇게 세 가지로 구성돼있다.
그리고 저 세 가지는
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
이렇게 생긴 큰 캐러셀 div 로 감싸져 있다.
기본적으로 가장 바깥에 carousel 클래스로 div 를 만들어주고
carousel-inner 클래스를 가진 div 로 안에 들어가는 item 을 넣어주면 된다.
carousel-inner 안에 들어가는 슬라이드 아이템은
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="..." alt="...">
<div class="carousel-caption">
...
</div>
</div>
<div class="item">
<img src="..." alt="...">
<div class="carousel-caption">
...
</div>
</div>
...
</div>
이렇게 원하는 갯수만큼 넣어주면 되고
중요한건 아이템 중 하나엔 무조건 active 클래스를 넣어줘야
페이지에서 제대로 나오는걸 볼 수 있다.
슬라이드 아이템을 좀더 살펴보면
<div class="item">
<img src="..." alt="...">
<div class="carousel-caption">
<h3>...</h3>
<p>...</p>
</div>
</div>
이렇게 img 와 텍스트를 보여주는 caption 영역으로 나눌 수 있다.
텍스트를 넣지 않는다면 carousel-caption div 영역은 빼면 된다.
그런데 내가 만들려고 하는건
요렇게 생긴 형태다.
좌우로 나눠서 한쪽은 이미지, 한쪽은 그에 대한 설명이 있는.
그리고 이렇게 생긴게 3~4개가 롤링되는 거다.
위에서 봤던 코드에서
<img src="..." alt="...">
<div class="carousel-caption">
<h3>...</h3>
<p>...</p>
</div>
이미지는 딱 동그란 형태로 png 로 뽑아서 올릴거고
텍스트는 carousel-caption 부분에 넣으면 되는데
문제는 텍스트 위치를 잡는 거다.
carousel-caption 에 부트스트랩 기본 css 는
.carousel-caption {
position: absolute;
right: 15%;
bottom: 20px;
left: 15%;
z-index: 10;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
text-align: center;
text-shadow: 0 1px 2px rgba(0,0,0,.6);
}
이렇게 설정돼있다.
보통 하나의 슬라이드 안에 이미지와 글자가 같이 들어가 있기 때문에
이미지 안에 글자가 적당히 위치를 잡게 만든 거다.
그리고 참고로
아이템에 이미지에
height: auto 가 설정되어 있으니까
이미지의 높이만큼 슬라이더의 높이가 생긴다고 보면 된다.
.carousel-inner > .item > img {
display: block;
max-width: 100%;
height: auto;
}
그런데 우리는 마치 이미지와 텍스트 영역이 두 개로 나뉜 것처럼 보이는 구조라서
carousel-caption 의 위치를 오른쪽으로 이동시켜줘야 한다.
그래서
.item .carousel-caption {
color: #666 !important;
text-shadow: none !important;
right: 0 !important;
left: 45% !important;
width: 100px;
}
요로코롬 position이 absolute인 기본 속성은 그대로 두고
left 값을 45% 정도 줘서 오른쪽으로 팍 이동시켰다.
그리고 글자 색도 검은색으로 바꾸고
글자 그림자? 도 없애버렸다.
이렇게 해서 한걸 보면 (좀 느리다. 기다려달라.)
어느정도 제대로 된거 처럼 보이다가
슬라이드가 바뀌기 시작할 때
캡션 부분이 갑자기 왼쪽으로 붙어버리고
괴상한 형태를 띄며 슬라이딩이 되버린다...
(맥에서 영상 스크린샷을 찍고 gif 로 변환한거라 화질이 좀 구림 ㅋㅋ)
내 생각으로는 움직이기 시작할 때
left 값이 변하는거 같은데..
인터벌(롤링되는 시간)이 길어서 확인하기 귀찮으니까
롤링 스피드를 일단 좀 빠르게 하기 위해
$('.carousel').carousel({
interval: 2000
})
스크립트에 요걸 추가했다.
디폴트는 5000 이다.
개발자도구로 보니
슬라이딩이 시작될 때
현재 엑티브된 아이템에
.item .active .left 이렇게 세 개의 클래스가 붙는데
부트스트랩 css 에서 캐러셀 부분 css 를 확인해보니
.carousel-inner > .active {
left: 0;
}
.carousel-inner > .active.left {
left: -100%;
}
이런 코드가 있었다.
뭐.. 이런 거 때문에 캡션 위치가 이동되는거 같아서
.money_item .item .carousel-caption {
left: 150px !important;
}
.money_item .item.active .carousel-caption {
left: 150px !important;
}
.money_item .item.active.left .carousel-caption {
left: 150px !important;
}
이렇게 각 상태별로 left 에 픽셀값으로 넣어줬다.ㅋㅋ
퍼센트보다는 뭔가 더 확실하게 될거 같아서.
그렇게 했더니
요렇게 캡션 위치가 잘 잡힌 채로 슬라이딩이 됐다
캬캬캬캬캬캬캬캬캬
왼쪽 오른쪽으로 좀 짤리는건, 화면 전체에 패딩이 있어서 그렇다.
암튼 이런 형태로 코드를 수정하면
내가 디자인한대로 코딩 완료!
이 내용이 도움이 되었다면
광고를 사정없이 클릭 혹은 터치를 해주세요.
광고 노출 자체로는 거의 수익이 나지 않는 소소한 블로그랍니다 ^^
'팁, 노하우, 알아냄 > 프론트 코딩' 카테고리의 다른 글
css 로 삼각형 그리기 (0) | 2019.06.05 |
---|---|
서브라임 텍스트 꿀팁. 다중 선택 sublime text multi select (0) | 2019.05.09 |
[디알코] 슬라이더 스스로 만들어보기. 2편 (0) | 2019.03.05 |
[디알코] 슬라이더 스스로 만들어보기.. 후덜덜.. (0) | 2019.03.04 |
div 를 inline-block 으로 했을 때 생기는 간격, 여백에 대하여 (0) | 2019.03.02 |