#internet-explorer #css
#internet-explorer #css
Вопрос:
Я использую cakephp и хочу сделать css border-radius
это для закругленных углов в определенных разделах. Он хорошо работает для всех других браузеров, кроме IE. Сейчас я ссылаюсь на ссылку http://www.htmlremix.com/css/curved-corner-border-radius-cross-browser для поддержки закругленных углов в IE. Но проблема в том , как и где именно разместить border-radius.htc
. Страницы загружаются с сервера динамически и из разных папок. Итак, как я смогу определить относительный путь, указанный в данной ссылке.
Комментарии:
1. Просто предложение: не используйте
border-radius.htc
в вопросе. Существует гораздо лучшая альтернатива под названием CSS3Pie . Он работает точно так же, так что у вас будет тот же вопрос, но это гораздо лучший сценарий; больше возможностей и больше поддержки.2. хорошо, я проверю это также
Ответ №1:
Как я уже говорил в своем комментарии, я рекомендую использовать CSS3Pie вместо border-radius.htc.
Но они оба работают одинаково, поэтому к ним обоим относится один и тот же вопрос.
Ответ заключается в использовании абсолютного URL-адреса для файла .htc, а не относительного.
Таким образом, если вы знаете, где находится ваш файл htc, вы всегда можете ссылаться на него по тому же пути, и он всегда будет работать.
Использование относительных URL-адресов с файлами htc, похоже, приводит к путанице (сейчас есть еще один вопрос по той же теме), но переключитесь на абсолютный путь, и он должен просто работать.
Поэтому вместо того, чтобы использовать
behavior:url(../../css/pie.htc);
… просто используйте
behavior:url(/css/pie.htc);
[ПРАВИТЬ]
Если это не сработает, есть еще ряд других причин, которые могут привести к тому, что файл HTC не будет работать.
Наиболее распространенной проблемой является проблема с типом контента. IE очень привередлив с этим: файл HTC должен быть подан как text/x-component
. Если это не так, IE загрузит его, но затем полностью проигнорирует.
Если это так, вы можете исправить это, добавив тип содержимого в конфигурацию вашего сервера. На веб-сайте CSS3Pie есть инструкции о том, как это сделать. (а также смотрите на той же странице другие известные проблемы с CSS3Pie, большинство из которых также относятся к border-radius.htc
)
Комментарии:
1. Этот метод я пробовал для border-radius и в файле css, когда я определяю его внутри класса, я не вижу никакого результата в IE. Какую ошибку я совершаю?
2. @user850234 — добавлено другое возможное решение. надеюсь, это поможет.
Ответ №2:
В моем случае я использовал pie, и мне было чертовски сложно заставить его работать.
Во-первых: если у вас есть доступ к вашему файлу .htaccess, добавьте это внизу.
AddType text/x-component .htc
Затем возьмите ваш файл .htc (или, в моем случае, несколько файлов pie)
Затем при обращении к моему файлу .htc:
behavior: url(/PIE.htc);
если вы не можете добавить в .htaccess, используйте pie.php файл, который поставляется с cssPie, и ссылайтесь на него вместо этого.
behavior: url(/PIE.php);
Также убедитесь, что ваш элемент является относительным, с каким-то набором z-индексов:
z-index:1;
position:relative;
Это не работало в ie8, пока у меня не было этого набора.
Надеюсь, это поможет!!
Ответ №3:
Я также использую CSS3Pie с CakePHP — я просто помещаю PIE.htc и PIE.php в app/ webroot/ css и в моем файле style.css ссылаются на него следующим образом:
border-radius: 8px;
-moz-border-radius: 8px;
behavior: url(/css/PIE.php);
Комментарии:
1. Проблема, с которой я сталкиваюсь, заключается в том, что появляется ссылка, подобная /auctions/ closed . В этот момент URL-адрес CSS3Pie, похоже, пропускает путь. В противном случае я получаю результат.
2. Хм .. попробуйте использовать mod_rewrite RewriteLog (при условии, что вы используете Apache), чтобы отследить, где и почему запрос искажается.