ãã®èšäºã§ã¯ãJavaScriptã§ã¹ã©ã€ãã·ã§ãŒãäœæããããã®åºæ¬ååããã®äœæå
ïŒHTMLãCSSãJavaScriptïŒãããã³ããããäœæããããã«äœ¿çšãããææ³ã«ã€ããŠèª¬æããŸãã
JSã³ãŒãã¯ãããã©ãšjQueryã®2ã€ã®åœ¢åŒã§è¡šç€ºãããŸãã ããã¯ç¹ã«åŒ·èª¿ããããã«è¡ãããŸããæè¿ã®ãã©ãŠã¶ãŒã§ã¯ãç¹ã«ã¢ãã¡ãŒã·ã§ã³ãCSSãã©ã³ãžã·ã§ã³ãšçµã¿åãããå ŽåãåçŽãªJSã§ãéåžžã«ããŸã䜿çšã§ããŸãã jQueryã¯ããã©ãŠã¶ã®éäºææ§ãå¿é
ããããããã·ã³ãã«ãªAPIã䜿çšããããªãå Žåã«é©ããŠããŸãã æäŸãããã³ãŒãã¯ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ã¿ãç®çãšããŠããŸãã
ããã©JSã®äŸã§ã¯ãæãåçŽãªãªããžã§ã¯ãåæåã¡ãœããinitïŒïŒã䜿çšããŠããŸãã ãã®ã¡ãœããã§ã¯ãé©åãªã³ãŒããåŒã³åºããŠãnewãä»ããŠãªããžã§ã¯ããã€ã³ã¹ã¿ã³ã¹åããŸãã
ãã®Stack Overflowã¹ã¬ããã¯ããã¹ãŠã詳现ã«èª¬æããŠããŸãã ãªã颿°ã§ã¯ãªããªããžã§ã¯ããªã®ã§ããïŒ ãã®è³ªåã«çããã«ã¯å¥ã®èšäºãå¿
èŠã«ãªããŸãããäžè¬çã«ã¯ãã³ãŒããæŽçããŠåå©çšããããããããã ãã§ãã
HTMLæ§é
HTMLããŒã¯ã¢ããã¯ãCSSãšJSã䜿çšããã«ããŒãžãèªã¿ãããããå¿
èŠããããŸãã ãããã£ãŠãæ§é ãæ§æããã³ã³ããŒãã³ããææ¡ããå¿
èŠããããŸãã ããã¯é垞次ã®ãšããã§ãã
1ïŒæãå€éšã®ã³ã³ãã
2ïŒã€ã³ããŒã©ãããŒ
3ïŒè€æ°ã®ã¹ã©ã€ãèŠçŽ
4ïŒããŒãžãžã®ãªã³ã¯ã®ã©ãããŒ
5ïŒãåããšã次ãã®2ã€ã®ãã¿ã³
ã³ã³ããŒãã³ã2ã4ãããã³5ã¯ãªãã·ã§ã³ã§ãã
-ã¹ã©ã€ãã¯1ã€ã®èŠçŽ ã«ãŸãšããããšãã§ããŸãã ããã¯ãã¹ã©ã€ãéã®ç§»è¡ããã§ãŒãã€ã³/ãã§ãŒãã¢ãŠããä»ããŠè¡ããããšãã«è¡ãããŸã
-ã¹ã©ã€ãã·ã§ãŒãèªåã§ããŠãŒã¶ãŒã®ä»å
¥ãªãã«çºçããå ŽåãããŒãžããã³ãã¿ã³ãžã®ãªã³ã¯ãçç¥ã§ããŸã
å¯èœãªHTMLæ§é ã®äŸïŒ
<div class="slider" id="main-slider"> <div class="slider-wrapper"> <div class="slide">...</div> <div class="slide">...</div> <div class="slide">...</div> </div> <div class="slider-nav"> <button type="button" class="slider-previous"></button> <button type="button" class="slider-next"></button> </div> </div>
åãããŒãžã«è€æ°ã®ã¹ã©ã€ãã·ã§ãŒãããå Žåããããããã¹ã©ã€ãã«ã¯ã¯ã©ã¹ã䜿çšããããšããå§ãããŸãã å€éšã³ã³ããã®IDã䜿çšããŠãããŸããŸãªã¹ã©ã€ãã·ã§ãŒãèå¥ã§ããŸãã
ããã§ã¯ãªã³ã¯ãé©åã§ã¯ãªãããããªã³ã¯ã®ä»£ããã«ãã¿ã³ãæã€èŠçŽ ã䜿çšãããŸããã¹ã¯ãªããã®ãã¿ã³ã䜿çšããŸãïŒè©³çްã«ã€ããŠã¯
ããã¿ã³ãäœæã§ããªãèšäºãåç
§ããŠãã ããïŒã
ã¹ã©ã€ãã«ç»åã®ã¿ãå«ãŸããå Žåãæ§é ããããã«å€æŽã§ããŸãã
<div class="slider" id="main-slider"> <div class="slider-wrapper"> <img src="image1.jpg" alt="First" class="slide" /> <img src="image2.jpg" alt="Second" class="slide" /> <img src="image3.jpg" alt="Third" class="slide" /> </div> <div class="slider-nav"> <button type="button" class="slider-previous"></button> <button type="button" class="slider-next"></button> </div> </div>
alt屿§ã«æå³ã®ããå€ãå¿ããã«è¿œå ããŠãã ããã
ããŒãžãªã³ã¯ã䜿çšããã«ã¯ãæ¬¡ã®æäœãå®è¡ã§ããŸãã
<div class="slider" id="main-slider"> <div class="slider-wrapper"> <div class="slide" id="slide-1">...</div> <div class="slide" id="slide-2">...</div> <div class="slide" id="slide-3">...</div> </div> <div class="slider-nav"><!â --> <a href="#slide-1">1</a> <a href="#slide-2">2</a> <a href="#slide-3">3</a> </div> </div>
ã¢ã³ã«ãŒã®ãããã§ãåãªã³ã¯ã¯ç¬èªã®ã¹ã©ã€ãã«ã€ãªãããŸãã ããã¯ãJSãªãã§ããŒãžãæ©èœããããã«ç¹å¥ã«èšèšãããŠããŸãã
ãªã³ã¯ãšã³ã³ãããŒã«ãçµã¿åãããã¹ã©ã€ãã·ã§ãŒããããŸãã
<div class="slider" id="main-slider"> <div class="slider-wrapper"> <div class="slide" id="slide-1" data-image="image1.jpg"></div> <div class="slide" id="slide-2" data-image="image2.jpg"></div> <div class="slide" id="slide-3" data-image="image3.jpg"></div> </div> <div class="slider-nav"> <button type="button" class="slider-previous"></button> <button type="button" class="slider-next"></button> </div> <div class="slider-pagination"> <a href="#slide-1">1</a> <a href="#slide-2">2</a> <a href="#slide-3">3</a> </div> </div>
ãããŒã¿ã屿§ã®äœ¿çšã«æ³šæããŠãã ãããäžéšã®ã¹ã©ã€ãã·ã§ãŒã§ã¯ãèæ¯ãšããŠç»åãæ¿å
¥ã§ããŸãããããã®å±æ§ã¯ãèæ¯ãšã¹ã©ã€ããæ¥ç¶ããå ŽæãšããŠã¹ã¯ãªããã§äœ¿çšãããŸãã
ãªã¹ãã䜿çšãã
æå³çã«æ£ããã¢ãããŒãã¯ããªã¹ãã¢ã€ãã ãã¹ã©ã€ããšããŠäœ¿çšããããšã§ãã ãã®å Žåãæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
<ul class="slider-wrapper"> <li class="slide" id="slide-1">...</li> <li class="slide" id="slide-2">...</li> <li class="slide" id="slide-3">...</li> </ul>
ã¹ã©ã€ãã®é åºãæç¢ºã«å®çŸ©ãããŠããå ŽåïŒãã¬ãŒã³ããŒã·ã§ã³ãªã©ïŒãçªå·ä»ããªã¹ãã䜿çšã§ããŸã
CSS
:
<div class="slider" id="main-slider"> <div class="slider-wrapper"> <img src="image1.jpg" alt="First" class="slide" /> <img src="image2.jpg" alt="Second" class="slide" /> <img src="image3.jpg" alt="Third" class="slide" /> </div> <div class="slider-nav"> <button type="button" class="slider-previous"></button> <button type="button" class="slider-next"></button> </div> </div>
CSS
:
<div class="slider" id="main-slider"> <div class="slider-wrapper"> <img src="image1.jpg" alt="First" class="slide" /> <img src="image2.jpg" alt="Second" class="slide" /> <img src="image3.jpg" alt="Third" class="slide" /> </div> <div class="slider-nav"> <button type="button" class="slider-previous"></button> <button type="button" class="slider-next"></button> </div> </div>
CSS
:
<div class="slider" id="main-slider"> <div class="slider-wrapper"> <img src="image1.jpg" alt="First" class="slide" /> <img src="image2.jpg" alt="Second" class="slide" /> <img src="image3.jpg" alt="Third" class="slide" /> </div> <div class="slider-nav"> <button type="button" class="slider-previous"></button> <button type="button" class="slider-next"></button> </div> </div>
ãªããªã ã¹ã©ã€ãã·ã§ãŒã¯å³ããå·Šã«ç§»åãããããå€åŽã®ã³ã³ããã«ã¯ãã¹ãŠã®ã¹ã©ã€ããå«ãŸãããããå€åŽã®ã³ã³ããã®ãµã€ãºã¯åºå®ãããå
åŽã®ã³ã³ããã®å¹
ã¯åºããªããŸãã æåã®ã¹ã©ã€ãã衚瀺ãããŸãã ããã¯ãªãŒããŒãããŒã«ãã£ãŠèšå®ãããŸãïŒ
.slider { width: 1024px; overflow: hidden; } .slider-wrapper { width: 9999px; height: 683px; position: relative; transition: left 500ms linear; }
å
åŽã®ã©ãããŒã¹ã¿ã€ã«ã«ã¯æ¬¡ã®ãã®ããããŸãã
-åºãå¹
-åºå®é«ããæå€§ã¹ã©ã€ãé«ã
-äœçœ®ïŒçžå¯Ÿãã¹ã©ã€ãç§»åãäœæã§ããŸã
-CSSãã©ã³ãžã·ã§ã³ãå·Šã«ç§»åããåããã¹ã ãŒãºã«ãªããŸãã ç°¡åã«ããããã«ããã¹ãŠã®ãã¬ãã£ãã¯ã¹ãæå®ããŸããã§ããã ãã®ããã«ãCSS倿ãïŒç¿»èš³ãšãšãã«ïŒäœ¿çšããããšãã§ããŸãã
ã¹ã©ã€ãã«ã¯float屿§ãããã1è¡ã«äžŠãã§ããŸãã JSã§å·Šãªãã»ãããååŸã§ããããã«ããããã¯çžå¯Ÿçã«é
眮ãããŸãã ã¹ã©ã€ã广ãäœæããããã«äœ¿çšããŸãã
.slide { float: left; position: relative; width: 1024px; height: 683px; }
ç¹å®ã®å¹
ãèšå®ããŸãããã¹ã¯ãªããã§ã¯ãã¹ã©ã€ãã®æ°ã«ã¹ã©ã€ãã®å¹
ãæããããšã§ãå¹
ã倿Žã§ããŸãã å¿
èŠãªå¹
ãããããªãã
ããã²ãŒã·ã§ã³ã¯ããåãžãããã³ã次ãžããã¿ã³ãä»ããŠå®è¡ãããŸãã ããã©ã«ãã®ã¹ã¿ã€ã«ããŒãã«ããŠãç¬èªã®ã¹ã¿ã€ã«ãå²ãåœãŠãŸãã
.slider-nav { height: 40px; width: 100%; margin-top: 1.5em; } .slider-nav button { border: none; display: block; width: 40px; height: 40px; cursor: pointer; text-indent: -9999em; background-color: transparent; background-repeat: no-repeat; } .slider-nav button.slider-previous { float: left; background-image: url(previous.png); } .slider-nav button.slider-next { float: right; background-image: url(next.png); }
ãã¿ã³ã®ä»£ããã«ããŒãžãªã³ã¯ã䜿çšããå Žåãæ¬¡ã®ã¹ã¿ã€ã«ãäœæã§ããŸãã
.slider-nav { text-align: center; margin-top: 1.5em; } .slider-nav a { display: inline-block; text-decoration: none; border: 1px solid #ddd; color: #444; width: 2em; height: 2em; line-height: 2; text-align: center; } .slider-nav a.current { border-color: #000; color: #000; font-weight: bold; }
ãããã®ã¯ã©ã¹ã¯ãã¹ã¯ãªããããåçã«å²ãåœãŠãããŸãã
ãã®ã¢ãããŒãã¯ãã¹ã©ã€ã广ã«é©ããŠããŸãã ãã§ãŒããšè¡šç€ºã®å¹æãéæãããå Žåã¯ããããŒããã¹ã©ã€ãéã«æ°Žå¹³ã€ã³ãã³ãã远å ãããããã¹ã¿ã€ã«ã倿Žããå¿
èŠããããŸãã ã€ãŸãã1è¡ã®ã¹ã©ã€ãã¯å¿
èŠãããŸãã-ã¹ã©ã€ãã®ãããã¯ããå¿
èŠã§ãã
.slider { width: 1024px; margin: 2em auto; } .slider-wrapper { width: 100%; height: 683px; position: relative; } .slide { position: absolute; width: 100%; height: 100%; opacity: 0; transition: opacity 500ms linear; } .slider-wrapper > .slide:first-child { opacity: 1; }
ã¹ã©ã€ããé衚瀺ã«ããã«ã¯ãopacityããããã£ã䜿çšããŸããããã¯ãç»é¢ããããŒã¿ãèªã¿åãããã®ããã°ã©ã ããdisplayïŒnoneãã€ã³ã¹ããŒã«ãããŠããèŠçŽ ã®ã³ã³ãã³ããã¹ããããã
ããã§ãã
CSSã®ã³ã³ããã¹ãäžã®é
眮ã«ããããœãŒã¹ã®æåŸã®ã¹ã©ã€ããä»ã®ã¹ã©ã€ããããå
ã«ãªãã¹ã©ã€ãã®ãããã¯ããäœæããŸããã ããããããã¯å¿
èŠãããŸããã ã¹ã©ã€ãã®é åºãç¶æããã«ã¯ãæåã®ã¹ã©ã€ããé€ããã¹ãŠã®ã¹ã©ã€ããé衚瀺ã«ããå¿
èŠããããŸãã
JSã¯CSSãã©ã³ãžã·ã§ã³ã䜿çšããŠãçŸåšã®ã¹ã©ã€ãã®äžéæåºŠããããã£ã®å€ã倿Žããä»ã®ãã¹ãŠã®ãŠãŒã¶ãŒã«å¯ŸããŠãã®å€ãç¡å¹ã«ããŸãã
IE9ã®åé¡
IE9ã¯
CSSé·ç§»ããµããŒãããŠããŸããã ããããã£ã®å€ã倿Žãããšããã®å€èгãå³åº§ã«å€æŽãããŸãã ã¹ã ãŒãºã«ããããã«ãjQueryã䜿çšããå¿
èŠããããŸãã
Stack Overflowã®ãã®ã¹ã¬ããã§å¯èœãªãœãªã¥ãŒã·ã§ã³ã®è©³çްããèªã¿ãã ãã
ãJavaScriptã³ãŒã
ããŒãžããŒã·ã§ã³ã¹ã©ã€ãã·ã§ãŒ
ãæ¬¡ãžããã¿ã³ãšãåãžããã¿ã³ãã¯ãªãã¯ããŠãããŒãžããŒã·ã§ã³ãè¡ããªãã¹ã©ã€ãã·ã§ãŒã ãããã¯ãå¢åæŒç®åããã³æžåæŒç®åãšèŠãªãããšãã§ããŸãã ãã¿ã³ãã¯ãªãã¯ãããã³ã«å¢æžãããã€ã³ã¿ãŒïŒãŸãã¯ã«ãŒãœã«ïŒãåžžã«ãããŸãã ãã®åæå€ã¯0ã§ãããç®æšã¯ãé
åã®èŠçŽ ãéžæãããã®ãšåãæ¹æ³ã§çŸåšã®ã¹ã©ã€ããéžæããããšã§ãã
ãã®ãããæåã«[次ãž]ãã¯ãªãã¯ãããšããã€ã³ã¿ãŒã1ã€å¢ãã2çªç®ã®ã¹ã©ã€ãã衚瀺ãããŸãã [åãž]ãã¯ãªãã¯ããŠããã€ã³ã¿ãŒãæžãããŠæåã®ã¹ã©ã€ããååŸããŸãã ç
ãã€ã³ã¿ãŒãšå
±ã«ãjQuery .eqïŒïŒã¡ãœããã䜿çšããŠçŸåšã®ã¹ã©ã€ããååŸããŸãã çŽç²ãªJSã§ã¯ã次ã®ããã«ãªããŸãã
function Slideshow( element ) { this.el = document.querySelector( element ); this.init(); } Slideshow.prototype = { init: function() { this.slides = this.el.querySelectorAll( ".slide" ); //... }, _slideTo: function( pointer ) { var currentSlide = this.slides[pointer]; //... } };
èŠç¢ºèª-NodeListã¯é
åãšåãããã«ã€ã³ããã¯ã¹ã䜿çšããŸãã çŸåšã®ã¹ã©ã€ããéžæããå¥ã®æ¹æ³ã¯ãCSS3ã»ã¬ã¯ã¿ãŒã䜿çšããããšã§ãã
Slideshow.prototype = { init: function() {
CSS3ã»ã¬ã¯ã¿ãŒïŒnth-ââchildïŒïŒã¯1ã®èŠçŽ ãã«ãŠã³ãããããããã€ã³ã¿ãŒã«1ã€è¿œå ããå¿
èŠããããŸãã ã¹ã©ã€ããéžæãããããã®èŠªã³ã³ââãããå³ããå·Šã«ç§»åããå¿
èŠããããŸãã jQueryã§ã¯ã.animateïŒïŒã¡ãœããã䜿çšã§ããŸãã
(function( $ ) { $.fn.slideshow = function( options ) { options = $.extend({ wrapper: ".slider-wrapper", slides: ".slide",
éåžžã®JSã«ã¯.animateïŒïŒã¡ãœããããªããããCSSãã©ã³ãžã·ã§ã³ã䜿çšããŸãã
.slider-wrapper { position: relative;
ããã§ãã¹ã¿ã€ã«ãªããžã§ã¯ããä»ããŠleftããããã£ãåçã«å€æŽã§ããŸãã
function Slideshow( element ) { this.el = document.querySelector( element ); this.init(); } Slideshow.prototype = { init: function() { this.wrapper = this.el.querySelector( ".slider-wrapper" ); this.slides = this.el.querySelectorAll( ".slide" );
次ã«ãåã³ã³ãããŒã«ã«å¯ŸããŠã¯ãªãã¯ã€ãã³ããäœæããå¿
èŠããããŸãã jQueryã§ã¯.onïŒïŒã¡ãœããã䜿çšã§ããçŽç²ãªJSã§ã¯addEventListenerïŒïŒã¡ãœããã䜿çšã§ããŸãã
ãŸãããã€ã³ã¿ãŒããªã¹ãã®å¢çã«éãããã©ããã確èªããå¿
èŠããããŸã-ãåãã®å Žåã¯0ããæ¬¡ãã®å Žåã¯ã¹ã©ã€ãã®ç·æ°ã ãããã®å Žåãã察å¿ãããã¿ã³ãé衚瀺ã«ããå¿
èŠããããŸãã
(function( $ ) { $.fn.slideshow = function( options ) { options = $.extend({ wrapper: ".slider-wrapper", slides: ".slide", previous: ".slider-previous", next: ".slider-next",
ãããŠãçŽç²ãªJSã§ã¯ã次ã®ããã«ãªããŸãã
function Slideshow( element ) { this.el = document.querySelector( element ); this.init(); } Slideshow.prototype = { init: function() { this.wrapper = this.el.querySelector( ".slider-wrapper" ); this.slides = this.el.querySelectorAll( ".slide" ); this.previous = this.el.querySelector( ".slider-previous" ); this.next = this.el.querySelector( ".slider-next" ); this.index = 0; this.total = this.slides.length; this.actions(); }, _slideTo: function( pointer ) { var currentSlide = this.slides[pointer]; this.wrapper.style.left = "-" + currentSlide.offsetLeft + "px"; }, actions: function() { var self = this; self.next.addEventListener( "click", function() { self.index++; self.previous.style.display = "block"; if( self.index == self.total - 1 ) { self.index = self.total - 1; self.next.style.display = "none"; } self._slideTo( self.index ); }, false); self.previous.addEventListener( "click", function() { self.index--; self.next.style.display = "block"; if( self.index == 0 ) { self.index = 0; self.previous.style.display = "none"; } self._slideTo( self.index ); }, false); } };
äŸ
jQueryïŒ
ã¹ã©ã€ãã·ã§ãŒçŽç²ãªJavaScriptã¹ã©ã€ãã·ã§ãŒããŒãžã³ã°ã¹ã©ã€ãã·ã§ãŒ
ãã®ãããªã¹ã©ã€ãã·ã§ãŒã§ã¯ãåãªã³ã¯ã1ã€ã®ã¹ã©ã€ããæ
åœããããããã€ã³ã¿ãŒã¯äžèŠã§ãã ã¢ãã¡ãŒã·ã§ã³ã¯å€ãããŸãã-ãŠãŒã¶ãŒãã¹ã©ã€ããããã²ãŒãããæ¹æ³ã¯å€ãããŸãã jQueryã®å Žåãæ¬¡ã®ã³ãŒãããããŸãã
(function( $ ) { $.fn.slideshow = function( options ) { options = $.extend({ wrapper: ".slider-wrapper", slides: ".slide", nav: ".slider-nav", speed: 500, easing: "linear" }, options); var slideTo = function( slide, element ) { var $currentSlide = $( options.slides, element ).eq( slide ); $( options.wrapper, element ). animate({ left: - $currentSlide.position().left }, options.speed, options.easing ); }; return this.each(function() { var $element = $( this ), $navigationLinks = $( "a", options.nav ); $navigationLinks.on( "click", function( e ) { e.preventDefault(); var $a = $( this ), $slide = $( $a.attr( "href" ) ); slideTo( $slide, $element ); $a.addClass( "current" ).siblings(). removeClass( "current" ); }); }); }; })( jQuery );
ãã®å Žåãåã¢ã³ã«ãŒã¯ç¹å®ã®ã¹ã©ã€ãã®IDã«å¯Ÿå¿ããŸãã çŽç²ãªJSã§ã¯ããããšNodeListå
ã®ã¹ã©ã€ãã®æ°å€ã€ã³ããã¯ã¹ãæ ŒçŽããããŒã¿å±æ§ã®äž¡æ¹ã䜿çšã§ããŸãã
function Slider( element ) { this.el = document.querySelector( element ); this.init(); } Slider.prototype = { init: function() { this.links = this.el.querySelectorAll( "#slider-nav a" ); this.wrapper = this.el.querySelector( "#slider-wrapper" ); this.navigate(); }, navigate: function() { for ( var i = 0; i < this.links.length; ++i ) { var link = this.links[i]; this.slide( link ); } }, slide: function( element ) { var self = this; element.addEventListener( "click", function( e ) { e.preventDefault(); var a = this; self.setCurrentLink( a ); var index = parseInt( a.getAttribute( "data-slide" ), 10 ) + 1; var currentSlide = self.el.querySelector( ".slide:nth-child(" + index + ")" ); self.wrapper.style.left = "-" + currentSlide.offsetLeft + "px"; }, false); }, setCurrentLink: function(link) { var parent = link.parentNode; var a = parent.querySelectorAll( "a" ); link.className = "current"; for ( var j = 0; j < a.length; ++j ) { var cur = a[j]; if ( cur !== link ) { cur.className = ""; } } } };
IE10以éã§ã¯ãclassListã䜿çšããŠã¯ã©ã¹ã管çã§ããŸãã
link.classList.add( "current" );
IE11ã§ã¯ãããŒã¿ã»ããããããã£ãä»ããŠããŒã¿å±æ§ãååŸã§ããŸãã
var index = parseInt( a.dataset.slide, 10 ) + 1;
äŸ
jQueryïŒããŒãžããŒã·ã§ã³ã¹ã©ã€ãã·ã§ãŒJavaScriptïŒããŒãžããŒã·ã§ã³ã¹ã©ã€ãã·ã§ãŒããŒãžããŒã·ã§ã³ãšã³ã³ãããŒã«ã®ã¹ã©ã€ãã·ã§ãŒ
ãã®ãããªã¹ã©ã€ãã·ã§ãŒã¯ãã³ãŒãã«ãšã£ãŠã¯ããå°é£ã§ãããã€ã³ã¿ãŒãšããŒãžããã·ã¥ã®äœ¿çšãçµã¿åãããå¿
èŠããããŸãã ã€ãŸããçŸåšã®ã¹ã©ã€ãã¯ããã€ã³ã¿ãŒã®äœçœ®ãšãªã³ã¯ãä»ããŠéžæãããã¹ã©ã€ãã®äž¡æ¹ã«åºã¥ããŠéžæããå¿
èŠããããŸãã
ãªã³ã¯çªå·3ãã¯ãªãã¯ãããšããã€ã³ã¿ãŒã2ã«èšå®ããå¿
èŠããããŸãããåãžããã¯ãªãã¯ããŠã2çªç®ã®ã¹ã©ã€ãã«ç§»åããŸãã ã€ãŸããåæãè¡ãå¿
èŠããããŸãã
ããã¯ãDOMã®åãªã³ã¯ã®çªå·ã€ã³ããã¯ã¹ãä»ããŠåæã§ããŸãã 1ã€ã®ãªã³ã¯-1ã€ã®ã¹ã©ã€ããã€ã³ããã¯ã¹ã¯0ã1ã2ãªã©ã«ãªããŸãã
jQueryã§ã¯ãã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
(function( $ ) { $.fn.slideshow = function( options ) { options = $.extend({
ã«ãŒãœã«ã®å¯èŠæ§ã倿Žãããããšãããã«ããããŸã-ã€ã³ããã¯ã¹ãã¹ã©ã€ãã·ã§ãŒãªããžã§ã¯ãã®ããããã£ãšããŠå®£èšãããŸããã ãã®ããã«ããŠãjQueryã³ãŒã«ããã¯ã«ãã£ãŠäœæãããå¯èœæ§ã®ããã¹ã³ãŒãã®åé¡ãåé¿ããŸãã ããã§ãã¹ã©ã€ãã·ã§ãŒãªããžã§ã¯ãã®ãããªãã¯ããããã£ãšããŠå®£èšãããŠãããããã«ãŒãœã«ã¯ã©ãããã§ãã¢ã¯ã»ã¹ã§ãããã©ã°ã€ã³ã®åå空éã®å€ã§ãã¢ã¯ã»ã¹ã§ããŸãã
.indexïŒïŒã¡ãœããã¯ãåãªã³ã¯ã®æ°å€ã€ã³ããã¯ã¹ãæäŸããŸãã
çŽç²ãªJSã«ã¯ãã®ãããªã¡ãœããã¯ãªããããããŒã¿å±æ§ã䜿çšããæ¹ãç°¡åã§ãã
(function() { function Slideshow( element ) { this.el = document.querySelector( element ); this.init(); } Slideshow.prototype = { init: function() { this.wrapper = this.el.querySelector( ".slider-wrapper" ); this.slides = this.el.querySelectorAll( ".slide" ); this.previous = this.el.querySelector( ".slider-previous" ); this.next = this.el.querySelector( ".slider-next" ); this.navigationLinks = this.el.querySelectorAll( ".slider-pagination a" ); this.index = 0; this.total = this.slides.length; this.setup(); this.actions(); },
ããã§ãããã·ãŒãžã£ããªã³ã¯ã«æ¥ç¶ããäœæããããŒã¿å±æ§ã䜿çšã§ããŸãã
actions: function() { var self = this;
äŸ
jQueryïŒã³ã³ãããŒã«ãåããããŒãžããŒã·ã§ã³ã¹ã©ã€ãã·ã§ãŒJavaScriptïŒã³ã³ãããŒã«ä»ãã®ããŒãžããŒã·ã§ã³ã¹ã©ã€ãã·ã§ãŒãµã€ãºãæ±ã£ãŠããŸã
次ã®CSSã«ãŒã«ã«æ»ããŸãããã
.slider-wrapper { width: 9999px; height: 683px; position: relative; transition: left 500ms linear; }
ã¹ã©ã€ããããããããå Žåã9999ã§ã¯ååã§ã¯ãªããããããŸããã åã¹ã©ã€ãã®å¹
ãšæ°ã«åºã¥ããŠãã¹ã©ã€ãã®å¯žæ³ããªã³ã¶ãã©ã€ã§èª¿æŽããå¿
èŠããããŸãã
jQueryã§ã¯ãããã¯ç°¡åã§ãã
ãŠã£ã³ããŠã®å¹
ãååŸããåã¹ã©ã€ãã®å¹
ãèšå®ããŸãã å
éšã©ãããŒã®åèšå¹
ã¯ããŠã£ã³ããŠã®å¹
ãšã¹ã©ã€ãã®æ°ãæããããšã§åŸãããŸãã
ããã§ãåæã®å¹
ã¯åã¹ã©ã€ãã®å¹
ã«ãã£ãŠäžããããŸãã ã©ãããŒã®åèšå¹
ãèšå®ããã ãã§ãã
å
åŽã®ã³ã³ããã¯ååãªå¹
ã«ãªããŸããã çŽç²ãªJSã§ã¯ãããã¯ã»ãŒåãæ¹æ³ã§è¡ãããŸãã
ãã§ãŒã广
ãã§ãŒã广ã¯ãã¹ã©ã€ãã·ã§ãŒã§ãã䜿çšãããŸãã çŸåšã®ã¹ã©ã€ããæ¶ããæ¬¡ã®ã¹ã©ã€ãã衚瀺ãããŸãã JQueryã«ã¯ãopacityããããã£ãšdisplayããããã£ã®äž¡æ¹ã§æ©èœããfadeInïŒïŒããã³fadeOutïŒïŒã¡ãœããããããããã¢ãã¡ãŒã·ã§ã³ãçµäºãããšèŠçŽ ãããŒãžããåé€ãããŸãïŒè¡šç€ºïŒãªãïŒã
çŽç²ãªJSã§ã¯ãopacityããããã£ãæäœããCSSããžã·ã§ãã³ã°ã¹ã¿ãã¯ã䜿çšããã®ãæé©ã§ãã ãã®åŸãæåã«ã¹ã©ã€ãã衚瀺ããïŒäžéæåºŠïŒ1ïŒãä»ã®ã¹ã©ã€ãã¯é衚瀺ã«ãªããŸãïŒäžéæåºŠïŒ0ïŒã
次ã®äžé£ã®ã¹ã¿ã€ã«ã¯ããã®æ¹æ³ã瀺ããŠããŸãã
.slider { width: 100%; overflow: hidden; position: relative; height: 400px; } .slider-wrapper { width: 100%; height: 100%; position: relative; } .slide { position: absolute; width: 100%; height: 100%; opacity: 0; } .slider-wrapper > .slide:first-child { opacity: 1; }
çŽç²ãªJSã§ã¯ãåã¹ã©ã€ãã®CSSé·ç§»ãç»é²ããå¿
èŠããããŸãã
.slide { float: left; position: absolute; width: 100%; height: 100%; opacity: 0; transition: opacity 500ms linear; }
jQueryã§ã¯ãfadeInïŒïŒããã³fadeOutïŒïŒã¡ãœããã䜿çšããã«ã¯ãäžéæåºŠãšè¡šç€ºã倿Žããå¿
èŠããããŸãã
.slide { float: left; position: absolute; width: 100%; height: 100%; display: none; } .slider-wrapper > .slide:first-child { display: block; }
jQueryã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
(function( $ ) { $.fn.slideshow = function( options ) { options = $.extend({ wrapper: ".slider-wrapper", previous: ".slider-previous", next: ".slider-next", slides: ".slide", nav: ".slider-nav", speed: 500, easing: "linear" }, options); var slideTo = function( slide, element ) { var $currentSlide = $( options.slides, element ).eq( slide ); $currentSlide. animate({ opacity: 1 }, options.speed, options.easing ). siblings( options.slides ). css( "opacity", 0 ); };
äžéæåºŠãã¢ãã¡ãŒããããšãã¯ãæ®ãã®ã¹ã©ã€ãã®ãã®ããããã£ã®å€ã倿Žããå¿
èŠããããŸãã
JavaScriptã§ã¯ã次ã®ããã«ãªããŸãã
Slideshow.prototype = {
äŸ
jQueryïŒãã§ãŒãã¹ã©ã€ãã·ã§ãŒJavaScriptïŒãã§ãŒãã¹ã©ã€ãã·ã§ãŒè¡šç€ºèŠçŽ ïŒãããª
ã¹ã©ã€ãã·ã§ãŒã«ãããªãå«ããããšãã§ããŸãã Vimeoã®ãããªã¹ã©ã€ãã·ã§ãŒã®äŸã次ã«ç€ºããŸãã
<div class="slider-wrapper"><!â --> <div class="slide"> <iframe src="https://player.vimeo.com/video/109608341?title=0&byline=0&portrait=0" width="1024" height="626" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </div> <div class="slide"> <iframe src="https://player.vimeo.com/video/102570343?title=0&byline=0&portrait=0" width="1024" height="576" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </div> <div class="slide"> <iframe src="https://player.vimeo.com/video/97620325?title=0&byline=0&portrait=0" width="1024" height="576" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </div> </div>
ãããªã¯iframeãä»ããŠå«ãŸããŸãã ããã¯ãç»åãšåã亀æå¯èœãªã€ã³ã©ã€ã³ãããã¯ã§ãã 眮æå¯èœ-ã³ã³ãã³ãã¯å€éšãœãŒã¹ããååŸãããããã
ãã«ããŒãžã®ã¹ã©ã€ãã·ã§ãŒãäœæããã«ã¯ã次ã®ããã«ã¹ã¿ã€ã«ã倿Žããå¿
èŠããããŸãã
html, body { margin: 0; padding: 0; height: 100%; min-height: 100%; } .slider { width: 100%; overflow: hidden; height: 100%; min-height: 100%; position: absolute; } .slider-wrapper { width: 100%; height: 100%; position: relative; } .slide { float: left; position: absolute; width: 100%; height: 100%; } .slide iframe { display: block; position: absolute; width: 100%; height: 100%; }
äŸ
jQueryïŒå
šããŒãžåç»ã¹ã©ã€ãã·ã§ãŒJavaScriptïŒå
šããŒãžåç»ã¹ã©ã€ãã·ã§ãŒèªåã¹ã©ã€ãã·ã§ãŒ
èªåã¹ã©ã€ãã·ã§ãŒã¯ã¿ã€ããŒã䜿çšããŸãã 颿°ãsetIntervalïŒïŒã¿ã€ããŒã«ã³ãŒã«ããã¯ãããã³ã«ãã«ãŒãœã«ã1ãã€å¢å ãããããæ¬¡ã®ã¹ã©ã€ããéžæãããŸãã
ã«ãŒãœã«ãã¹ã©ã€ãã®æå€§æ°ã«éãããããŒãã«ãªã»ããããå¿
èŠããããŸãã
ç¡éã®ã¹ã©ã€ãã·ã§ãŒã¯ããŠãŒã¶ãŒããã°ããæ©ãŸããŸãã ãŠãŒã¶ãŒãã¢ãã¡ãŒã·ã§ã³ã®äžã«ã«ãŒãœã«ã眮ãããšãã«ã¢ãã¡ãŒã·ã§ã³ã忢ããã«ãŒãœã«ãé¢ãããšãã«ã¢ãã¡ãŒã·ã§ã³ã埩å
ããã®ãæåã®æ¹æ³ã§ãã
jQueryã®å ŽåïŒ
(function( $ ) { $.fn.slideshow = function( options ) { options = $.extend({ slides: ".slide", speed: 3000, easing: "linear" }, options); var timer = null;
.stopïŒïŒã¡ãœããã®äž¡æ¹ã®ãã©ã¡ãŒã¿ãŒãtrueã«èšå®ãããŠããã®ã¯ãã·ãŒã±ã³ã¹ããã¢ãã¡ãŒã·ã§ã³ãã¥ãŒãäœæããå¿
èŠã¯ãããŸãããçŽç²ãªJSã§ã¯ãã³ãŒãã¯ããã·ã³ãã«ã«ãªããŸããç¹å®ã®æéã§åã¹ã©ã€ãã®CSSé·ç§»ãç»é²ããŸãã .slide { transition: opacity 3s linear; }
ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã (function() { function Slideshow( element ) { this.el = document.querySelector( element ); this.init(); } Slideshow.prototype = { init: function() { this.slides = this.el.querySelectorAll( ".slide" ); this.index = 0;
äŸ
jQueryïŒèªåã¹ã©ã€ãã·ã§ãŒJavaScriptïŒèªåã¹ã©ã€ãã·ã§ãŒããŒããŒãããã²ãŒã·ã§ã³
é«åºŠãªã¹ã©ã€ãã·ã§ãŒã§ã¯ãããŒããŒãã³ã³ãããŒã«ãã€ãŸã ãã¿ã³ã«è§Šããã ãã§ã¹ã©ã€ããå転ããŸããç§ãã¡ã«ãšã£ãŠãããã¯åã«ããŒæŒäžã€ãã³ãã®åŠçãç»é²ããå¿
èŠãããããšãæå³ããŸãããããè¡ãã«ã¯ãã€ãã³ããªããžã§ã¯ãã®keyCodeããããã£ã䜿çšããŸããæŒãããããŒã®ã³ãŒãïŒã³ãŒãã®ãªã¹ãïŒãè¿ããŸãããã¿ã³ãPreviousããšãNextãã«ã¢ã¿ããããã€ãã³ãã¯ãããŒãleftããšãrightãã«ã¢ã¿ããã§ããŸããjQueryïŒ $( "body" ).on( "keydown", function( e ) { var code = e.keyCode; if( code == 39 ) {
çŽç²ãªJSã§ã¯ãåçŽãª.triggerïŒïŒã¡ãœããã®ä»£ããã«ãdispatchEventïŒïŒã䜿çšããå¿
èŠããããŸãã document.body.addEventListener( "keydown", function( e ) { var code = e.keyCode; var evt = new MouseEvent( "click" );
ãŸãšããªãããžã§ã¯ãã§ã¯ãããã¯æ
£ç¿ã§ã¯ãããŸãããpublicã¡ãœããã§ã¹ã¯ããŒã«ãæäŸããæ©èœãèšå®ãããã¿ã³ãã¯ãªãã¯ããŠãããåŒã³åºãå¿
èŠããããŸããæ¬¡ã«ãããã°ã©ã ã®å¥ã®éšåã«ãã®æ©èœãå®è£
ããå¿
èŠãããå ŽåãDOMã€ãã³ãããšãã¥ã¬ãŒãããå¿
èŠã¯ãããŸãããããã®ã¡ãœãããåŒã³åºãã ãã§æžã¿ãŸããäŸ
jQueryïŒããŒããŒã ã¹ã©ã€ãã·ã§ãŒJavaScriptïŒããŒããŒãã¹ã©ã€ãã·ã§ãŒã³ãŒã«ããã¯
ãã®ã¢ã¯ã·ã§ã³ã®å®è¡æã«å®è¡ãããã¹ã©ã€ãã·ã§ãŒã®ä»»æã®ã¢ã¯ã·ã§ã³ã«ã³ãŒããæ·»ä»ã§ãããšäŸ¿å©ã§ãããããã³ãŒã«ããã¯é¢æ°ã®ç®çã§ã-ç¹å®ã®ã¢ã¯ã·ã§ã³ãçºçãããšãã«ã®ã¿å®è¡ãããŸããã¹ã©ã€ãã·ã§ãŒã«çœ²åããããããã©ã«ãã§é衚瀺ã«ãªã£ãŠãããšããŸããã¢ãã¡ãŒã·ã§ã³ã®æç¹ã§ãçŸåšã®ã¹ã©ã€ãã®ãã£ãã·ã§ã³ã衚瀺ããããããã䜿ã£ãŠäœããããå¿
èŠããããŸããjQueryã§ã¯ã次ã®ãããªã³ãŒã«ããã¯ãäœæã§ããŸãã (function( $ ) { $.fn.slideshow = function( options ) { options = $.extend({
ãã®å Žåãã³ãŒã«ããã¯ã¯ãçŸåšã®ã¹ã©ã€ããåŒæ°ãšããŠäœ¿çšãã.animateïŒïŒã®é¢æ°ã§ããäœ¿çšæ¹æ³ã¯æ¬¡ã®ãšããã§ãã $(function() { $( "#main-slider" ).slideshow({ callback: function( slide ) { var $wrapper = slide.parent();
çŽç²ãªJSã®å ŽåïŒ (function() { function Slideshow( element, callback ) { this.callback = callback || function() {};
ã³ãŒã«ããã¯é¢æ°ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒã®2çªç®ã®ãã©ã¡ãŒã¿ãŒãšããŠå®çŸ©ãããŸããæ¬¡ã®ããã«äœ¿çšã§ããŸãã document.addEventListener( "DOMContentLoaded", function() { var slider = new Slideshow( "#main-slider", function( slide ) { var wrapper = slide.parentNode;
äŸ
jQueryïŒã³ãŒã«ããã¯é¢æ°ã 䜿çšããã¹ã©ã€ãã·ã§ãŒJavaScriptïŒã³ãŒã«ããã¯é¢æ°ã䜿çšããã¹ã©ã€ãã·ã§ãŒå€éšAPI
ãããŸã§ã®ãšãããç§ãã¡ã®ã·ããªãªã¯åçŽã§ãïŒãã¹ãŠã®ã¹ã©ã€ãã¯æ¢ã«ããã¥ã¡ã³ãã«ãããŸããå€éšïŒYouTubeãVimeoãFlickrïŒããããŒã¿ãæ¿å
¥ããå¿
èŠãããå Žåã¯ãå€éšã³ã³ãã³ããåãåã£ããšãã«ãã®å Žã§ã¹ã©ã€ãã«èšå
¥ããå¿
èŠããããŸãããµãŒãããŒãã£ã®ãµãŒããŒããã®å¿çãããã«åæ ãããªãå Žåããããããããã»ã¹ãé²è¡äžã§ããããšã瀺ãããã«èªã¿èŸŒã¿ã¢ãã¡ãŒã·ã§ã³ãæ¿å
¥ããå¿
èŠããããŸãã <div class="slider" id="main-slider"> <div class="slider-wrapper"> </div> <div class="slider-nav"> <button class="slider-previous"> </button> <button class="slider-next"> </button> </div> <div id="spinner"></div><!â --> </div>
gifãŸãã¯çŽç²ãªCSSã¢ãã¡ãŒã·ã§ã³ã®å ŽåããããŸãã #spinner { border-radius: 50%; border: 2px solid #000; height: 80px; width: 80px; position: absolute; top: 50%; left: 50%; margin: -40px 0 0 -40px; } #spinner:after { content: ''; position: absolute; background-color: #000; top:2px; left: 48%; height: 38px; width: 2px; border-radius: 5px; -webkit-transform-origin: 50% 97%; transform-origin: 50% 97%; -webkit-animation: angular 1s linear infinite; animation: angular 1s linear infinite; } @-webkit-keyframes angular { 0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(360deg);} } @keyframes angular { 0%{transform:rotate(0deg);} 100%{transform:rotate(360deg);} } #spinner:before { content: ''; position: absolute; background-color: #000; top:6px; left: 48%; height: 35px; width: 2px; border-radius: 5px; -webkit-transform-origin: 50% 94%; transform-origin: 50% 94%; -webkit-animation: ptangular 6s linear infinite; animation: ptangular 6s linear infinite; } @-webkit-keyframes ptangular { 0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(360deg);} } @keyframes ptangular { 0%{transform:rotate(0deg);} 100%{transform:rotate(360deg);} }
æé ã¯æ¬¡ã®ãšããã§ãã-å€éšããã®ããŒã¿ã®èŠæ±-ããŒããŒã®é衚瀺-ããŒã¿ã®è§£æ-HTMLã®æ§ç¯-ã¹ã©ã€ãã·ã§ãŒã®è¡šç€º-ã¹ã©ã€ãã·ã§ãŒã®åŠçYouTubeããææ°ã®ãŠãŒã¶ãŒãããªãéžæãããšããŸãã jQueryïŒ
(function( $ ) { $.fn.slideshow = function( options ) { options = $.extend({ wrapper: ".slider-wrapper",
çŽç²ãªJavaScriptã«ã¯ãJSONã¡ãœãããäœæãããšãã远å ã®ã¹ãããããããŸãã (function() { function Slideshow( element ) { this.el = document.querySelector( element ); this.init(); } Slideshow.prototype = { init: function() { this.wrapper = this.el.querySelector( ".slider-wrapper" ); this.loader = this.el.querySelector( "#spinner" );
ãã®åŸãæé ã¯åæ§ã§ãã (function() { function Slideshow( element ) { this.el = document.querySelector( element ); this.init(); } Slideshow.prototype = { init: function() { this.wrapper = this.el.querySelector( ".slider-wrapper" ); this.loader = this.el.querySelector( "#spinner" );
äŸ
jQueryïŒå€éšAPIã®äœ¿çšJavaScriptïŒå€éšAPIã®äœ¿çšãããã«
ã¹ã©ã€ãã·ã§ãŒã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããè峿·±ãæ©äŒã§ããããŸãé ãã«è¡ããªããšããŠãŒã¶ãŒã¯æ°åã¯ãªãã¯ããã ãã§ãµã€ãäžã®ç®çã®ã³ã³ãã³ãããã°ããèŠã€ããããšãã§ããŸãããŸããRevolution SliderãNivo Sliderãªã©ã®ã¹ã©ã€ãã·ã§ãŒã¯ããµã€ãã®èŠèŠçãªã³ã³ããŒãã³ããè±ãã«ããæ¹æ³ã瀺ããŠããŸãããããããã®ãããªè€éãªãããžã§ã¯ããæ§ç¯ããã«ã¯ããŸãåºæ¬ãçè§£ããå¿
èŠããããŸããäŸ
Github