За последние 24 часа нас посетили 17948 программистов и 1650 роботов. Сейчас ищут 1748 программистов ...

Css и относительный путь к изображению

Тема в разделе "PHP для новичков", создана пользователем megapiz, 24 июл 2013.

  1. megapiz

    megapiz Активный пользователь

    С нами с:
    29 авг 2009
    Сообщения:
    11
    Симпатии:
    0
    При загрузке изображений в свои папки на локальную машину - некоторые изображения не отображаются согласно путям указаным в css

    например:

    /images/menu/menu_06.bmp <-- image place -- css place ---> /css/main.css - браузер не отображает, но стоит изменить на ../images/menu/menu_06.bmp - все нормально

    как бы это автоматизировать - точнее получить правильный относительный путь в зависимости от размещения CSS файла.

    p/s находить картинки и менять их путь в css файлах умею.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты уверен, что есть первый слеш?
     
  3. megapiz

    megapiz Активный пользователь

    С нами с:
    29 авг 2009
    Сообщения:
    11
    Симпатии:
    0
    Да, в тестируемом 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
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.797
    Симпатии:
    1.331
    Адрес:
    Лень
    ./
    тоже никак?

    Добавлено спустя 4 минуты 4 секунды:
    ибо:
    <base href="http://site.ru/">
     
  5. megapiz

    megapiz Активный пользователь

    С нами с:
    29 авг 2009
    Сообщения:
    11
    Симпатии:
    0
    вообще насколько знаю - относительный путь не может начинатся с /

    и здесь некоторые пути кривые - но программа вроде офлайн эксплорер великолепно модифицирует css файл исправляя пути на правильные в этом цсс и страница видна со всеми картинками даже если её запустить через file:///D:/Portable Offline Browser/Download/test.ru/default.htm

    я пробовал много функций вроде этой - но результат плачевный
    Код (Text):
    1. /**
    2.  * Return the relative path between two paths / Retourne le chemin relatif entre 2 chemins
    3.  *
    4.  * If $path2 is empty, get the current directory (getcwd).
    5.  * @return string
    6.  */
    7. function relativePath($path1, $path2='') {
    8. if ($path2 == '') {
    9.     $path2 = $path1;
    10.     $path1 = getcwd();
    11. }
    12.  
    13. //Remove starting, ending, and double / in paths
    14. $path1 = trim($path1,'/');
    15. $path2 = trim($path2,'/');
    16. while (substr_count($path1, '//')) $path1 = str_replace('//', '/', $path1);
    17. while (substr_count($path2, '//')) $path2 = str_replace('//', '/', $path2);
    18.  
    19. //create arrays
    20. $arr1 = explode('/', $path1);
    21. if ($arr1 == array('')) $arr1 = array();
    22. $arr2 = explode('/', $path2);
    23. if ($arr2 == array('')) $arr2 = array();
    24. $size1 = count($arr1);
    25. $size2 = count($arr2);
    26.  
    27. //now the hard part :-p
    28. $path='';
    29. for($i=0; $i<min($size1,$size2); $i++)
    30. {
    31.     if ($arr1[$i] == $arr2[$i]) continue;
    32.     else $path = '../'.$path.$arr2[$i].'/';
    33. }
    34. if ($size1 > $size2)
    35.     for ($i = $size2; $i < $size1; $i++)
    36.         $path = '../'.$path;
    37. else if ($size2 > $size1)
    38.     for ($i = $size1; $i < $size2; $i++)
    39.         $path .= $arr2[$i].'/';
    40.  
    41. return $path;
    42. }
    43.  
    44.  
    45. echo relativePath("/css/", "/images/menu/") . "<br />";
    46. echo relativePath("/css/", "../images/") . "<br />";
     
  6. Зверь

    Зверь Активный пользователь

    С нами с:
    2 ноя 2010
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Екатеринбург
    А ты попробуй отследить пути с помощью firebug-a в firefox-е или других подобных инструментов для отладки, там во вкладке net и запросы можно посмотреть к картинкам и так просто посмотреть какие-же пути у картинок и затем открыть попробовать их на прямую, например у тебя есть не отображающаяся картинка /images/menu/menu_06.bmp и доменное имя site.ru, ты просто набери в браузере http://site.ru/images/menu/menu_06.bmp и посмотри что загрузиться по данному адресу. Может в именах папок опечатка не images, а image или еще какая-нибудь фигня. Ну в отношении расположения, папка images должна быть в root dir.
     
  7. megapiz

    megapiz Активный пользователь

    С нами с:
    29 авг 2009
    Сообщения:
    11
    Симпатии:
    0
    так я так и делаю - но дело именно в пути
     
  8. megapiz

    megapiz Активный пользователь

    С нами с:
    29 авг 2009
    Сообщения:
    11
    Симпатии:
    0
    Вобщем сделал так - все картинки указаные в конкретном css находятся в его же папке, пути им естественно сменил - оставив только имена.