Recommended Posts

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

 

post-1926-0-63339700-1393187530_thumb.jp

 

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

 

формируется эта часть разметки тепмлейтом right_special.tpl (строки 6,7,8). я еще не разобрался со Сматри, т.к. не приходилось им раньше пользоваться, но разберусь. пока что, при попытке задать динамически эти id

<div id="item_{$smarty.section.i.index}"><a href="{$special_items2[i].href}">{$special_items2[i].path}</a><br><div id="item_{$smarty.section.i.index}_img">

, перекосило весь блок:

 

post-1926-0-80527200-1393188647_thumb.jp

 

хотя, разметка при этом приняла нужный вид:

 

post-1926-0-68104200-1393188919_thumb.jp

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы поменяли ID, но к нему привязан CSS.

Как вариант можете поменять id="item" на class="item", но при этом вам нужно будет исправлять CSS.

В будущих версиях шаблонов исправим это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я об этом и писал. менять айди на класс невыгодно, если есть на уме манипуляции содержимым. либо придется после загрузки страницы насильно раздавать эти айди нужным элементам, но зачем это делать, когда все формируется сервер-сайд и проще сразу установить все айди еще в пхп... неужели я один заметил эту фигню? ведь это элементарно по сравнению со сложностью работы движка  :wacko: 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Молодой человек вы в корне не правы. Вот как раз class гораздо актуалнее id т.к через можно задать не только стили , но и делать ссылки определенные обработки. А вот class тут гораздо все интереснее. Например
Если мы знаем что у нас будут 3 разных блока по ширине и высоте и цвету тогда мы будем писать 3 класса для каждого по отдельности. А вот если 3 одинаковых , но с разными стилями тут проще
bloki {
Тут код
}

blok1{
Код
}

Blok {
Код
}
То и прописываем
<div class="bloki"></div>
<div class="bloki blok1"></div>
<div class="bloki blok"></div>

По поводу. Item_img опять же 2 способа в первом отдельный id как в нашем случаи во в тором через класс , но .item img

 

", перекосило весь блок:"

потому что вы сломали стили. машина не понимает какой стиль ей нужен и выводит содержимое полностью

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

max-width: 100%;

heigth: 100px; /*параметр 100 если вы хотите зафиксировать ширину */ 

и аналогично наоборот

width: 100px;

max-heigth: 100%; /*параметр 100 если вы хотите зафиксировать высоту */ 

 

я об этом и писал. менять айди на класс невыгодно, если есть на уме манипуляции содержимым. либо придется после загрузки страницы насильно раздавать эти айди нужным элементам, но зачем это делать, когда все формируется сервер-сайд и проще сразу установить все айди еще в пхп... неужели я один заметил эту фигню? ведь это элементарно по сравнению со сложностью работы движка   :wacko:

наверное в вашем случае было бы правильное писать

 

если вы используете jquery то нужно выводить через определенный параметр учета (селекторы) .

Выбор элементов по Id либо ClassName аналогично используемому в CSS

$('item + img');         // выбор всех img элементов перед которыми идут item элементы

 

есть еще один способ

 

Связываем данные с элементом, атрибут data, метод jQuery data в вашем случае

$(document).ready(function(){

$('#item img').each(function(i,el){

console.log("Проверяем "+parseInt(i + 1)+" равен "+$(el).data('title_item'));

});

});

 

<div id="item" data-title_item="{$smarty.section.i.index}">

 

 

1.мне не нонятно что вы имели ввиду когда написали,что разметка приняла нужный вид?
2 для чего вы пытаетесь создать для каждой картинки уникальный блок?
3. Может Вы мне напишите не большое пояснение как правильно формировать стили. ( просто в инете этого нет , а совет не помешал бы)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

TopRaN,

 

По вопросу 1 могу пояснить, что наличие БОЛЕЕ ОДНОГО одинакового значения для атрибута id в пределах текущего документа противоречит определению данного атрибута и одновременно здравому смыслу. если для вас это является новостью, то рекомендую почитать вот тут http://www.w3schools.com/tags/att_global_id.asp раздел Definition and Usage.

 

Касательно вашего вопроса 2, могу сказать, что я ничего не пытался там "создавать". я увидел ошибки разметки (см. ответ на вопрос 1) и попытался их исправить. для чего там задаются идентификаторы каждой картинке - это вопрос не ко мне, а к тому, кто сочинял код. я совершенно не против применения других атрибутов, о которых вы говорите, но, если там уже есть id, то они должны быть заданы как положено.

 

Я не считаю себя в праве давать вам советы вселенского масштаба и вселенской же глупости, но могу дать ссылку на хороший ресурс (http://htmlbook.ru/), где вы наверняка найдете не большое и не малое пояснения.

 

Вы пишите, что я "сломал стили", задав правильным образом идентификаторы. тут стоит лишь передать привет тому, кто додумался прописывать стили не по классу, а по айди, не обратив внимания на то, что вероятно множественное их дублирование (см. ответ на вопрос 1) и не устранил это. Рейзиг - это очень хорошо, но есть еще и обычный javascript, так что не стоит спорить об очевидном (см ответ на вопрос 1).

 

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

 

п.с. отдельное вам спасибо за по-отечески теплое обращение "молодой человек", ценю ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
обратить внимание на проблему

разве это проблема? недоразумение

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

а то перейдёт в холивар.

http://www.w3.org/TR/html4/struct/global.html#adef-id

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Мы не делаем выборку через Яву в стандартном шаблоне поэтому используем ID

2. нужно применять id: выделение уникального блока страницы, для якорей, для JS и др.

3. отрисовка ID идет быстрее чем class (основы HTML),приоритет у ID выше чем у класса, браузеры быстрее их находят т.к. они уникальны. (поэтому это не считается ошибкой), не рекомендуется использовать, но и НЕ СЧИТАЕТСЯ ОШИБКОЙ.

Поэтому это стандартный шаблон. Ведь ни кто не запрещает написать Вам так как хочется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Спасибо, что обращаете внимание на такие вещи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас