Как включить border-radius.htc в архитектуре MVC, чтобы заставить border-radius работать в IE

#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), чтобы отследить, где и почему запрос искажается.