JSFiddle - React, Tailwind, and code Playground

by tu genhua

HTML

<h2>我是横向滚动demo,序号我自己定义,不需要自动生成</h2>
	<div id="slide_x" class="slide_x">
		<ul class="list">
			<li>
				<a href="#1">
					<img src="http://m1.img.srcdd.com/farm4/d/2014/0629/22/CD5E9B8DBBDE1B6B0C0C4CB912BE1898_B500_900_500_233.jpeg" width="600" height="280">
				</a>
				<p>焦点图说明文字 111</p>
			</li>
			<li>
				<a href="#2">
					<img src="http://m2.img.srcdd.com/farm5/d/2014/0629/22/C401548F532E4CBE8CFF3FC0B77810A6_B500_900_500_233.jpeg" width="600" height="280">
				</a>
				<p>焦点图说明文字 222</p>
			</li>
			<li>
				<a href="#3">
					<img src="http://m3.img.srcdd.com/farm5/d/2014/0629/22/13E9DA640C75EFB7F74772393DE55C35_B500_900_500_233.jpeg" width="600" height="280">
				</a>
				<p>焦点图说明文字 333</p>
			</li>
			<li>
				<a href="#4">
					<img src="http://m2.img.srcdd.com/farm5/d/2014/0629/22/C03D6BE10370B9FCF46974E86F47E3BF_B500_900_500_233.jpeg" width="600" height="280">
				</a>
				<p>焦点图说明文字 444</p>
			</li>
			<li>
				<a href="#5">
					<img src="http://m3.img.srcdd.com/farm4/d/2014/0629/22/F89C963D02F12EF0E72682293698F44F_B500_900_500_233.jpeg" width="600" height="280">
				</a>
				<p>焦点图说明文字 555</p>
			</li>
		</ul>
		<ul class="ks-switchable-nav">
			<li>5</li>
			<li>6</li>
			<li>7</li>
			<li>8</li>
			<li>9</li>
		</ul>
		<div class="prev"></div>
		<div class="next"></div>
	</div>

	<h2>我是纵向滚动demo</h2>
	<div id="slide_y" class="slide_y">
		<ul class="list">
			<li>
				<a href="#1">
					<img src="http://m1.img.srcdd.com/farm4/d/2014/0629/22/CD5E9B8DBBDE1B6B0C0C4CB912BE1898_B500_900_500_233.jpeg" width="600" height="280">
				</a>
				<p>焦点图说明文字 111</p>
			</li>
			<li>
				<a href="#2">
					<img src="http://m2.img.srcdd.com/farm5/d/2014/0629/22/C401548F532E4CBE8CFF3FC0B77810A6_B500_900_500_233.jpeg" width="600" height="280">
				</a>
				<p>焦点图说明文字 222</p>
			</li>
			
			
			<li>
				<a href="#3">
					<img src="http://m3.img.srcdd.com/farm5/d/2014/0629/22/13E9DA640C75EFB7F74772393DE55C35_B500_900_500_233.jpeg" width="600"...

CSS

/* 焦点图 水平滚动 */
	 * {margin:0;padding:0;}
	 ul,li{list-style:none;}
	 .slide_x {position:relative;width:600px;height:280px;margin:20px auto;overflow:hidden;}
	 .slide_x a{text-decoration:none;}
	 img{border:none;display:block;width:600px;height:280px;overflow:hidden;}
	 .slide_x .list{width:9999px;}
	 .slide_x .list li{position:relative;float:left;width:600px;height:280px;overflow:hidden;}
	 .slide_x .list li a{display:block;}
	 .slide_x .list p{position:absolute;bottom:0;left:0;width:100%;height:24px;background:#000;filter:alpha(opacity=60);opacity:0.6;color:#eee;
	 font-weight:bold;font:12px/24px "\5b8b\4f53";text-indent:12px;}
	 .ks-switchable-nav{overflow:hidden;position:absolute;bottom:4px;right:6px;z-index:99}
	 .ks-switchable-nav li{float:left;width:16px;height:16px;margin:0 0 0 10px;border-radius:2px;background:#eee;color:#333;font:11px/16px Tahoma;text-align:center;cursor:pointer;}
	 .ks-switchable-nav li.select{background:#f30;color:#fff;}

	 .slide_x .prev,
	.slide_x .next{position:absolute;top:110px;width:40px;height:50px;background-image:url(http://m1.img.srcdd.com/farm4/d/2014/0629/22/D61066CAA833217C1B31E2CDB7C44567_B500_900_80_100.png);background-repeat:no-repeat;text-align:center;cursor:pointer;}
	.slide_x .prev{left:0;background-position:0 0;}
	.slide_x .next{right:0;background-position:-40px 0;}
	.slide_x .prev:hover{background-position:0 -50px;}
	.slide_x .next:hover{background-position:-40px -50px;}

	/* 焦点图 纵向滚动 */
	.slide_y {position:relative;width:600px;height:280px;margin:40px auto;overflow:hidden;}
	.slide_y a{text-decoration:none;}
	.slide_y .list{width:680px;height:9999px;overflow:hidden;}
	.slide_y .list li{position:relative;+display:inline;width:600px;height:280px;overflow:hidden;}
	.slide_y .list li a,.slide_y .list li img{display:block;width:600px;height:280px;overflow:hidden;}
	
	.slide_y .list p{position:absolute;bottom:0;left:0;width:100%;height:24px;background:#000;filter:alpha(opacity=60);opacity:0.6;color:#eee;
	...

JavaScript

/**
 * JS switchable图片切换集合
 * @class Switchable
 * @param {object} 
 */

 function Switchable(cfg,callback) {
	var self = this;
	self.cfg = $.extend({},defaults,cfg || {});
	self.index = 0;
	self.callback = callback;
	self._init();
	// 绑定事件
	self._bindEnv();
 }
 $.extend(Switchable.prototype,{
	
	/*
	 * 初始化 是否生成数字按钮等事件操作
	 */
	_init: function(){
		var self = this;
		var cfg = self.cfg;
		if(cfg.container == '') {return;}
		var containerWidth = $(cfg.container).width(),
			listLens = $(cfg.contentCls + ' li',cfg.container).length,
			navCls = $('.ks-switchable-nav li',$(cfg.container)),
			html = '';
		if(cfg.markupType == 0) {
			if(navCls.length <= 0 && listLens > 0  && cfg.numBtn) {
				navCls = $('<ul class="ks-switchable-nav"></ul>');
				$(cfg.container).append(navCls);
				for(var i = 1; i <= listLens; i+=1) {
					html += '<li class="slide_'+i+'">'+i+'</li>';
				}
				$('.ks-switchable-nav',$(cfg.container)).html(html);
			}
		}
		
		$(cfg.contentCls,$(cfg.container)).css('position','relative');
		
		if(cfg.switchTo > 0) {
			self._currentItem(cfg.switchTo);
			self.index = cfg.switchTo;
			self._goto(self.index);
		}else {
			self._currentItem(self.index);
			// 开始轮播函数
			self._start(self.index);
		}
	},
	/*
	 * 开始轮播
	 * @method _start {private}
	 */
	_start: function(index){
		var self = this,
			cfg = self.cfg;
		if(!cfg.auto) {return;}
		self._off();
		self.timer = setTimeout(function(){
			self._goto(index);
		},cfg.time);
	},
	/*
	 * 轮播停止
	 * @method _off {private}
	 */
	_off: function(){
		var self = this;
		if(self.timer !== 'undefined') {
			clearTimeout(self.timer);
		}
	},
	/*
	 * 具体轮播到第几项
	 * @method _goto {private}
	 */
	_goto: function(index){
		var self = this,
			cfg = self.cfg,
			container = $(cfg.container);
		self._off();
		self.index = parseInt(index,10);
		var	elemWidth =  $(cfg.contentCls + ' li',container).width(),
			elemHeight = $(cfg.contentCls + ' li',container).height(),
			listLens = $(cfg.contentCls + '...