Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Эффектные вкладки табы - Tabulous.js (div и а хватает все) (https://javascript.ru/forum/dom-window/60979-ehffektnye-vkladki-taby-tabulous-js-div-i-khvataet-vse.html)

runyugin 30.01.2016 11:53

Эффектные вкладки табы - Tabulous.js (div и а хватает все)
 
Есть такой плагин вкладок http://jquerycards.com/ui/filter-sort/tabulous-js/

пример в работе http://codepen.io/anon/pen/MKXmxz

но есть проблема если в контенте вкладок есть <div> <a> ломается работа, скрипт их тоже включает в работу

рони 30.01.2016 11:57

runyugin,
а пример с проблемой?

рони 30.01.2016 12:10

runyugin,
ау:-?

runyugin 30.01.2016 13:41

http://codepen.io/anon/pen/gPKRXe

в таб1 блоки

рони 30.01.2016 15:02

runyugin,
http://codepen.io/anon/pen/BjVZgM
если всё ок замените плагин на новую версию - по ссылке старая версия с исправлениями

рони 30.01.2016 15:18

tabs модернизация tabulous
 
runyugin,
<!DOCTYPE html><html class=''>
<head><meta charset='UTF-8'><meta name="robots" content="noindex">



<style class="cp-pen-styles">html{
    background: rgb(101, 92, 137);
        font-family: "Lato", sans-serif;
}
a:active,a:focus {
    outline: expression(hideFocus='true');
}

p {
    margin-bottom: 20px;
}

#wrapper {
    width: 960px;
    margin: 0 auto;
    margin-top: 100px;
}
#tabs,#tabs2,#tabs3,#tabs4,#tabs5 {
    width: 500px;
    margin: 0 auto;
    margin-bottom: 40px;
}

#tabs li,#tabs2 li,#tabs3 li,#tabs4 li,#tabs5 li {
    float: left;
    margin-right: 2px;
    list-style: none;
}

#tabs li a,#tabs2 li a,#tabs3 li a,#tabs4 li a,#tabs5 li a {
    display: block;
    padding: 17px 30px;
    background: #544f6b;
    text-decoration: none;
    color: #8478B3;
}

#tabs li a:hover,#tabs2 li a:hover,#tabs3 li a:hover,#tabs4 li a:hover,#tabs5 li a:hover {
    background: rgb(78, 74, 99);
}

#tabs_container {
    padding: 40px;
    overflow: hidden;
    position: relative;
    background: white;
}

#tabs_container div {
    margin-right: 40px;
}

.transition {
    -webkit-transition: all .3s ease-in-out;
    -moz-transition: all .3s ease-in-out;
    -o-transition: all .3s ease-in-out;
    -ms-transition: all .3s ease-in-out;
    transition: all .3s ease-in-out;

    -webkit-transition-delay: .3s;
    -moz-transition-delay: .3s;
    -o-transition-delay: .3s;
    -ms-transition-delay: .3s;
    transition-delay: .3s;
}

.make_transist {
    -webkit-transition: all .3s ease-in-out;
    -moz-transition: all .3s ease-in-out;
    -o-transition: all .3s ease-in-out;
    -ms-transition: all .3s ease-in-out;
    transition: all .3s ease-in-out;
}

.hidescale {
    -webkit-transform: scale(0.9);
    -moz-transform: scale(0.9);
    -o-transform: scale(0.9);
    -ms-transform: scale(0.9);
    transform: scale(0.9);
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    filter: alpha(opacity=0);
    filter: alpha(opacity=0);
    opacity: 0;
}

.showscale {
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    -o-transform: scale(1);
    -ms-transform: scale(1);
    transform: scale(1);
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    filter: alpha(opacity=100);
    opacity: 1;

    -webkit-transition-delay: .3s;
    -moz-transition-delay: .3s;
    -o-transition-delay: .3s;
    -ms-transition-delay: .3s;
    transition-delay: .3s;
}

.hideleft {
    -webkit-transform: translateX(-100%);
    -moz-transform: translateX(-100%);
    -o-transform: translateX(-100%);
    -ms-transform: translateX(-100%);
    transform: translateX(-100%);
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    filter: alpha(opacity=0);
    opacity: 0;
}

.showleft {
    -webkit-transform: translateX(0px);
    -moz-transform: translateX(0px);
    -o-transform: translateX(0px);
    -ms-transform: translateX(0px);
    transform: translateX(0px);
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    filter: alpha(opacity=100);
    opacity: 1;

    -webkit-transition-delay: .3s;
    -moz-transition-delay: .3s;
    -o-transition-delay: .3s;
    -ms-transition-delay: .3s;
    transition-delay: .3s;
}

.hideup {
    -webkit-transform: scale(1.1);
    -moz-transform: scale(1.1);
    -o-transform: scale(1.1);
    -ms-transform: scale(1.1);
    transform: scale(1.1);
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    filter: alpha(opacity=0);
    opacity: 0;
}

.showup {
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    -o-transform: scale(1);
    -ms-transform: scale(1);
    transform: scale(1);
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    filter: alpha(opacity=100);
    opacity: 1;

    -webkit-transition-delay: .3s;
    -moz-transition-delay: .3s;
    -o-transition-delay: .3s;
    -ms-transition-delay: .3s;
    transition-delay: .3s;
}

.hideflip {
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    filter: alpha(opacity=0);
    opacity: 0;

    -webkit-transform: rotatey(-90deg) scale(1.1);
    -moz-transform: rotatey(-90deg) scale(1.1);
    -o-transform: rotatey(-90deg) scale(1.1);
    -ms-transform: rotatey(-90deg) scale(1.1);
    transform: rotatey(-90deg) scale(1.1);

    -webkit-transform-origin: 50% 50%;
    -moz-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    -ms-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
}

.showflip {
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    filter: alpha(opacity=100);
    opacity: 1;

    -webkit-transition-delay: .3s;
    -moz-transition-delay: .3s;
    -o-transition-delay: .3s;
    -ms-transition-delay: .3s;
    transition-delay: .3s;

    -webkit-transform: rotatey(0deg) scale(1);
    -moz-transform: rotatey(0deg) scale(1);
    -o-transform: rotatey(0deg) scale(1);
    -ms-transform: rotatey(0deg) scale(1);
    transform: rotatey(0deg) scale(1);

    -webkit-transform-origin: 50% 50%;
    -moz-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    -ms-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
}

.tabulous_active {
    background: white !important;
    color: #655c89 !important;
}

.tabulousclear {
    display: block;
    clear: both;
}</style></head><body>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
(function($) {
    $.fn.tabulous = function(options) {
        var settings = $.extend({
            effect: "scale"
        }, options);
        return this.each(function() {
            var parent = $(this),
                ul = $(">ul", parent),
                links = $(">li a", ul),
                block = $("> div", parent),
                divs = $("> div", block),
                hide = "hide" + settings.effect,
                show = "show" + settings.effect;
            ul.append('<span class="tabulousclear"></span>');
            divs.css({
                "position": "absolute",
                "top": "40px"
            }).addClass("make_transist");
            block.addClass("transition");
            links.each(function(indx, a) {
                var a = $(a);
                a.on("click", function(event) {
                    event.preventDefault();
                    links.not(a.addClass("tabulous_active")).removeClass("tabulous_active");
                    var div = divs.eq(indx);
                    divs.removeClass(show).not(div.addClass(show)).addClass(hide);
                    block.height(div.height())
                })
            }).eq(0).click()
        })
    }
})(jQuery);
</script>

<div id="wrapper">

                <div id="tabs">
    <ul>
      <li><a href="#tabs-1" title="">Tab 1</a></li>
      <li><a href="#tabs-2" title="">Tab 2</a></li>
      <li><a href="#tabs-3" title="">Tab 3</a></li>
    </ul>

    <div id="tabs_container">


      <div id="tabs-1">
        <p>Proin elit arcu, rutrum commodo</p>


        <div>Пролмй блок 1</div>

        <div>Пролмй блок 2
          <a href="#" title="">Промная ссылка 1</a>
        </div>

        <div>
          <div>Пролмй блок 3 <a href="#" title="">Промная ссылка 2</a></div>
        </div>

        <p>Aenean tempor ullamcorper leo.</p>
      </div>

      <div id="tabs-2">
        <p>Morbi tincidunt, dui sit amet facilisis feugiat</p>

      </div>

      <div id="tabs-3">
        <p>Mauris eleifend est et turpis</p>
        <p> Vestibulum non ante</p>
      </div>

    </div>


  </div>





            <div id="tabs2">
        <ul>
            <li><a href="#tabs-1" title="">Tab 1</a></li>
            <li><a href="#tabs-2" title="">Tab 2</a></li>
            <li><a href="#tabs-3" title="">Tab 3</a></li>
        </ul>

        <div id="tabs_container">




        <div id="tabs-1">
                <p>Proin elit arcu</p>
        </div>

        <div id="tabs-2">
                <p>Morbi tincidunt, dui sit amet</p>

        </div>

        <div id="tabs-3">
                <p>Mauris eleifend</p>
        </div>

        </div>

    </div>


    <div id="tabs3">
        <ul>
            <li><a href="#tabs-1" title="">Tab 1</a></li>
            <li><a href="#tabs-2" title="">Tab 2</a></li>
            <li><a href="#tabs-3" title="">Tab 3</a></li>
        </ul>

        <div id="tabs_container">


            <div id="tabs-1">
                    <p>Proin elit arcu</p>
            </div>

            <div id="tabs-2">
                    <p>Morbi tincidunt</p>

            </div>

            <div id="tabs-3">
                    <p>Mauris eleifend est et turpis</p>
            </div>

        </div>

    </div>



    <div id="tabs4">
        <ul>
            <li><a href="#tabs-1" title="">Tab 1</a></li>
            <li><a href="#tabs-2" title="">Tab 2</a></li>
            <li><a href="#tabs-3" title="">Tab 3</a></li>
        </ul>

        <div id="tabs_container">




        <div id="tabs-1">
                <p>Proin elit</p>
        </div>

        <div id="tabs-2">
                <p>Morbi tincidunt</p>

        </div>

        <div id="tabs-3">
                <p>Mauris eleifend est et turpis.
                </p>
        </div>

        </div>

    </div>


</div>



<script>
$(function(){
$('#tabs').tabulous({ effect: 'scale' });
$('#tabs2').tabulous({ effect: 'left' });
$('#tabs3').tabulous({ effect: 'up' });
$('#tabs4').tabulous({ effect: 'flip' });
});
</script>

</body></html>

рони 30.01.2016 15:30

пост 6 tabs модернизация tabulous -- изменены названия некоторых классов и параметров и переписан с сохранением прежней функциональности сам плагин ... лучше ничего не брать из старого чтобы не запутатся.

runyugin 30.01.2016 17:40

Супер! спасибо

Ilya_Ru 27.10.2016 18:16

А можно как-нибудь сделать $(window).resize в данном скрипте? На маленьких разрешениях экрана существует проблема с тем, что часть текста в блоках скрывается при первой загрузке страницы... при нажатии на вкладки все становится нормально.

рони 27.10.2016 19:04

Ilya_Ru,
может проблема в вашем css? делайте макет, что можно было увидеть.

Ilya_Ru 27.10.2016 22:30

Отличия Вашего скрипта в 6 посте от моего только вот в этих строках:
#wrapper {
    width: 100%;
    margin: 0 auto;
    margin-top: 100px;
}
#tabs,#tabs2,#tabs3,#tabs4,#tabs5 {
    width: 100%;
    margin: 0 auto;
    margin-bottom: 40px;
}

и в наличии большого количества текста во вкладках.

Откроем html страницу в браузере на весь экран, затем сделаем окно браузера в полэкрана, и наблюдаем, что часть текста уходит за пределы блока :(помогите, пожалуйста :(

рони 27.10.2016 23:47

tabulous resize
 
Ilya_Ru,

(function($) {
    $.fn.tabulous = function(options) {
        var settings = $.extend({
            effect: "scale"
        }, options);
        return this.each(function() {
            var parent = $(this),
                ul = $(">ul", parent),
                links = $(">li a", ul),
                block = $("> div", parent),
                divs = $("> div", block),
                hide = "hide" + settings.effect,
                show = "show" + settings.effect;
            ul.append('<span class="tabulousclear"></span>');
            divs.css({
                "position": "absolute",
                "top": "40px"
            }).addClass("make_transist");
            block.addClass("transition");
            links.each(function(indx, a) {
                var a = $(a);
                a.on("click", function(event) {
                    event.preventDefault();
                    links.not(a.addClass("tabulous_active")).removeClass("tabulous_active");
                    var div = divs.eq(indx);
                    divs.removeClass(show).not(div.addClass(show)).addClass(hide);
                    block.height(div.height())
                })
            }).eq(0).click();
            $(window).resize(function() {
                block.height(divs.filter("." + show).height())
            })
        })
    }
})(jQuery);

Ilya_Ru 28.10.2016 00:07

Отлично, работает! :)
И еще вопрос, когда в коде ниже прописываешь "width": "100%" то некоторые браузеры вытягивают нижнюю границу.
divs.css({
                "position": "absolute",
                "top": "10px",
"width": "100%"
            })

Можно как-нибудь это побороть? :) Хочу разместить по центру блока текст

рони 28.10.2016 01:23

Ilya_Ru,
не понимаю зачем "width": "100%" и весь текст ниже

Ilya_Ru 28.10.2016 02:40

Наверно я просто не правильно выразился :)
Если во вкладку вписать 1-2 слова и попытаться сделать их выравнивание по середине строки - текст будет все равно выравнен по левому краю.

Приведу пример:
...
<div id="tabs-1">
<p style="text-align:center">привет,<br> мир!</p>
</div>
...
- в этом случае как раз идёт странное выравнивание. Оно наверно связано с position:absolute


Если же в скрипт прописать "wight":"100%", то в коде страницы, само собой, увидем это:
...
<div class="класс_скрипта" style="position:absolute; top:40px; wight:100%" id="tabs-1">
<p style="text-align:center">привет,<br> мир!</p>
</div>
...
- данный вариант выравнивает текст по правильному, по центру, но, некоторые браузеры отображают большой отступ до нижней границы блока вкладки (скринсшот)
http://hostingkartinok.com/show-imag...3fae0af279d193
Может быть Вы знаете как это победить?


PS: за ошибки прошу прощения. Пишу с телефона.

рони 28.10.2016 09:06

Ilya_Ru,
divs.css({
                "position": "absolute",
                "top": "10px", "right": 0, "left": 0, "text-align": "center", "margin": "0 auto"
            }).addClass("make_transist");

рони 28.10.2016 09:14

Ilya_Ru,
правильнее в css добавить
.make_transist {   right: 0; left: 0; text-align: center; margin: 0 auto; position: absolute;top:10px;  }

а в скрипте оставить только
divs.addClass("make_transist");

Ilya_Ru 28.10.2016 17:41

рони,
Огромное спасибо :) Вы просто волшебник! :)

Ilya_Ru 29.10.2016 03:06

рони,
Еще раз побеспокою.
Если прописать .make_transist { right: 0; left: 0; text-align: center; margin: 0 auto; position: absolute;top:10px; }, то возвращается старая проблема со ссылками. А точнее ссылка становится не кликабельной во многих браузерах (Яндекс браузер, Мозилла, другие не проверял). Будто бы не ссылка вовсе, а обычный текст.

И у меня почему-то возникает проблема с выравниванием вкладок, когда в одной из них текста много... Пытаюсь сделать, чтобы они все были одной высоты с выравниванием по центру, но, увы, что-то идет не так. Оговорюсь сразу, верстку пытаюсь сделать адаптивной.

Отправляю все, что причастно ко вкладкам, в том числе кусочки своего css, где есть какое-либо отношение ко вкладкам. Может в чем-то там дело.

<!DOCTYPE html>
<html lang="en-US"><head>
    <link rel="stylesheet" href="http://php-ilyaru.rhcloud.com/moysite/style-cleaned.css" media="screen">
    <link rel="stylesheet" href="http://php-ilyaru.rhcloud.com/moysite/style.responsive-cleaned.css" media="all">
	<link href='http://php-ilyaru.rhcloud.com/moysite/tabulous.css' rel='stylesheet' type='text/css'>
<script src="http://php-ilyaru.rhcloud.com/moysite/jquery.js"></script>
    <script src="http://php-ilyaru.rhcloud.com/moysite/script.responsive.js"></script>
<script type="text/javascript">
(function($) {
    $.fn.tabulous = function(options) {
        var settings = $.extend({
            effect: "scale"
        }, options);
        return this.each(function() {
            var parent = $(this),
                ul = $(">ul", parent),
                links = $(">li a", ul),
                block = $("> div", parent),
                divs = $("> div", block),
                hide = "hide" + settings.effect,
                show = "show" + settings.effect;
            ul.append('<span class="tabulousclear"></span>');
            divs.css({
                "position": "absolute",
                "top": "10px",
				"left":0,
				"right":0
            }).addClass("make_transist");
            block.addClass("transition");
            links.each(function(indx, a) {
                var a = $(a);
                a.on("click", function(event) {
                    event.preventDefault();
                    links.not(a.addClass("tabulous_active")).removeClass("tabulous_active");
                    var div = divs.eq(indx);
                    divs.removeClass(show).not(div.addClass(show)).addClass(hide);
                    block.height(div.height())
                })
            }).eq(0).click();
            $(window).resize(function() {
                block.height(divs.filter("." + show).height())
            })
        })
    }
})(jQuery);</script>

<style>
@media (max-width: 520px) and (min-width: 200px) {
.art-content .art-postcontent-0 .layout-item-old-0 {
padding-right: 3px;
padding-left: 3px;
}
.art-post {
padding: 3px;
}
.art-footer {
padding: 10px 0px 0px 0px;
}
}
</style></head>
<body>
<div id="art-main">
<div>
            <div class="art-layout-wrapper">
                <div class="art-content-layout">
                    <div class="art-content-layout-row">
                        <div class="art-layout-cell art-content">
	<div id="wrapper">
<div id="tabs3">
<ul id="tabs_tabs">
<li><a href="#tabs-1" title="">текст, которому не хватает одной строки</a></li>
<li><a href="#tabs-2" title="">простой текст</a></li>
<li><a href="#tabs-3" title="">еще один простой текст</a></li>
<li><a href="#tabs-4" title="">заключительный текст</a></li>
</ul>
<div id="tabs_container">
<div id="tabs-1">
<p style="text-align:center"> 
здесь просто какой-то текст <a href="#" >ссылочка</a>.<br> 
</p>
</div>
<div id="tabs-2">
<p>
текст по правому краю<br>
простой.
</p>
</div>
<div id="tabs-3">
<p>
тоже простой текст<br>
</p>
</div>
<div id="tabs-4">
<p>
заключительный текст<br>
для третьей вкладки</p>
</div></div></div></div></div></div></div></div></div>
<script>
$(function(){
$('#tabs').tabulous({ effect: 'scale' });
$('#tabs2').tabulous({ effect: 'left' });
$('#tabs3').tabulous({ effect: 'up' });
$('#tabs4').tabulous({ effect: 'flip' });
});
</script>
</body>
</html>

PS: надеюсь, ничего страшного, что ссылки на css и js дал со своего хостинга...

рони 29.10.2016 10:23

Цитата:

Сообщение от Ilya_Ru
А точнее ссылка становится не кликабельно

это просто решается, если понять как расположены вкладки.(попробуйте сами решить, позднее напишу)
Цитата:

Сообщение от Ilya_Ru
И у меня почему-то возникает проблема с выравниванием вкладок, когда в одной из них текста много... Пытаюсь сделать, чтобы они все были одной высоты с выравниванием по центру, но, увы, что-то идет не так

это не понял.

Ilya_Ru 29.10.2016 10:45

Цитата:

Сообщение от рони (Сообщение 433346)
это просто решается, если понять как расположены вкладки.(попробуйте сами решить, позднее напишу)

Расположение вкладок понял с самого начала знакомства с ними. Каждый элемент как бы располагается один под другим, при выборе вкладки меняется просто их видимость... но вот решить проблему пока не удается... :(

Цитата:

Сообщение от рони (Сообщение 433346)
это не понял.

Я вот о чем: http://hostingkartinok.com/show-imag...d0406155abd7ca
Расстояние появляется от вкладок до блока...

рони 29.10.2016 10:45

Ilya_Ru,
.showup,.showscale,.showleft,.showflip  {
  z-index: 10;
}

рони 29.10.2016 10:50

Цитата:

Сообщение от Ilya_Ru
Я вот о чем

лучше поискать дизайнера, нужен специалист по css, моих знаний недостаточно, чтобы вам правильно помочь по одинаковой высоте li.
и добавьте run в пост №19
[HTML run][/HTML]

Ilya_Ru 29.10.2016 11:20

Огромное человеческое спасибо! :) Вы как всегда очень сильно помогли :)
Вопрос с кликабельностью ссылки полностью решен :)

Высоту li блоков смог выравнить при помощи скрипта, найденного в интернете:

function setEqualHeight(columns)
{
var tallestcolumn = 0;
columns.each(
function()
{
currentHeight = $(this).height();
if(currentHeight > tallestcolumn)
{
tallestcolumn = currentHeight;
}
}
);
columns.height(tallestcolumn);
}
$(document).ready(function() {
setEqualHeight($(".height > li > a"));
});


Применил к:
<ul class="height">
...
</ul>

Решение достаточно топорное. Но если более лучшее не будет найдено - придется оставить так :)

Цитата:

Сообщение от рони (Сообщение 433351)
и добавьте run в пост №19
[HTML run][/HTML]

Добавил :)

рони 29.10.2016 12:07

Ilya_Ru,
встроил в плагин, использовать
Цитата:

Сообщение от Ilya_Ru
class="height"

нет необходимости, но лучшее решение это css, a не js.
(function($) {
    function setEqualHeight(columns) {
        var tallestcolumn = 0;
        columns.each(function() {
            currentHeight = $(this).css({
                height: ""
            }).height();
            if (currentHeight > tallestcolumn) tallestcolumn = currentHeight
        });
        columns.height(tallestcolumn)
    }
    $.fn.tabulous = function(options) {
        var settings = $.extend({
            effect: "scale"
        }, options);
        return this.each(function() {
            var parent = $(this),
                ul = $(">ul", parent),
                links = $(">li a", ul),
                block = $("> div", parent),
                divs = $("> div", block),
                hide = "hide" + settings.effect,
                show = "show" + settings.effect;
            ul.append('<span class="tabulousclear"></span>');
            divs.css({
                "position": "absolute",
                "top": "10px",
                "left": 0,
                "right": 0
            }).addClass("make_transist");
            block.addClass("transition");
            links.each(function(indx, a) {
                var a = $(a);
                a.on("click", function(event) {
                    event.preventDefault();
                    links.not(a.addClass("tabulous_active")).removeClass("tabulous_active");
                    var div = divs.eq(indx);
                    divs.removeClass(show).not(div.addClass(show)).addClass(hide);
                    block.height(div.height())
                })
            }).eq(0).click();
            setEqualHeight(links);
            $(window).resize(function() {
                block.height(divs.filter("." + show).height());
                setEqualHeight(links)
            })
        })
    }
})(jQuery);

Ilya_Ru 29.10.2016 17:16

рони,
Появился новый (старый) глюк: Если открыть html страницу в полноэкранном режиме, а затем перейти в полэкрана - текст съедается как во вкладках, так и в div к ним причастным :(
Если в ручную изменить размер окна - вкладки подстраиваются под текст

UPD: вроде решил проблему банальной задержкой выполнения скрипта setTimeout(function() { ...скрипт... }, 1000);

Ilya_Ru 29.10.2016 19:49

все равно иногда проскальзывает данный глюк... особенно заметно на мобильном при поворотах устройства

рони 29.10.2016 20:18

Ilya_Ru,
танцы с бубнами, поменять строки 45 и 44, или исключить строку 45.

Ilya_Ru 29.10.2016 20:39

так и есть проблема :(

Ilya_Ru 31.10.2016 15:12

Проблема так и остается актуальной. Пока не дернишь окошко - вкладки не подстроются. Может в моем случае происходит какой-то конфликт со style.responsive.js? Если да, то быть может подскажите, как его исправить? http://php-ilyaru.rhcloud.com/moysite/moy.html

рони 31.10.2016 17:20

Ilya_Ru,
пробуйте
(function($) {
    function setEqualHeight(columns) {
        var tallestcolumn = 0;
        columns.each(function() {
            currentHeight = $(this).css({
                height: ""
            }).height();
            if (currentHeight > tallestcolumn) tallestcolumn = currentHeight
        });
        columns.height(tallestcolumn)
    }
    $.fn.tabulous = function(options) {
        var settings = $.extend({
            effect: "scale"
        }, options);
        return this.each(function() {
            var parent = $(this),
                ul = $(">ul", parent),
                links = $(">li a", ul),
                block = $("> div", parent),
                divs = $("> div", block),
                hide = "hide" + settings.effect,
                show = "show" + settings.effect;
            ul.append('<span class="tabulousclear"></span>');
            divs.css({
                "position": "absolute",
                "top": "10px",
                "left": 0,
                "right": 0
            }).addClass("make_transist");
            block.addClass("transition");

            links.each(function(indx, a) {
                var a = $(a);
                a.on("click", function(event) {
                    event.preventDefault();
                    links.not(a.addClass("tabulous_active")).removeClass("tabulous_active");
                    var div = divs.eq(indx);
                    divs.removeClass(show).not(div.addClass(show)).addClass(hide);
                    //block.height(div.height())
                    timerHeight();
                })
            }).eq(0).click();
 function timerHeight()
 {
window.setTimeout(function() {
  block.height(divs.filter("." + show).height())
},300)
 }

            setEqualHeight(links);
            $(window).resize(function() {
                timerHeight()
               // block.height(divs.filter("." + show)[0].scrollHeight);
                setEqualHeight(links)
            })
        })
    }
})(jQuery);

Ilya_Ru 31.10.2016 20:05

рони,
Почти хорошо))).
Высота самих вкладок только не адаптируется, пока окно не дернешь. Может в скрипте где ещё задержку надо сделать? )))

Ilya_Ru 31.10.2016 20:12

Скринсшот глюка: http://hostingkartinok.com/show-imag...3e2463bc40c4f7

рони 31.10.2016 20:19

Ilya_Ru,
ссылка с новым вариантом где?

Ilya_Ru 31.10.2016 20:35

Прошу прощение, что не ссылкой, я не с компьютера(((. Заменил только текст во вкладке. Глюк ловлю только тогда, когда текст во вкладке в полноэкранном режиме умещается в одну строку, а при просмотре в пол экрана - нет.

<!DOCTYPE html>
<html lang="en-US" class="responsive responsive-tablet"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <meta name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0, user-scalable = no, width = device-width">
    <link rel="stylesheet" href="http://php-ilyaru.rhcloud.com/moysite/style-cleaned.css" media="screen">
    <link rel="stylesheet" href="http://php-ilyaru.rhcloud.com/moysite/style.responsive-cleaned.css" media="all">
	<link href="http://php-ilyaru.rhcloud.com/moysite/tabulous.css" rel="stylesheet" type="text/css">
	
<script src="http://php-ilyaru.rhcloud.com/moysite/jquery.js"></script>
    <script src="http://php-ilyaru.rhcloud.com/moysite/script.responsive.js"></script>


<script type="text/javascript">
(function($) {
    function setEqualHeight(columns) {
        var tallestcolumn = 0;
        columns.each(function() {
            currentHeight = $(this).css({
                height: ""
            }).height();
            if (currentHeight > tallestcolumn) tallestcolumn = currentHeight
        });
        columns.height(tallestcolumn)
    }
    $.fn.tabulous = function(options) {
        var settings = $.extend({
            effect: "scale"
        }, options);
        return this.each(function() {
            var parent = $(this),
                ul = $(">ul", parent),
                links = $(">li a", ul),
                block = $("> div", parent),
                divs = $("> div", block),
                hide = "hide" + settings.effect,
                show = "show" + settings.effect;
            ul.append('<span class="tabulousclear"></span>');
            divs.css({
                "position": "absolute",
                "top": "10px",
                "left": 0,
                "right": 0
            }).addClass("make_transist");
            block.addClass("transition");

            links.each(function(indx, a) {
                var a = $(a);
                a.on("click", function(event) {
                    event.preventDefault();
                    links.not(a.addClass("tabulous_active")).removeClass("tabulous_active");
                    var div = divs.eq(indx);
                    divs.removeClass(show).not(div.addClass(show)).addClass(hide);
                   // block.height(div.height())
                    timerHeight();
                })
            }).eq(0).click();
 function timerHeight()
 {
window.setTimeout(function() {
  block.height(divs.filter("." + show).height())
},300)
 }

            setEqualHeight(links);
            $(window).resize(function() {
                timerHeight()
               // block.height(divs.filter("." + show)[0].scrollHeight);
                setEqualHeight(links)
            })
        })
    }
})(jQuery);</script>



<style>
ul {
width:100%;
}
li {
//margin:0 10px 20px 5px;
//padding:10px;
width:160px;
display:inline-block;
vertical-align:top;
*display:inline;
*zoom:1;
}
.licent {
width:100%;
//height:121px;
text-align:center;
display:table;
position:relative;
}
.licent span {
display:table;
vertical-align:middle;
    text-align: center;
    width: 100%;
}
.licent a {
display:table-cell;
vertical-align:middle;
    text-align: center;
 //   width: 100%;
}
</style>
</head>

<body>
<div id="art-main">
<div>
            <div class="art-layout-wrapper">
                <div class="art-content-layout">
                    <div class="art-content-layout-row">
                        <div class="art-layout-cell art-content">
	<div id="wrapper">
<div id="tabs3">
<ul id="tabs_tabs">
<li><div class="licent"><span><a href="http://php-ilyaru.rhcloud.com/moysite/moy.html#tabs-1" title="" class="tabulous_active" style="height: 36px;"><span style="display: table;">текст в несколько строчек</span></a></span></div></li>
<li><div class="licent"><span><a href="http://php-ilyaru.rhcloud.com/moysite/moy.html#tabs-1" title="" style="height: 36px;"><span style="display: table;">простой текст</span></a></span></div></li>
<li><div class="licent"><span><a href="http://php-ilyaru.rhcloud.com/moysite/moy.html#tabs-1" title="" style="height: 36px;"><span style="display: table;">еще один простой текст</span></a></span></div></li>
<li><div class="licent"><span><a href="http://php-ilyaru.rhcloud.com/moysite/moy.html#tabs-1" title="" style="height: 36px;"><span style="display: table;">заключительный текст</span></a></span></div></li>
<span class="tabulousclear"></span></ul>
<div id="tabs_container" class="transition" style="height: 396px;">
<div id="tabs-1" class="make_transist showup" style="position: absolute; top: 10px; left: 0px; right: 0px;">
<p style="text-align:center"> 
здесь просто какой-то адски длинный текст, например вот этот: Много десятилетий люди не знали, что именно курят так называемые профессиональные историки в своих кабинетах, что обсуждают и на чем основываются. И потому - принимали Историю за настоящую науку, а историков - за ученых.
Катастрофа для Истории случилась всего полтора десятка лет назад, с развитием информационной революции, когда миллионы образованных людей смогли не только почитать все то, что историки выдавали за "научные данные", но и сравнить подобные "трактаты" с первоисточниками или своими знаниями в различных дисциплинах. И вот тут то и обнаружилось, что король-то голый!!!Что нет такой науки, как История, а есть дурацкая ахинея, которую некому и нечем защищать. И чем дальше — тем чаще тут и там случаются беседы, подобные вот таким:
Профессиональный историк: Рассказ о человеческой цивилизации я начну с самого начала, с появления людей в Европе. Когда-то, давным-давно сюда, в Европу переселились негры из Африки и основали здесь первые поселения, что подтверждается находками черепов негритянского типа...
Образованный человек: Постойте-постойте!!! Какие еще черепа?! На тысячу двести раскопанных у нас палеостоянок нашелся только 1 (один) череп, в котором удалось рассмотреть признаки негроидности! Да и тот оказался носителем славянской гаплогруппы «I» — той самой, которую по сей день носит каждый четвертый русский человек! Мы же не негры?
Профессиональный историк: Генетика — это лженаука! Генетики ничего не понимают в истории. Вы не должны верить генетикам, вы должны верить только нам, носителям высшей неоспоримой истины! К тому же с тех пор население русской равнины неоднократно менялось полностью. Народы приходили, уходили, снова приходили, исчезали, опять заселялись...
Образованный человек: Подождите, это с какой стати? Генетические исследования доказали, что праславянская гаплогруппа «I» зародилась именно здесь, в Европе, 50 тысяч лет назад и никогда никуда не исчезала! Мы и сегодня здесь живем. Каждый четвертый русский — это потомок сунгирцев, костенковцев, коренной житель в тысячах поколений. Плюс есть еще часть народов, подселившихся сюда в последние 3-4 тысячи лет, но никак праславян не вытеснивших и не заменивших.
Профессиональный историк: Да говорят же вам, что генетика — это лженаука! Славяне вообще родились всего тысячу лет назад. А до этого на Русской равнине жили монголоиды. Берем культуру ямочно-гребенчатой керамики эпохи неолита (кон. 4 - сер. 2-го тыс. до н. э.). Это почти вся Русская равнина. Поселения этой культуры всегда сопровождаются захоронениями представителей уральской расы, в фенотипе которой обнаруживают монголоидные элементы, понятно?
Образованный человек: Постойте-постойте!!! Какие еще захоронения?! В 56 найденных погребениях только 2 (два) черепа из погребений 19 и 20 (Сахтыш II) обозваны носящими «следы смягченной монголоидности». Да и по тем антропологи дали заключения, что черепа однозначно принадлежат европеоидам, с отклонениями в пределах нормы.
Профессиональный историк: Антропология — это лженаука! Антропологи ничего не смыслят  <a href="http://php-ilyaru.rhcloud.com/moysite/moy.html#">ссылочка</a>.<br> 
</p>


</div>
<div id="tabs-2" class="make_transist hideup" style="position: absolute; top: 10px; left: 0px; right: 0px;">
<p>
текст по правому краю<br>
простой.
</p>
</div>
<div id="tabs-3" class="make_transist hideup" style="position: absolute; top: 10px; left: 0px; right: 0px;">
<p>
тоже простой текст<br>
</p>
</div>
<div id="tabs-4" class="make_transist hideup" style="position: absolute; top: 10px; left: 0px; right: 0px;">
<p>
заключительный текст<br>
для третьей вкладки 
</p>
</div>
</div>
</div>
</div>  
</div>
</div>
</div>
</div>
</div>
<script>
$(function(){
$('#tabs').tabulous({ effect: 'scale' });
$('#tabs2').tabulous({ effect: 'left' });
$('#tabs3').tabulous({ effect: 'up' });
$('#tabs4').tabulous({ effect: 'flip' });
});
</script>
</div><div id="art-resp"><div id="art-resp-m"></div><div id="art-resp-t"></div></div></body></html>

рони 31.10.2016 20:45

Ilya_Ru,
(function($) {
    function setEqualHeight(columns) {
        var tallestcolumn = 0;
        columns.each(function() {
            currentHeight = $(this).css({
                height: ""
            }).height();
            if (currentHeight > tallestcolumn) tallestcolumn = currentHeight
        });
        columns.height(tallestcolumn)
    }
    $.fn.tabulous = function(options) {
        var settings = $.extend({
            effect: "scale"
        }, options);
        return this.each(function() {
            var parent = $(this),
                ul = $(">ul", parent),
                links = $(">li a", ul),
                block = $("> div", parent),
                divs = $("> div", block),
                hide = "hide" + settings.effect,
                show = "show" + settings.effect;
            ul.append('<span class="tabulousclear"></span>');
            divs.css({
                "position": "absolute",
                "top": "10px",
                "left": 0,
                "right": 0
            }).addClass("make_transist");
            block.addClass("transition");

            links.each(function(indx, a) {
                var a = $(a);
                a.on("click", function(event) {
                    event.preventDefault();
                    links.not(a.addClass("tabulous_active")).removeClass("tabulous_active");
                    var div = divs.eq(indx);
                    divs.removeClass(show).not(div.addClass(show)).addClass(hide);
                   // block.height(div.height())
                    timerHeight();
                })
            }).eq(0).click();
 function timerHeight()
 {
window.setTimeout(function() { setEqualHeight(links)
  block.height(divs.filter("." + show).height());

},300)
 }

            //setEqualHeight(links);
            $(window).resize(function() {
                timerHeight();
               // block.height(divs.filter("." + show)[0].scrollHeight);

            })
        })
    }
})(jQuery);

Ilya_Ru 03.11.2016 00:54

рони,Огромнейшее спасибо!))) Больших успехов тебе и удачи во всем! Спасибо за потраченное время на написание всего этого чуда.))) Скрипт идеален!))). Надеюсь, он пригодится ещё кому-нибудь.)))

рони 03.11.2016 01:06

Ilya_Ru,
:victory:


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