При загрузке изображений в свои папки на локальную машину - некоторые изображения не отображаются согласно путям указаным в css например: /images/menu/menu_06.bmp <-- image place -- css place ---> /css/main.css - браузер не отображает, но стоит изменить на ../images/menu/menu_06.bmp - все нормально как бы это автоматизировать - точнее получить правильный относительный путь в зависимости от размещения CSS файла. p/s находить картинки и менять их путь в css файлах умею.
Да, в тестируемом css такие пути и браузер показывет все картинки - но при сохранении те что с / не отображаются (картинки по папкам лежат правильно) /css/main.css /images/menu/menu_06.bmp /images/menu/menu_act_06.bmp /images/menu/menu_09.bmp /images/menu/menu_act_09.bmp ../images/logo.jpg ../images/back.jpg ../images/roz11_03_top.bmp ../images/roz11_03_bottom.gif ../images/back.jpg
вообще насколько знаю - относительный путь не может начинатся с / и здесь некоторые пути кривые - но программа вроде офлайн эксплорер великолепно модифицирует css файл исправляя пути на правильные в этом цсс и страница видна со всеми картинками даже если её запустить через file:///D:/Portable Offline Browser/Download/test.ru/default.htm я пробовал много функций вроде этой - но результат плачевный Код (Text): /** * Return the relative path between two paths / Retourne le chemin relatif entre 2 chemins * * If $path2 is empty, get the current directory (getcwd). * @return string */ function relativePath($path1, $path2='') { if ($path2 == '') { $path2 = $path1; $path1 = getcwd(); } //Remove starting, ending, and double / in paths $path1 = trim($path1,'/'); $path2 = trim($path2,'/'); while (substr_count($path1, '//')) $path1 = str_replace('//', '/', $path1); while (substr_count($path2, '//')) $path2 = str_replace('//', '/', $path2); //create arrays $arr1 = explode('/', $path1); if ($arr1 == array('')) $arr1 = array(); $arr2 = explode('/', $path2); if ($arr2 == array('')) $arr2 = array(); $size1 = count($arr1); $size2 = count($arr2); //now the hard part :-p $path=''; for($i=0; $i<min($size1,$size2); $i++) { if ($arr1[$i] == $arr2[$i]) continue; else $path = '../'.$path.$arr2[$i].'/'; } if ($size1 > $size2) for ($i = $size2; $i < $size1; $i++) $path = '../'.$path; else if ($size2 > $size1) for ($i = $size1; $i < $size2; $i++) $path .= $arr2[$i].'/'; return $path; } echo relativePath("/css/", "/images/menu/") . "<br />"; echo relativePath("/css/", "../images/") . "<br />";
А ты попробуй отследить пути с помощью firebug-a в firefox-е или других подобных инструментов для отладки, там во вкладке net и запросы можно посмотреть к картинкам и так просто посмотреть какие-же пути у картинок и затем открыть попробовать их на прямую, например у тебя есть не отображающаяся картинка /images/menu/menu_06.bmp и доменное имя site.ru, ты просто набери в браузере http://site.ru/images/menu/menu_06.bmp и посмотри что загрузиться по данному адресу. Может в именах папок опечатка не images, а image или еще какая-нибудь фигня. Ну в отношении расположения, папка images должна быть в root dir.
Вобщем сделал так - все картинки указаные в конкретном css находятся в его же папке, пути им естественно сменил - оставив только имена.