Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Smarty по разному работает в разных браузерах

396
27 июня 2013 года
SibBear
223 / / 27.07.2006
Вот такой простой код
 
Код:
{section name=i loop=$array}
<div class="{if $smarty.section.i.index is div by 3 and $smarty.section.i.index > 0}class_list_cls{else}class_list{/if}">
<a href="blablabla">ssilka</a>
</div>

{/section}
смысл простой, 100 квадратов (div) выстраиваются в таблицу по 3 шт в ряд.
В ie, opera выводит по 3 в ряд, в мозиле по 4 в ряд и короче всегда как рулетка, как повезет так и кажет.
И ссылка в 1м квадрате не работает в мозиле. В ие работает.

Просмотр html кода на первый, второй и уже помоему тридцатый раз все норм. Копирование исходного кода страницы в другой html файл - и все работает.

Хелп!
396
27 июня 2013 года
SibBear
223 / / 27.07.2006
Это вырезка стиля
Код:
.class_list {
    position:   relative;
    width:      250px;
    height:     300px;
    float:      left;
    }
.class_list_cls{
    position:   relative;
    width:      250px;
    height:     300px;
    float:      clear;
    }
8
28 июня 2013 года
mfender
3.5K / / 15.06.2005
Smarty так-то на сервере работает, а не в браузере.
396
28 июня 2013 года
SibBear
223 / / 27.07.2006
так то да, поэтому я вообще в ступоре как он работает.
но похоже ошибки в css, и лезут какие то конфликты. Перекинул все на таблицы вместо дивов и все работает...
вобщем так и не понятно с чем связано.
8
28 июня 2013 года
mfender
3.5K / / 15.06.2005
У тебя конкретная ошибка в стилях: у float не бывает значения clear.
Переделай класс class_list_cls так:

 
Код:
clear: left;
float: left;
height: 300px;
position: relative;
width: 250px;
В этом случае у тебя в ряду первый div будет этим классом. Правда в первом ряду будет всего два div'а ))))
Просто условие переделай немного:

 
Код:
if $smarty.section.i.index is div by 3 or $smarty.section.i.index eq 0
// Не помню точно, но кажется в smarty eq - знак равенства
PS. Я не стал запариваться со Smarty, а сделал тупо то же самое на JavaScript. Но думаю, они идентичны.
Вобщем, в финале получилось такое (обрати внимание на стили, бордюр и маргин сделал для наглядности)

Код:
<html>
    <head>
        <style>
            div.class_list, .class_list_cls {
                position:   relative;  
                width:      250px;
                height:     300px;
                float:      left;
                border: 1px solid black;
                margin: 1px;
            }
            .class_list_cls{
                clear: left;
            }
        </style>
    </head>
    <body>
        <script>
            var b = document.body;
            for(var i=0; i<100; i++){
                var d = document.createElement('div');
                if(i%3==0 || i==0){
                    var cl = 'class_list_cls';
                }else{
                    var cl = 'class_list';    
                }
                d.setAttribute('class', cl);
                d.innerHTML = i;
                b.appendChild(d);
            }
        </script>
    </body>
</html>
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог