Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Аккуратный pop-up

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Создание pop-up только средствами (X)HTML/CSS
IllusionMH
Отправлено: 15 Мая, 2011 - 21:25:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Все началось с обсуждения треугольников средствами HTML/CSS...
...потом треугольники с границей, треугольник от pop-up'а...
А зачем нужен треугольник от pop-up'а без самого pop-up'а? Голливудская улыбка

Вот и родилась мысль: "А не слабо ли мне сделать pop-up аналогичной виндовскому? (закругленные границы и треугольничек снизу)"
"А не слабо!" - ответил я и получит вот такой результат

CODE (html):
скопировать код в буфер обмена
  1. <div id="btn">
  2. Hover on me!
  3.   <div class="popup">
  4.   <h3>Your header here</h3>
  5.     <p>Your text<br />here</p>
  6.   </div>
  7. </div>


Как видно pop-up создается добавлением единственного div'а с кодом содержимого. Если в коде будет только строка текста, то он не сильно мешает основному содержанию и не сильно мешает его редактированию (если код не слишком насыщен pop-up'ами).

Все остальное спрятано в стилях, которые, я надеюсь, вынесены в отдельный файл Улыбка
CODE (CSS):
скопировать код в буфер обмена
  1. /*Created by IllusionMH*/
  2. /*стили документа не вызывающие никакого интереса*/
  3. body {
  4.   background-color: #ffffff;
  5. }
  6. h3 {
  7. margin: 5px 0px;
  8. }
  9. #btn {
  10.   position: absolute;
  11.   left: 200px;
  12.   top: 200px;
  13. }
  14.  
  15. /*основная часть pup-up'а. Надеюсь тут ничего объяснять не нужно*/
  16. .popup {  
  17.   background: #f4f4f4;  
  18.   border: 1px solid #000000;  
  19.   padding: 10px;
  20.   width: 150px;  
  21.   height: 85px;  
  22.   position: absolute;
  23.   border-radius: 10px;
  24.   right: 10px;
  25.   bottom: 32px;
  26. }
  27.  
  28. .popup:before { /*треугольник который создает внешнюю границу*/
  29.   border-bottom: 23px solid transparent;
  30.   border-right: 23px solid #000000;
  31.  
  32.   position: absolute;
  33.   bottom: -23px;
  34.   right: 10px;
  35.  
  36.   content: '';
  37. }
  38. .popup:after { /*треугольник который создает "выпирающую" часть сливающуюся с фоном*/
  39.   border-left: 20px solid transparent;
  40.   border-top: 20px solid #f4f4f4;
  41.  
  42.   position: absolute;
  43.   bottom: -20px;
  44.   right: 11px;
  45.  
  46.   content: '';
  47. }
  48.  
  49. .popup {display: none;} /*прячем все pop-up'ы, т.к. они нам не нужны, пока мы не наведем на соответствующие*/
  50.  
  51. #btn:hover .popup {display: block;} /*отображаем pop-up принадлежащий элементу #btn при наведении на #btn*/
  52.  


Более подробно код разобран тут. Единственная разница заключается в том, что треуголник и его граница создаются не одним элементом(в его псевдоэлементом :before), а двумя псевдоэлементами :before и :after, что позволяет разгрузить разметку тела документа.

Существовать 4 вида такого pop-up'а, различающихся положением pop-up'а относительно элемента и соответственно положением уголка:

  • Левый нижний угол
  • Правый нижний угол (рассмотрен в данном посте)
  • Левый верхний угол
  • Правый верхний угол

Задача сделать их по аналогии, с имеющимся примером и подсказками в теме про треугольники, вы сможете сами ;)

Буду рад вашим комментариям и разумной критике

(Отредактировано автором: 15 Мая, 2011 - 21:59:30)

 
 Top
Саныч
Отправлено: 15 Мая, 2011 - 23:01:22
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




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


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
IllusionMH
Отправлено: 15 Мая, 2011 - 23:22:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Саныч, про скос я знаю.
Вероятно, в отношении 3px(в горизонтальном срезе) на скосе и 2px на вертикальной стороне - будет смотреться нормально, но вот для попап'а будет жирно.

А какой у вас ИЕ? У мну 9 все норм отрисовал.

Получается, что самый кроссбраузерный вариант - png или убрать рамку Недовольство, огорчение
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Мая, 2011 - 23:26:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)





Ubuntu/9.10 (karmic) Firefox/3.5.3
(Добавление)
Текст вылезает вниз...

(Отредактировано автором: 15 Мая, 2011 - 23:27:03)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Мая, 2011 - 23:31:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Opera 11.10, Debian 6.0.1 (squeeze), поведение аналогично приведённому DeepVarvar


-----
PostgreSQL DBA
 
 Top
Саныч
Отправлено: 15 Мая, 2011 - 23:41:19
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




IllusionMH пишет:
А какой у вас ИЕ? У мну 9 все норм отрисовал.
Получается, что самый кроссбраузерный вариант - png или убрать рамку

у меня 8 осел, девятку еще слишком мало людей использует...
По поводу рамки - в самую точку... я у себя на сайте так и сделал, убрал рамку и поставил тень для блока со смещением 0, т.е. получилось свечение такое, смотрится супер... хотел еще как-то сделать свечение и для уголка, но передумал... так он выделяется)


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
IllusionMH
Отправлено: 15 Мая, 2011 - 23:54:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




DeepVarvar,Мелкий, я такое замечал в ГХ в момент подбора ширины. Видимо у нас с вами различные настройки шрифтов, поэтому у вас происходит перенос заголовка и он смещает текст вниз.

варианты решения - строгое задание шрифтов/размеров текста и стили типа:
CODE (CSS):
скопировать код в буфер обмена
  1. #XXX .popup {
  2.   width: 100px;
  3.   height: 50px;
  4. }
  5. #YYY .popup {
  6.   width: 150px;
  7.   height: 50px;
  8. }

либо в самом документе для каждого конкретного попапа удобный, но не лучший
CODE (html):
скопировать код в буфер обмена
  1. <div class="popup" style="width: XXXpx;">


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

Блин, чет сразу не могу вспомнить, как див растянуть по содержимому, не перенося текст автоматом.
*ушел искать способ растягивать див по содержимому*

Added
Саныч пишет:
у меня 8 осел, девятку еще слишком мало людей использует...

ИЕ8 порадовал только способом группировки дочерних вкладок по цвету, в остальном показался хуже ИЕ7. Правда в тот момент я еще не занимался вэбом.

Поправил шрифты и размеры. Вроде не должно вылазить.
*задумался над установкой ВМ с линём для более тщательного теста*

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

(Отредактировано автором: 16 Мая, 2011 - 00:09:48)

 
 Top
Саныч
Отправлено: 16 Мая, 2011 - 08:01:48
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




IllusionMH пишет:
Закругленные углы во всех браузерах можно сделать кучей дивов различной ширины

оно того не стоит... ради одного только ие так извращатся Хм


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTML, Дизайн & CSS »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB