Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Размещение контента на HTML-странице поверх Flash

18.11.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
На разных сайтах в Интернете я часто сталкиваюсь с тем, что на них расположены Flash-объекты, например, видеоплееры с YouTube или фрагменты оформления дизайна на Flash. И при этом различные элементы - плавающие или с абсолютным позиционированием, например, раскрывающиеся меню или всплывающие подсказки, перекрываются областью, занимаемой Flash-объектами. Причем использование атрибута стиля z-index ситуацию не спасает, и в итоге все смотрится очень некрасиво. А ведь решение проблемы очень простое: достаточно в описании Flash-объекта указать параметр wmode со значением opaque:
  1. <param name="wmode" value="opaque">
Получится что-то вроде такого:
  1. <div style="position:relative;">
  2.     <div style="position:absolute;">HelloWorld!</div
  3.  
  4.     <object type="application/x-shockwave-flash" data="flash.swf">
  5.         <param name="menu" value="false" />
  6.         <param name="quality" value="high" />
  7.         <param name="wmode" value="opaque">
  8.         <param name="movie" value="flash.swf" />
  9.     </object>     
  10. </div>
В приведенном примере плавающий элемент div с текстом "Hello, World!", позиционированный относительно общего контейнера, будет расположен поверх Flash-ролика. Этот способ валидный и кроссбраузерный, а расположение Flash-объекта на странице теперь можно регулировать с помощью атрибута z-index. Готовый пример можно посмотреть на сайте.

Просмотров: 9794 | Комментариев: 12

Как отправить из формы HTML только часть данных

04.11.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
Формы - один из основных способов взаимодействия сайта и пользователя, без которых невозможно представить ни один современный сайт. Методы работы с формами стандартные, никаких сложностей в реализации вызывать не должны. В некоторых случаях требуется отправить только часть полей из большой формы. Типичный пример - настройки форума, когда можно сохранить какую-то одну из всех открытых категорий, а можно сохранить все сразу. Один из вариантов решения заключается в том, что можно каким-нибудь образом, например, уникальным индексом, пометить кнопку сабмита нужной группы.
  1. <form action="process.php" method="post">
  2.  
  3. <input type="text" name="text1" value="text1">
  4. <input type="checkbox" name="box1" value="box1">
  5. <input type="submit" name="submit1" value="Отправить 1 блок">
  6.  
  7. <input type="text" name="text2" value="text2">
  8. <input type="checkbox" name="box2" value="box2">
  9. <input type="submit" name="submit2" value="Отправить 2 блок">
  10.  
  11. <input type="submit" name="all" value="Отправить все">
  12. </form>
В этом случае обработка и сортировка поступившей информации ложится целиком на сторону сервера. Сперва определяется, какой из сабмитов был нажат, затем на основании этой информации из всех данных выбираются нужные. Метод надежный, работает во всех случаях, даже если у пользователя в браузере отключены скрипты. Недостаток способа в том, что передаются все поля из формы, а не только нужные. Вложенные формы стандартом HTML не допускаются и, соответственно, корректно не обрабатываются.

Второй способ, с использованием JavaScript, заключается в том, что из формы берутся нужные поля, затем динамически формируется новая форма, и на сервер отправляется уже она. Для этого придется сделать несколько вспомогательных действий. Первая - изменится разметка страницы.
  1. <div id="wrapper0">
  2.   <div id="wrapper1">
  3.   Текст 1: <input type="text" name="text1">
  4.   <input type="checkbox" name="chk1" value="1">
  5.   <input type="button" value="Сохранить" onclick="ds('wrapper1');">
  6.   </div>
  7.  
  8.   <div id="wrapper2">
  9.   Текст 2: <input type="text" name="text2">
  10.   <input type="checkbox" name="chk2" value="2">
  11.   <input type="button" value="Сохранить" onclick="ds('wrapper2');">
  12.   </div>
  13.  
  14.   <div id="wrapper3">
  15.   Текст 3: <input type="text" name="text3">
  16.   <input type="checkbox" name="chk3" value="3">
  17.   <input type="button" value="Сохранить" onclick="ds('wrapper3');">
  18.   </div>
  19.  
  20.   <div>Глобально: <input type="text" name="global">
  21.     <select name="sel">
  22.     <option value="1">1</option>
  23.     <option value="2">2</option>
  24.     <option value="3">3</option>
  25.     <option value="4">4</option>
  26.     </select>
  27.   </div>
  28.  
  29.   <input type="button" value="Сохранить все" onclick="ds('wrapper0');">
  30. </div>
Обратите внимание, что вместо тега form используются блоки div. Это позволяет создать на странице что-то вроде вложенных форм. Я сразу добавил в код обработчики сабмитов, функции будут описаны ниже.

Читать статью целиком »
Просмотров: 11484 | Комментариев: 4

Использование HTML-комментариев для хранения данных

16.10.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
Как-то меня посетила мысль проверить, как определяются HTML-комментарии в DOM-структуре документа, и как можно получить доступ к их содержимому. Ведь по сути они являются полноправными составляющими документа. Напрямую, через ID, имя и другими подобными способами, естественно, сделать это не получится, т.к. тег комментария не имеет ничего подобного. Но сделать это все-таки удалось, привязавшись к соседнему тегу одного уровня с нужным комментарием. После этого элемент комментария со всеми потрохами можно получить через функцию JavaScript nextSibling или previousSibling, в зависимости от вашей ситуации. Это можно посмотреть, например, вот на таком фрагменте кода:
  1. <div>
  2. <!--first comment--><div id="main_div">Main DIV</div><!--second comment-->
  3. </div>
  4.  
  5. <script type="text/javascript">
  6. // Получить опорный элемент
  7. var el=document.getElementById('main_div');
  8. // Сообщение "first comment"
  9. alert(el.previousSibling.nodeValue);
  10. // Сообщение "second comment"
  11. alert(el.nextSibling.nodeValue);
  12. </script>
Можно, конечно, перебрать все дочерние элементы документа, начиная от корневого, но описанным выше способом удобнее выбрать именно нужный комментарий. Способ с перебором элементов тоже приведу:
  1. <div id="overall">
  2.   <a href="#">link</a>
  3.   <!--first comment-->
  4.   <div id="inner_div">
  5.      inner div
  6.      <!--second comment-->
  7.   </div>
  8.   plain text
  9. </div>
  10.  
  11. <script type="text/javascript">
  12. var el=document.getElementById('overall');
  13. for (var 0el.childNodes.lengthi++) {
  14.   if (el.childNodes[i]=='[object Comment]' ||
  15.       el.childNodes[i]=='[object HTMLCommentElement]') {
  16.     alert(el.childNodes[i].nodeValue);
  17.   }
  18. }
  19. </script>
Последовательно перебираются все дочерние элементы, если текущий объект имеет тип [object Comment] или [object HTMLCommentElement] (в случае Internet Explorer), то значит найден комментарий. Несмотря на некоторые неудобства, способ с обходом дерева DOM тоже можно использовать, когда привязка к строго определенным элементам не требуется, а надо просто получить содержимое комментариев.

Читать статью целиком »
Просмотров: 5264 | Комментариев: 17

Стилизация checkbox с использованием CSS и JavaScript

11.08.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
В некоторых случаях при верстке макетов сайтов возникает необходимость нестандартной стилизации различных полей ввода HTML-форм. Например, дизайнер в фотошопе слепил красивый шаблон с вычурными графическими элементами, макет утвержден и заказчик слышать ничего не хочет про "стандартные элементы управления". Оформить поля ввода и всякие кнопочки еще не проблема, а вот с элементом checkbox уже сложнее. Мало того, что каждый браузер его отрисовывает по-своему, так еще визуально у него поменять ничего нельзя. Для решения проблемы можно воспользоваться следующим хитрым трюком: checkbox помещается внутрь контейнера, например div, после этого сам checkbox визуально скрывается путем установки ему 100% прозрачности, а у контейнера меняется стиль в зависимости от состояния "галочки" в checkbox.
  1. <style type="text/css">
  2. /* Стиль для обертки отмеченного checkbox'а */
  3. div.boxChecked {
  4.     backgroundurl("checkbox.gif"no-repeat 0 3px;
  5. }
  6. /* Стиль для обертки неотмеченного checkbox'а */
  7. div.boxUnchecked {
  8.     backgroundurl("checkbox.gif"no-repeat 0 -18px;
  9. }
  10. /* Прозрачный стиль для checkbox'а */
  11. div.boxChecked inputdiv.boxUnchecked input {
  12.     cursorpointer;
  13.     margin0px;
  14.     padding0px;
  15.     width16px;
  16.     opacity0;
  17.     -moz-opacity0;
  18.     -khtml-opacity0;
  19.     filterprogid:DXImageTransform.Microsoft.Alpha(opacity=0);
  20. }
  21. </style>
Для фона отмеченного и неотмеченного checkbox'а используется одно и то же цельное изображение, только оно сдвинуто по вертикали для различных положений. Это позволяет менять фон без дополнительной загрузки новых изображений и связанного с этим неприятного моргания. Кроссбраузерный стиль checkbox'а устанавливает для него полную прозрачность. К сожалению, специфические определения стиля типа -moz-opacity, -khtml-opacity и filter не соответствуют спецификации CSS, поэтому, если вы хотите добиться полного прохождения валидатора, то придется извернуться с JavaScript.

Читать статью целиком »
Просмотров: 20742 | Комментариев: 14

Поле ввода с убирающейся подсказкой

20.04.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
Трудно представить современный сайт без интерактивности. И она состоит из множества мелких деталей, которые стали уже чуть ли не стандартом в web-строительстве. Одна из таких "фишек" - текстовое поле ввода, в котором по умолчанию прописана подсказка об ожидаемом содержимом, например, "введите текст для поиска". При клике на это поле текст подсказки убирается, а при уходе с него, если пользователь ничего не ввел, текст подсказки возвращается обратно. Такой способ экономит полезное место в дизайне, не загромождая его выносными подсказками, а также помогает пользователю лучше ориентироваться при заполнении различных форм. Классический вариант, который обычно используется на сайтах, выглядит примерно так:
  1. <label for="search">Поиск по сайту:</label>
  2. <input type="text" name="search" id="search" value="что ищем?"
  3.        onfocus="if(this.value==this.defaultValue){this.value='';}"
  4.        onblur="if(this.value==''){this.value=this.defaultValue;}">
Могут быть некоторые варианты в реализации, но основной принцип остается этот же. Алгоритм простейший: при получении фокуса полем ввода проверяется его содержимое. Если оно совпадает со значением, установленным в параметре value, то содержимое подменяется на пустую строку. При потере фокуса также выполняется обратная проверка, и если поле осталось пустым, то в него подставляется значение по умолчанию. Плюсы этого способа: минимальный код, работает с отключенными стилями, хорошая совместимость с различными браузерами. Но минусы тоже значительные: при отключенных скриптах поле ввода придется сперва вручную очистить, а затем уже вписать в него нужное значение, для смены оформления подсказки придется писать дополнительный код, при отправке формы без дополнительных проверок будет передано значение по умолчанию и в любом случае потребуется дополнительная обработка введенных данных на стороне сервера, особые поля типа пароля будут отображать звездочки вместо текста подсказки.

Читать статью целиком »
Просмотров: 18774 | Комментариев: 19

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 4 (0.0034 сек.) / Память: 4.5 Mb
Наверх