Разделы
Теги | RSS © 2008 – 2017
Контакты
email: igor@veselov.sumy.ua
skype: utz0r2

Горизонтальная навигация ul по центру


Задача простая, только на первый взгляд. text-align не помогает, margin:auto работает только при фиксированной ширине. И вот она разгадка:
<div id="mainmenu">
   <ul>
    <li><a href="#" title="">Новости</a></li>
    <li><a href="#" title="">Блог</a></li>
    <li><a href="#" title="">Форум</a></li>
    <li><a href="#" title="">Интересные факты</a></li>
    <li><a href="#" title="">Тесты</a></li>
    <li><a href="#" title="">Скачать</a></li>
    <li><a href="#" title="">Контакты</a></li>
   </ul>
</div>

div#mainmenu, div#mainmenu ul { position:relative; }
div#mainmenu  { float:right; right:50%; margin:38px 0px; width:auto;  }
div#mainmenu ul { float:none!important; float:left; right:-50%; }


Пару слов о том как это работает:
- сначала мы прибиваем все к правой границе браузера и блок (#mainmenu) гарантированно имеет ширину равную всей области экрана. Затем мы сдвигаем его на 50% влево (right:50%;), после правая граница оказывается ровно посреди экрана.
- затем вложенный блок (сам список) принудительно уводится в левую область родительского блока (#mainmenu). Так как все слои имеют номинальную ширину в 100% то на данный момент ширина у списка (ul) получается равной 150%, а его сдвиг вправо приводит к получению его 100%ой ширины. Таким образом он оказывается всегда по центру относительно своего родительского элемента.

ИЕ шизоид или суицид IE


Все верстальщики знают не по наслышке о ИЕ. Некоторые мужественно сражаются, возвращая на место непонятно куда свалившиеся div'ы, поехавшие margin'ы и уплывшие padding'и, попутно сражаясь с PNGA и укрощая вложенные CSS-классы. Другие (более хитрые/ленивые/принципиальные) просто кладут на верстку под IE6 болт, в надежде заставить пользователя обновить браузер/почувствовать себя лохом/покинуть сайт.

Огромное количество сйтов официально отказалось от поддержки ИЕ. Да если мне не изменяет память, то и сам Майкрософт настоятельно «требует» от всех упдаторов виндовса обновить ИЕ на более новый.

И тем не мене «необразованные» пользователи интернета все еще используют ИЕ и плюются на всякие «уродливые и непонятные сайты» которые не работают у них «как надо». И вот для таких пользователей ставятся заглушки. Очень приятные штуки, которые ненавязчиво просят обновить устаревший браузер.
Вот один из сайтиков с которых можно скачать и установить симпатичную заглушку: http://jreject.turnwheel.com/

Критическая уязвимость DLE 8.2


Недостаточная фильтрация входящих данных в модуле восстановления пароля. Очень-очень опасно!

Ошибка в версии: только 8.2, версии ниже 8.2, а также актуальная версия 8.3 данной уязвимости не подвержены

Степень опасности: Очень высокая.

Как это работает:

Вы обращаетесь по адресу site/index.php?do=lostpassword&douser=1&lostid=

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

Поэтому: следите за обновлениями и переименовуйте admin.php. А те подованы которые ломали этот сайт педики!

Скачать патч: Скачать патч

Картинка в стороне от текста без обтекания


К примеру есть на сайте набор вот таких блоков: картинка + заголовок + выдержка.
В коде соответственно имеем:
<div class=”post”>
<img src=”./i/image.jpg” alt=”" />
<h2><a href=”#”>Heading</a></h2>
<p>text tex text text text text</p>
</div>

Cуть проблемы в том что заказчик хочет картинку с одной стороны блока и текст с другой. И это при том что картинка может быть какого угодно размера.

Итак первое и очевидное сделать float:left; картинке, но тогда появится обтекание. Если бы знать размеры картинок - можно бы было задать ширину для выдержки и заголовка. Но в том то и дело что картинки эти могут быть любыми. Казалось бы без таблиц не обойтись, а не тут то было, можно:
div.post p{ 
display: table;
_height: 0;/*это для ИЕ5-6*/
zoom: 1;/*это для ИЕ7*/
}


Эта приблуда должна работать в Opera 7-8, Firefox 1.0, Safari 1.2.4, IE/win

Хак DLE ограничение длины новости


Не сложно догадаться, что я тесно связан с разработкой сайтов на коммерческой CMS - DLE.

И не давно столкнулся с проблемой которую никогда не видел. Оказуется длинна поста в fullstory ограничена в БД полем типа TEXT. Все что больше определенной длины вырезается.

Что бы избежать этой проблемы нужно указать тип LONGTEXT. Всего-то -)

Фап в интерпретатор PHP


Еще регулярные выражения и парочка полезных функций, честно скопипастеный где-то на просторах интернета:

Яндекс тИЦ
function cy($url){ 
preg_match("/value=\"(.\d*)\"/", join("", file('http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://'.$url.'/')), $tic);
return($tic[1]!=""?$tic[1]:0); }


Яндекс число страниц в индексе
function ya_stat($url){
$str=file_get_contents("http://yandex.ru/yandsearch?numdoc=10&serverurl={$url}");
preg_match("\/<title>(.*)нашл(.*)сь(.*)страниц(.*)</title>/s", $str, $find); $res=$find[3];
if(preg_match("/<title>(.*)ничего не найдено(.*)<\/title>/s", $str)) {$res=0;}
$res=str_replace("&nbsp;","",$res);
$res=str_replace("млн","000000",$res);
$res=str_replace("тыс.","000",$res);
return $res;}


Веб прокси
echo file_get_contents($_GET['q']);
$content=file_get_contents("http://урл.сайта/имя.скрипта?=".$url);


LiveInternet статистика
function listat($url){
$content = file_get_contents("http://counter.yadro.ru/values?site=".$url);
preg_match_all("|LI_([^ ]+) = (\d*);|",$content,$ok);
for($i=0; $i<count($ok[1]); $i++) $info[$ok[1][$i]]=$ok[2][$i];
return $info;}

$ff=listat($url);
$w_vis=floor($ff[week_vis]/7);
$w_hit=floor($ff[week_hit]/7);//Средняя посещаемость за последнюю неделю
$li_vis=$ff[day_vis];
$li_hit=$ff[day_hit];//И дневная посещаемость
echo "Week $w_vis / $w_hit, today $li_vis / $li_hit";


Информация для счетчика LiveInternet. Показывается для всех сайтов, которые не закрыли отображение инфы на счетчике (даже если сама статистика закрыта). Удобно как анализировать чужие сайты, так и просматривать суммарную посещаемость своих.
«»
Вверх