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
Форумы портала PHP.SU :: Версия для печати :: Аккуратный pop-up
Форумы портала PHP.SU » Клиентская разработка » HTML, Дизайн & CSS » Аккуратный pop-up

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

1. IllusionMH - 15 Мая, 2011 - 21:25:26 - перейти к сообщению
Все началось с обсуждения треугольников средствами 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'а относительно элемента и соответственно положением уголка:

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

Буду рад вашим комментариям и разумной критике
2. Саныч - 15 Мая, 2011 - 23:01:22 - перейти к сообщению
А комментарий тут один, он даже больше касается браузеров, чем вашего кода... В мозиле и хроме "граница" скоса получается толще остальных... немножко кривовато смотрится... Самый идеальный вариант в опере, осел также все ок прорисовал, но из-за отсутствия скругленых углов также смотрится немного не так как хотелось бы)
3. IllusionMH - 15 Мая, 2011 - 23:22:37 - перейти к сообщению
Саныч, про скос я знаю.
Вероятно, в отношении 3px(в горизонтальном срезе) на скосе и 2px на вертикальной стороне - будет смотреться нормально, но вот для попап'а будет жирно.

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

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

Ubuntu/9.10 (karmic) Firefox/3.5.3
(Добавление)
Текст вылезает вниз...
5. Мелкий - 15 Мая, 2011 - 23:31:33 - перейти к сообщению
Opera 11.10, Debian 6.0.1 (squeeze), поведение аналогично приведённому DeepVarvar
6. Саныч - 15 Мая, 2011 - 23:41:19 - перейти к сообщению
IllusionMH пишет:
А какой у вас ИЕ? У мну 9 все норм отрисовал.
Получается, что самый кроссбраузерный вариант - png или убрать рамку

у меня 8 осел, девятку еще слишком мало людей использует...
По поводу рамки - в самую точку... я у себя на сайте так и сделал, убрал рамку и поставил тень для блока со смещением 0, т.е. получилось свечение такое, смотрится супер... хотел еще как-то сделать свечение и для уголка, но передумал... так он выделяется)
7. IllusionMH - 15 Мая, 2011 - 23:54:58 - перейти к сообщению
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. Правда в тот момент я еще не занимался вэбом.

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

Закругленные углы во всех браузерах можно сделать кучей дивов различной ширины, но это тут же убьет всю идею простого попапа на одном диве
8. Саныч - 16 Мая, 2011 - 08:01:48 - перейти к сообщению
IllusionMH пишет:
Закругленные углы во всех браузерах можно сделать кучей дивов различной ширины

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

 

Powered by ExBB FM 1.0 RC1