Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Область работы тегов форматирования
 
 автор: Drago   (06.05.2007 в 19:33)   письмо автору
 
 

Что можно сделать, чтобы открытый тег (к примеру <b>) в одном диве, не выделял текст в другом?

<div><b>12345</div>
<div>54321</div>


Кроме как помещения дивов в таблицу.

<table>
    <tr><td><div><b>12345</div></td></tr>
    <tr><td><div>54321</div></td></tr>
</table>

   
 
 автор: sim5   (06.05.2007 в 19:58)   письмо автору
 
   для: Drago   (06.05.2007 в 19:33)
 

Закройте тег


<div><b>12345</b></div> 
<div>54321</div>

   
 
 автор: RMW   (06.05.2007 в 19:59)   письмо автору
 
   для: Drago   (06.05.2007 в 19:33)
 


>Что можно сделать, чтобы открытый тег (к примеру <b>) в одном диве, не выделял текст в другом?

Закрыть его.

   
 
 автор: Drago   (06.05.2007 в 20:20)   письмо автору
 
   для: RMW   (06.05.2007 в 19:59)
 

Хороший совет, конечно. :))
Но суть моего вопроса именно в том, что делать, если закрывающего тега нет?

   
 
 автор: ilyaILF   (06.05.2007 в 20:49)   письмо автору
 
   для: Drago   (06.05.2007 в 20:20)
 

Ну где-то же в коде HTML он (закрывающий </b>) должен быть :-), хотя бы из-за того, что это оговорено в стандартах W3C http://www.w3schools.com/tags/tag_font_style.asp.

   
 
 автор: Drago   (06.05.2007 в 21:06)   письмо автору
 
   для: ilyaILF   (06.05.2007 в 20:49)
 

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

Вот я и хочу узнать, как еще, кроме как помещения в таблицу, можно ограничить отрытый тег (к примеру <b>), чтобы он не "портил" другие елементы страницы?

   
 
 автор: ilyaILF   (06.05.2007 в 21:34)   письмо автору
 
   для: Drago   (06.05.2007 в 21:06)
 

div
     {font-weight: normal;}

   
 
 автор: Drago   (06.05.2007 в 21:56)   письмо автору
 
   для: ilyaILF   (06.05.2007 в 21:34)
 

Не совсем то. Если по аналогии делать для тегов <i> и <u>, т.е.

div 
     {
     font-weight: normal;
     font-style: normal;
     text-decoration: none;
     }

То курсив не будет работать, а вот подчеркивание по прежнему "залазит" в другой див.

   
 
 автор: sim5   (06.05.2007 в 22:25)   письмо автору
 
   для: Drago   (06.05.2007 в 21:56)
 

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

Интересная задумка, а чего вы тогда хотите? Когда-то посмеялся про свобоный стиль, а он оказывается существует!

   
 
 автор: Drago   (06.05.2007 в 23:33)   письмо автору
 
   для: sim5   (06.05.2007 в 22:25)
 

На счет свободного стиля, ничего сказать не могу.

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

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

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

Вот и все. Спасибо всем, кто пытался помочь. :)

   
 
 автор: CNT   (06.05.2007 в 22:32)   письмо автору
 
   для: Drago   (06.05.2007 в 20:20)
 

Можно не фильтровать, а просто проставить после (или прямо перед) каждого </DIV> набор закрывающих тегов </b></i></u></s>... (ну и все прочие, которые клиент может открыть в ДИВ'е и забыть закрыть). Неоткрытые браузером проигнорируются; те, что забыли закрыть - закроются.

   
 
 автор: Drago   (06.05.2007 в 23:21)   письмо автору
 
   для: CNT   (06.05.2007 в 22:32)
 

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

   
 
 автор: CNT   (07.05.2007 в 02:42)   письмо автору
 
   для: Drago   (06.05.2007 в 23:21)
 

Тогда делайте радикально: включайте свой DIV внутрь ячейки таблицы - конец таблицы автоматически закрывает все незакрытые теги.
<table width="100%" cellpadding="0" cellspacing="0"><tr><td><div>
normal
<b>bold
<b>bold2
<u>bold_underline
<u>bold_underline2
<i>bold_underline_italic
<i>bold_underline_italic2
<big>bold_underline_italic_big
<big>bold_underline_italic_big2
<code>bold_underline_italic_big_code
<code>bold_underline_italic_big_code2
<samp>bold_underline_italic_big_code_samp
<samp>bold_underline_italic_big_code_samp2
<small>bold_underline_italic_big_code_samp_small
<small>bold_underline_italic_big_code_samp_small2
<sub>bold_underline_italic_big_code_samp_small_sub
<sub>bold_underline_italic_big_code_samp_small_sub2
<sup>bold_underline_italic_big_code_samp_small_sup
<sup>bold_underline_italic_big_code_samp_small_sup2
<tt>bold_underline_italic_big_code_samp_small_sup_monospace
<tt>bold_underline_italic_big_code_samp_small_sup_monospace2
+ аналогично <s>, <strike>, <var>, <kbd>, <ins>, <strong>, <pre>...
</div></td></tr></table>

<table width="100%" cellpadding="0" cellspacing="0"><tr><td><div>
normal
</div></td></tr></table>


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

   
 
 автор: Drago   (07.05.2007 в 07:18)   письмо автору
 
   для: CNT   (07.05.2007 в 02:42)
 

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

>наличие любого количества таблиц с единственной ячейкой и заданной шириной никак не будет тормозить рендеринг страницы.

А если таблица будет одна, а в ней любое количество строк\ячеек, это будет тормозить рендеринг страницы?

   
 
 автор: CNT   (07.05.2007 в 08:29)   письмо автору
 
   для: Drago   (07.05.2007 в 07:18)
 

Разумеется.

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

И, кстати, в локале это можно легко проверить.
Делаете таблицу из 1000 строк по одной ячейке, с одинаковым содержанием ячеек.
И делаете второй вариант - тысячу таблиц с той же одной ячейкой каждая.

В хедере запускаете таймер и по onload тела документа определяете время, необходимое на загрузку и формирование DOM-модели страницы и выводите его алертом.
Второй вариант (1000 таблиц по 1 ячейке каждая) по объёму кода будет значительно больше, чем первый (1 таблица с тысячью ячеек), однако таймер во втором случае покажет меньшее время.

   
 
 автор: Drago   (07.05.2007 в 17:45)   письмо автору
 
   для: CNT   (07.05.2007 в 08:29)
 

Благодарю за развернутый ответ. Теперь, все понятно.

Беседа ушла немного в сторону от заголовка темы, тем не мение, хочу спросить еще вот что:
Поскольку, создание большого количества таблиц, ведет к увеличение кода, а весь этот процесс происходит при помощи js, то есть в браузере пользователя, будет ли большой объем информации влиять на производительность компьютера? Особенно на слабых машинах?

Сам, конечно, полагаю, что будет. А вот, на сколько сильно? И будет ли решением проблемы, скрывать таблицы при помощи display = 'none'? Или нужно будет применять другие подходы?

   
 
 автор: bronenos   (07.05.2007 в 18:01)   письмо автору
 
   для: Drago   (07.05.2007 в 17:45)
 

Не думаю, что компы настолько слабые..

   
 
 автор: mesos   (07.05.2007 в 22:40)   письмо автору
 
   для: Drago   (07.05.2007 в 17:45)
 

Смотря сколько получится таблиц.
Могу привести несколько отвлеченный пример:
генерация на JS ~ 65000 div`ов + задание им атрибутов и обработчиков onmouseover/onmouseout/onclick (таблица цветов) -
на машине Celeron 2.66 GHz, 256Mb RAM занимает около полутора минут
на машине P4 3.0 GHz, 512Mb RAM - около 30 сек
тестировалось в Firefox 2.0, Opera 9.20

Сокрытие таблиц скорее всего не поможет, т.к. ресурсы все-равно будут расходоваться на создание DOM-узлов.

   
 
 автор: Drago   (07.05.2007 в 23:14)   письмо автору
 
   для: mesos   (07.05.2007 в 22:40)
 

65000 для меня уже перебор. Хотя... Чем черт не шутит? (с)
Спасибо за приведенную статистику.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования