vue.js는 최근에 도약과 경계에 왔으며, 지금까지 여섯 번째로 갈래 프로젝트가되었습니다. github. Facebook의 자신의 리밀버에서도 글쓰기시. 그것은 빠르게 메인 스테이가되고 있다고 말하는 것이 안전합니다. 웹 개발 그리고 신뢰할 수있는가는 것 자바 스크립트 프레임 워크 프로젝트에서 사용하기 위해.
이 튜토리얼에서는 vue.js를 사용하여 간단한 회전 목마 구성 요소를 만듭니다. 이 구성 요소는 여러 가지 다른 속성을 수락하여 전환 속도, 전환 유형 및 회전식이 자동으로 슬라이드를 자동으로 전환 해야하는지 여부와 같은 기본 설정을 조정할 수 있습니다.
이 모든 소리가 너무 까다로워, A. 웹 사이트 빌더 도구가 더 많은 일이 될 수 있습니다. 좀 더 복잡한 사이트를 만드는 것이 행복합니까? 당신이 필요합니다 웹 호스팅 그것은 대처할 수 있습니다.
시작하려면, 프로젝트 파일을 여기에서 다운로드하십시오 (그리고 그들을 저장하십시오 클라우드 스토리지 ) 원하는 텍스트 편집기에서 '웹 사이트 템플리트'디렉토리를 엽니 다. 한편, 터미널에서 CD를 '웹 사이트 템플리트'에 넣은 다음 'NPM 설치'를 실행하여 Projects Node.js 종속성을 설치합니다. 마지막으로 'NPM Run Dev'를 실행하여 브라우저에서 프로젝트를 볼 수 있도록 개발 서버를 시작합니다. 일반적으로 이것은 'localhost : 8080'에있을 것입니다.
'src / components'에서 'app-carousel-slide'라는 새 디렉토리를 만들고 "app-carousel-slide.vue '와'component.app-carousel-slide.scs '의 두 파일을 만듭니다. 여기에는 우리가 작성 할 두 개의 새로운 Vue.js 구성 요소 중 첫 번째는 Carousel 구성 요소를 만듭니다.
Filesilo 패키지에서 '/support-files/step-02-slide.scss'의 내용을 'component.app-carousel-slide.scs'로 복사하십시오. 이것은 슬라이드 구성 요소의 SCSS이며 'flex-grow'속성을 사용하여 각 슬라이드가 상위 요소를 채우기 위해 확장되는지 확인합니다.
'app-carousel-slide.vue'파일의 파일에서 vue.js 구성 요소의 구조를 만들려면 아래의 스 니펫을 추가하십시오. 우리는 이것을 회전 목마 슬라이드를 만드는 기초로 사용할 것입니다.
& lt; 템플릿 & gt; & lt; / template & gt; & lt; script & gt; 내보내기 기본값 { 이름 : 'App-Carousel-Slide' } & lt; / script & gt;빈 & lt; 템플릿 & gt; 회전 목마 슬라이드의 요소는 'image'라는 특수 슬롯 요소와 함께 슬라이드를 나타내는 'div'요소를 추가 할 것입니다. vue.js에서 슬롯을 사용하면 편집하지 않고 구성 요소의 템플릿으로 자신의 콘텐츠를 습득 할 수 있습니다. 이 경우에, 우리는 나중에 슬라이드 배경에 이미지를 전달할 수 있으므로 최종 결과는 궁극적으로 사용될 때 '& lt; app-carousel-slide & gt; & lt; img src =' 'alt =' '& gt; & lt; / app-carousel-slide & gt;'.
& lt; div class = "c-app-carousel-slide"& gt; & lt; 슬롯 이름 = "이미지"& gt; & lt; / slot & gt; & lt; / div & gt;
슬라이드 구성 요소에 남아있는 모든 것이 텍스트 컨테이너를 작성하는 것입니다. 우리는 더 큰 슬라이드 제목과 일반 텍스트 용 하나를 위해 슬롯을 다시 사용할 것입니다. 또한 'V-If'라는 vue.js 지시문을 사용하여 로직을 추가하여 슬롯 중 하나 이상이 콘텐츠를 전달하는 경우 텍스트 컨테이너 만 렌더링합니다. '이미지'슬롯 바로 앞에이 스 니펫을 'C-App-Carousel-Slide'에 추가하십시오.
& lt; div class = "c-app-carousel-slide__text-block"
V-IF = "이것은 $ slots [ 'title'] |이 (가). $ slots [ 'text']"& gt;
& lt; h1 class = "c-app-carousel-slide__title"
V-IF = "이것은 $ slots [ 'title'] & gt;
& lt; 슬롯 이름 = "타이틀"& gt; & lt; / slot & gt;
& lt; / h1 & gt;
& lt; div class = "c-app-carousel-slide__text"
V-IF = "이것은 $ slots [ 'text']"& gt;
& lt; 슬롯 이름 = "텍스트"& gt; & lt; / slot & gt;
& lt; / div & gt;
& lt; / div & gt;
'src / components'에서 'app-carousel'이라는 새 디렉토리를 만들고 'app-carousel.vue'와 'component.app-carousel.scss'두 개의 새 파일을 만듭니다. 이들은 두 개의 Vue.js 구성 요소 중 두 번째를 보유 할 것입니다 : 주 회전 목사 자체.
'/support-files/step-07-slide.scss'의 내용을 빈 'component.app-carousel.scss'로 복사하십시오. 이것은 주 회전 목마 구성 요소의 SCSS입니다.
다음으로 'app-carousel.vue'에서 우리는 회전 목마 구성 요소의 구조를 만들 것입니다. 우리는 'appicon'구성 요소와 '화살표'svg를 나중에 회전식의 다음과 이전 아이콘에서 사용할 수 있도록 수입하고 있습니다. 이들은 'svg-sprite-loader'의존성과 함께 작동하여 SVG '기호'와 '사용'요소를 사용하는 기본 SVG 아이콘 시스템을 생성합니다.
& lt; 템플릿 & gt; & lt; / template & gt; & lt; script & gt; AppIcon 가져 오기 '@ / 구성 요소 / 앱 아이콘 / 앱 아이콘' 가져 오기 화살표 './../../Assets/img/ARROW.SVG' 내보내기 기본값 { 이름 : 'App-Carousel', 구성 요소 : { 파이틀 }, 데이터 () { 반환 { 화살 } } } & lt; / script & gt;빈 템플릿 요소에 콘텐츠를 추가하겠습니다. 여기서 관심있는 주요 영역은 'C-App-Carousel__Container'요소가 있습니다.이 요소는 곧 그 안에있는 슬라이드 수를 기반으로 폭을 계산합니다. 그런 다음 CSS 변환을 사용하여 컨테이너를 이동합니다. TRANSLATEX 및 전환은 슬라이드 이동을 시뮬레이션합니다.
& lt; div class = "c-app-carousel"& gt;
& lt; div class = "c-app-carousel__wapper"& gt;
& lt; div class = "c-app-carousel__container"& gt;
& lt; slot & gt; & lt; / slot & gt;
& lt; / div & gt;
& lt; / div & gt;
& lt; / div & gt;
그런 다음 회전식 컨트롤 컨테이너 및 이전 및 다음 화살표에 대한 HTML을 추가해야합니다. 8 단계에서 가져온 아이콘 시스템과 SVG를 사용하는 후자는 'c-acp-carousel__wapper'요소 다음에 추가합니다.
& lt; app-icon class = "c-app-icon-arrow-prev c-app-carousel__arrow"사용 = "화살표"/ & gt;
& lt; div class = "c-app-carousel__controls"& gt;
& lt; / div & gt;
& lt; App-icon 클래스 = "c-app-icon-arrow-next c-app-carousel__arrow"사용 = "화살표"/ & gt;
구성 요소의 데이터 저장소에 세 가지 새로운 속성을 추가합니다. '슬라이드 전음'은 총 슬라이드 수를 유지합니다. 'ActiveSlideIndex'는 컨테이너의 위치를 계산하는 데 사용할 수 있도록 가시 슬라이드의 인덱스를 기록합니다. AutineRerval은 자동 슬라이드 전환을 트리거 할 간격 타이머를 기록합니다. 이들 모두는 '0'값이 첫 번째 슬라이드가 기본 슬라이드 여야 함을 나타내는 'ActiveSlideIndex'를 제외하고는 null로 설정됩니다.
데이터 () {
반환 {
화살,
슬라이드 전토 : null,
ActiveSlideIndex : 0,
autouterval : null.
}
}
'ref = "컨테이너"를'c-app-carousel__container '요소에 추가 한 다음 아래의 스 니펫을 구성 요소 개체 자체의 속성으로 추가합니다. 'ref'는 요소에 쉽게 액세스 할 수 있도록 사용 되며이 경우 컨테이너가 얼마나 많은 하위 요소 (일명 슬라이드)를 얼마나 많이 계산할 수 있습니다. 'mounted ()'함수 에서이 논리가있는 경우 구성 요소가 처음 렌더링되면 자동으로 자동으로 실행됩니다.
탑재 () {
SlideTotal =.
이. $ refs.container.children.length;
}
구성 요소에서 '계산'이라는 새 객체 속성을 만듭니다. 'ContainerWidth ()'라는 새 함수가 새 함수입니다. 우리는 이것을 사용하여 'slidetotal'그림을 기반으로 회전 목마 컨테이너의 너비를 계산합니다.
계산 : {
containerWidth () {
이를 반환하십시오 .SlideTotal * 100 + '%';
}
}
그런 다음 회전식 기능을 저장하기 위해 '메서드'라는 다른 객체 속성을 만듭니다. 'Gotoslide ()'는 11 단계에서 'ActiveSlideIndex'를 설정하는 쉬운 방법입니다. 'isControlActive ()'는 컨트롤의 색인이 'ActiveSlideIndex'와 일치 할 때 true를 반환하고 'nextSlide ()'와 'prevslide ()'는 단순히 순환합니다. 슬라이드.
방법 : {
고몰리드 (slideindex) {
이 activeslideIndex = slideindex;
},
isControlActive (ControlIndex) {
리턴 ControlIndex - 1.
=== this.activeslideIndex;
},
nextslide () {
this.activeslideindex ===이.
슬리 듀 탈탈 - 1? 이 .activeslideIndex.
= 0 : this.activeslideIndex ++;
},
prevslide () {
this.activeslideindex === 0? 이.
ActiveSlideIndex = This.SlideTotal - 1.
:이. activeslideindex-;
}
}
회전 목마는 변환 : TRANSLATEX 및 CSS 애니메이션으로 백분율 값을 사용하여 슬라이드 전환을 시뮬레이션합니다. 아래의 스 니펫을 '계산'객체에 추가 하여이 값을 계산할 수 있습니다.
ActiveSlidePosition () {
반환 '-'+ (100 / this.slidetotal)
*이 .activeslideIndex + '%';
}
이제 우리는 회전 목마 슬라이드 컨테이너를 올바르게 배치 할 수있는 모든 값을 가지고 있으며, 우리는 '스타일'속성에 추가 할 CSS를 구성해야합니다. '계산'객체의 다른 함수 로이 논리를 추가합니다.
conatorStyle () {
'너비 : $ {This.ContainerWidth};
변환 : translatex ($ {)
.activeslidePosition});`
템플리트의 'C-App-Carousel__Container'요소에 아래 스 니펫을 추가하십시오. 이렇게하면 이전 단계에서 'ContainerStyle ()'의 반환 된 값이 회전식 컨테이너의 '스타일'속성으로 바인딩되므로 CSS가 변경 될 때 자동으로 위치가 자동으로 업데이트됩니다.
V-BIND : 스타일 = "컨테이너 스타일"
이제는 다음 / 이전 화살표에 로직을 추가하여 각각의 화살표를 클릭하면 14 단계의 올바른 방법이 호출되도록해야합니다. 'prevslide ()'스 니펫은 'c-acp-icon-arrow-prev'요소에 속하며 'nextslide ()'는 'c-acp-icon-arrow-next'요소에 속합니다. 'v-on'지시문은 vue.js에서 이벤트 리스너를 설정하는 쉬운 방법이며 '클릭'은 우리가 타겟팅하는 DOM 이벤트입니다.
// Prev.
v-on : click.native = "prevslide ()"
// 다음
v-on : click.native = "nextslide ()"
컨트롤 요소를 생성하고 클릭하면 해당 슬라이드를 표시하도록하십시오. 'c-app-carousel__controls'에 아래 요소를 추가하십시오. 'V-for'지시어는 '슬라이드 전류'변수와 일치하는 제어 요소의 양을 생성하는 데 사용되며 'v-bind'지시어는 14 단계의 'isControlActive'메소드가 'isControlActive'메소드가 반환 될 때만 'is-active'클래스를 가능하게합니다. 진실. 마지막으로 'v-on'을 통해 다른 이벤트 리스너를 만들어냅니다. 이렇게하면 컨트롤은 'GOTOSLIDE'메서드를 호출하고 해당 슬라이드의 인덱스와 일치 해야하는 색인을 전달합니다.
& lt; div v-for = "slidetotal에서 n"
: key = "n"v-bind : class =
"{ 'is-active': isControlActive (n)}"
class = "c-app-carousel__control"
v-on : = "GOTOSLIDE (n - 1)"& gt; & lt; / div & gt;
이제 최상위 레벨 'app.vue'구성 요소로 돌아가서 모든 것을 가져옵니다. 오프닝 직후; 스크립트 & gt; 태그, '.vue'구성 요소를 가져옵니다. 파일 :
'@ / 부품 / App-Carousel / App-Carousel'에서 AppCarousel 가져 오기
'@ / 부품 / App-Carousel-Slide / App-Carousel-Slide'에서 AppCarouselSlide 가져 오기
다음으로 '구성 요소'객체를 수정하여 이러한 새로 가져온 구성 요소를 참조하십시오.
구성 요소 : {
AppButton,
Appcarousel,
appcarouselslide.
}
마지막으로, & lt; 스타일 & gt; 태그, 나머지 구성 요소 가져 오기로 새로운 SCSS를 가져옵니다.
@import "/ 구성 요소 / App-Carousel /
component.app-carousel ";
@import "/ 구성 요소 / App-Carousel-slide /
Component.App-carousel-slide ";
마지막으로 새로운 회전 목마 구성 요소와 일부 슬라이드를 메인 앱에 추가합시다. 'app.vue'에서는 'App.vue'에서 '건설중인'을 아래의 스 니펫으로 바꿉니다. 각 & lt; app-carousel-slide & gt; 요소는 단일 슬라이드를 나타냅니다. 원하는만큼 원하는만큼 많이 추가하십시오. 원하는 경우 텍스트 나 이미지를 교체하십시오. 'test-photo-05.jpg'에 'test-photo-01.jpg'가 포함되어 있습니다. 일단 컴파일이 끝나면 모든 것이 작동해야합니다. 뒤잡!
& lt; App-Carousel & gt;
& lt; App-Carousel-slide & gt;
& lt; 템플릿 슬롯 = "제목"& gt; My Slide
& lt; / 템플릿 & gt;
& lt; 템플릿 슬롯 = "텍스트"& gt;
이는 회전 목마 슬라이드이다. & lt; / p & gt;
& lt; App-Button & gt; 가자 & lt; / app-button & gt;
& lt; / 템플릿 & gt;
& lt; img slot = "이미지"
src = "./ 자산 / img / test-photo-01.jpg"
Alt = "내 회전 목마 사진"& gt;
& lt; / app-carousel-slide & gt;
& lt; / app-carousel & gt;
이제 우리는 vue.js 회전 목마를 가지고 있습니다. 추가 기능을 추가하므로 슬라이드가 자동으로 슬라이드 해야하는 경우, 슬라이드가 자동으로 슬라이드 해야하는지 선언하고 얼마나 자주 사용하십시오. 'app-carousel.vue'를 다시 열고 아래의 스 니펫의 속성을 구성 요소 객체에 추가합니다.
소품 : {
전환 : {
유형 : 문자열,
기본값 : '0.5s'
},
전이 TIMING : {
유형 : 문자열,
기본값 : '쉽게'
}
}
이러한 속성에 전달 된 값은 17 단계에서 회전 목사의 인라인 CSS로 돌아가야합니다. 이제 '컨테이너 스타일'계산 된 기능을 수정 하여이 일이 발생하는지 확인합니다.
conatorStyle () {
`너비 : $ {this.containerWidth}를 돌려줍니다.
변환:
translatex ($ {dipeiveslidePosition});
전환 타이밍 기능 :
$ {this.TransitionTiming};
전환 기간 :
$ {this.TransitionDuration};`
}
아래의 스 니펫은 이러한 새로운 속성에 데이터를 & lt; app-carousel & gt로 전달하는 방법을 보여줍니다. 요소의 'app.vue'. 일단 추가되면 원하는 값을 전달할 수 있어야합니다. 예를 들어, "3.0s"기간은 매우 느린 슬라이드 전환을 초래합니다!
& lt; App-Carousel. 전환 기간 = "0.25s" 전환 타이밍 = "편리한 in-out"& gt;자동 슬라이드의 경우 'app-carousel.vue'의 'props'에 두 개의 추가 개체를 추가해야합니다. 'Auto'는 회전 목사가 자동 슬라이드를 계속 해야하는 경우에 해당하는 'true'또는 'false'입니다. 'AutoTiming'은 기본값이 5000 밀리 초 인 자동 슬라이드 트리거 전의 시간을 제어합니다.
자동 : {
유형 : 문자열,
기본값 : '거짓'
},
자동 침시 : {
유형 : 문자열,
기본값 : 5000.
}
이제 구성 요소로드에서 자동 슬라이드를 시작해야합니다. 회전 목마의 'mounted ()'기능, 기존 콘텐츠가 끝나면 'auto'속성이 'true'로 설정되어 있는지 확인하십시오. 그렇다면 'AutoTiming'값이 전달되면 'NextSlide ()'메소드를 반복해서 트리거하는 간격을 만듭니다.
if (this.auto === 'true') {
이 .AutoToToval = setInterval (() {{
이. nextslide ();
}, parseint (this.autotiming);
}
분명히 사용자가 회전 목마를 수동으로 운영하려는 욕구를 표현하면 자동 슬라이드를 비활성화 할 수있는 방법이 필요합니다. 이것을 향한 첫 번째 단계는 'CancelAutoslide'라는 새로운 회전 목마 방법입니다. 이것은 이전 단계에서 생성 된 간격을 단순히 취소합니다.
PancelAutoslide () {
ClearInterval (This.AutopterVal);
}
사용자가 화살표 또는 제어 요소를 클릭하면 캐 러셀을 수동으로 조작하고 싶다고 가정 할 수 있으므로 이러한 요소 중 하나라도 클릭하면 'CancelAutoslide'메소드를 호출 할 수 있습니다. 이렇게하려면 '+ CancelAutoslide ()'를 각 요소 'V-on'지시문에 추가하기 만하면됩니다. '이전'슬라이드 화살표를 사용하는 예제는 아래의 스 니펫을 참조하십시오.
V-on : Click.native = "prevslide () + cancelAutosLide ()"
마지막으로 생성 된 자동 슬라이드 속성에 몇 가지 값을 전달 해 봅시다. 'app.vue'로 돌아가서 아래의 스 니펫을 & lt; app-carousel & gt; 요소는 3 초마다 자동 슬라이드를 활성화합니다.
auto = "true"자동 타이밍 = "3000"
개발 서버를 취소하거나 새 터미널 창을 열고 'NPM 실행 빌드'를 실행하여 'DIST'디렉토리에있는 VUE.JS 전원이 켜진 회전식 구성 요소의 컴파일 된 프로덕션 버전을 만들 수 있습니다.
이 기사는 원래 Creative Web Design Magazine Web Designer의 문제 269에 게시되었습니다. 여기 269 번 구매하십시오 또는 웹 디자이너를 구독하십시오 ...에
웹 디자인 이벤트 일으키다 런던 2018 년 9 월 19-21 일에 반환하여 업계 최고의 스피커 일정, 워크샵의 하루 종일 및 귀중한 네트워킹 기회를 제공합니다. 너를 가져 가라 일으키다 지금 티켓 ...에
관련 기사:
CSS는 HTML 및 JavaScript와 마찬가지로 상대적으로 복잡한 파이프 라인을 통과해야합니다. 브라우저�..
그림은 천 단어의 가치가 있으며 비디오는 백만 가지 가치가 있습니다. 비디오는 인쇄물이나 정적 이미지보다 빠르게 더 많은 정보를 전달할 수..