Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переключение табов стрелками (https://javascript.ru/forum/dom-window/66654-pereklyuchenie-tabov-strelkami.html)

Igorsrt 30.12.2016 10:25

Переключение табов стрелками
 
Здравствуйте!
Мне нужно что бы вкладки на странице переключались стрелками "Вперед"/"Назад".. Сами табы сделал, а вот как к ним подключить стрелки через js ума не приложу.:( Помогите пожалуйста.
вот код
html:
<div class="section">
    <ul class="tabs">
        <li class="current">Вкладка 1</li>
        <li>Вкладка 2</li>
        <li>Вкладка 3</li>
     </ul>
    <div class="box visible">
        содержимое вкладки 1
    </div>
    <div class="box">
        содержимое вкладки 2
    </div>
    <div class="box">
        содержимое вкладки 3  
    </div>
<div class="controls">
    <a href="#" class="btn btn-default prev">< Назад</a>
    <a href="#" class="btn btn-default next">Вперед ></a>
</div>
</div>


js:
(function ($) {
    $(function () {
        $('ul.tabs').delegate('li:not(.current)', 'click', function () {
            $(this).addClass('current').siblings().removeClass('current')
                .parents('div.section').find('div.box').eq($(this).index())
                .show().siblings('div.box').hide();
        })
    })
})(jQuery);

ksa 30.12.2016 10:45

Igorsrt, ты полный пример сделай. ;) На нем и покажут...

А так на словах:
- лови событие клавиатуры на материнском элементе (к примеру)
- выясняй какой "таб" текущий
- определяй направление "листания"
- гаси "старый" "таб"
- активируй "новый"

Igorsrt 30.12.2016 11:08

Цитата:

Сообщение от ksa (Сообщение 439346)
Igorsrt, ты полный пример сделай. ;) На нем и покажут...

Спасибо. Тая я вроде полный код и выложил: html и js (jQuery)... вот еще css есть:
Код:

/* Вкладки в сайдбаре */
.box {
    display: none;
    padding: 0px !important;
    background-color: #FFF;
}
.box.visible {
    display: block;
    padding: 10px;
}
ul.tabs {
    height: 27px;
    background: #FFF;
    border-bottom: 1px solid #777;
    padding: 0 4px;
    overflow: hidden;
    list-style: none;
}
.tabs li.current, .tabs li:hover {
    background-color:#52c8ff;
    color:#FFFFFF;
    border-color:#52c8ff;
    border-left-style: solid;
    border-right-style: solid;
    border-top-style: solid;
}
.tabs li {
    float: left;
    color: grey;
    line-height: 27px;
    margin-right: 1px !important;
    padding: 0 7px 10px 8px !important;
    font-weight: bold;
    cursor: pointer;
}
.tabs li.current span {
    color: #FFF;
}
.tabs li span {
    float: left;
    padding: 0 11px 0 0;
    height: 27px;
    color: #FFF;
}

... вообще меня устроит любой другой рабочий пример (со стрелками) на jQuery

Igorsrt 30.12.2016 11:11

Цитата:

Сообщение от Rise (Сообщение 439347)
Что за стрелки такие?

кнопки для переключения на следующий или предыдущий таб )
вот похожий пример https://jsfiddle.net/LtLzr9yj/ - только он кажется для bootstrap, а у меня просто jQuery на сайте

Igorsrt 30.12.2016 11:18

Цитата:

Сообщение от Rise (Сообщение 439350)
Igorsrt, ты не видишь что-ли что они у тебя по-другому называются Prev/Next с какой целью ты вопрос формулируешь с "Вперед"/"Назад" ты идиот или что?

...специально для вас исправил на "Вперед"/"Назад"

ksa 30.12.2016 11:24

Цитата:

Сообщение от Igorsrt
Тая я вроде полный код и выложил

Вот как выглядит полный пример.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.box {
    display: none; 
    padding: 0px !important;
    background-color: #FFF;
}
.box.visible {
    display: block;
    padding: 10px;
}
ul.tabs {
    height: 27px;
    background: #FFF;
    border-bottom: 1px solid #777;
    padding: 0 4px;
    overflow: hidden;
    list-style: none;
}
.tabs li.current, .tabs li:hover {
    background-color:#52c8ff;
    color:#FFFFFF;
    border-color:#52c8ff;
    border-left-style: solid;
    border-right-style: solid;
    border-top-style: solid;
}
.tabs li {
    float: left;
    color: grey;
    line-height: 27px;
    margin-right: 1px !important;
    padding: 0 7px 10px 8px !important;
    font-weight: bold;
    cursor: pointer;
}
.tabs li.current span {
    color: #FFF;
}
.tabs li span {
    float: left;
    padding: 0 11px 0 0;
    height: 27px;
    color: #FFF;
}
</style>
<script type='text/javascript'>
$(function () {
	$('ul.tabs').delegate('li:not(.current)', 'click', function () {
		act(this);
	})
	$('.prev').click(function(){
		var i=$('.current').index();
		var obj=$('.tabs > li');
		i=(i<1)? obj.length-1: i-1;
		act(obj.get(i));
	});
	$('.next').click(function(){
		var i=$('.current').index();
		var obj=$('.tabs > li');
		i=++i%obj.length;
		act(obj.get(i));
	});
	function act(Obj){
		$(Obj).addClass('current').siblings().removeClass('current')
			.parents('div.section').find('div.box').eq($(Obj).index())
			.show().siblings('div.box').hide();
	};
})
</script>
</head>
<body>
<div class="section">
    <ul class="tabs">
        <li class="current">Вкладка 1</li>
        <li>Вкладка 2</li>
        <li>Вкладка 3</li>
     </ul>
    <div class="box visible">
        содержимое вкладки 1
    </div>
    <div class="box">
        содержимое вкладки 2
    </div>
    <div class="box">
        содержимое вкладки 3  
    </div>
	<div class="controls">
		<a href="#" class="btn btn-default prev">< Prev</a>
		<a href="#" class="btn btn-default next">Next ></a>
	</div>
</div>
</body>
</html>

ksa 30.12.2016 11:24

Цитата:

Сообщение от Rise
ksa вон про клавиатурные стрелки подумал

Ага... :yes:

ksa 30.12.2016 11:29

Цитата:

Сообщение от Rise
ты идиот или что?

Ну зачем так-то... :(
Новый год ведь уже идет к нам! Мы уже во всю его отмечаем...

Igorsrt 30.12.2016 11:31

Цитата:

Сообщение от ksa
Вот как выглядит полный пример.

Спасибо огромное :)

ksa 30.12.2016 12:00

Цитата:

Сообщение от Rise
добрый ты

И выпимший... :D


Часовой пояс GMT +3, время: 23:25.