Проблема IE8 с Twitter Bootstrap 3
Я создаю сайт, используя новый Bootstrap Twitter. Сайт отлично выглядит и работает во всех необходимых браузерах, кроме IE8.
В IE8 он, похоже, отображает элементы мобильной версии, но растягивается по всему экрану моего рабочего стола. Я считаю, что проблема, с которой я столкнулась, заключается в том, что загрузочный лоток Twitter сначала мобилен. Поэтому по какой-то причине IE8 собирается для этого варианта.
Я также замечаю, что класс container
, по-видимому, не тянет в свойствах максимальной ширины CSS, как предполагалось. Может ли кто-нибудь увидеть, что я сделал неправильно?
<!-- Favicon -->
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<!-- Bootstrap -->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/css/bootstrap.css" rel="stylesheet">
<link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css" rel="stylesheet">
<script src="/SiteFiles/js/modernizr.js"></script>
<!-- CSS -->
<link href="/SiteFiles/css/main.css" rel="stylesheet">
<header>
<div class="topArea clearfix">
<div class="container">
<div class="topLinks">
<div class="btn-group">
<span class="flag" data-toggle="dropdown"> </span>
<ul class="dropdown-menu">
<li><a href="#">Country 1</a></li>
<li><a href="#">Country 2</a></li>
<li><a href="#">Country 3</a></li>
<li class="divider"></li>
<li><a href="#">Country 4</a></li>
<li><a href="#">Country 5</a></li>
<li><a href="#">Country 6</a></li>
</ul>
</div>
<div class="visible-sm btn-group">
<div class="plus" data-toggle="dropdown"><i class="icon-plus icon-2x"> </i></div>
<ul class="dropdown-menu">
<li><a href="#">Parts & Service</a></li>
<li><a href="#">Store Locator</a></li>
<li><a href="#">Find a Service Centre</a></li>
<li><a href="#">Parts List</a></li>
<li><a href="#">Tool Vibration</a></li>
<li><a href="#">Resource Centre</a></li>
<li><a href="#">Media Centre</a></li>
<li><a href="#">Register your Tools</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">
<button type="button" class="btn btn-default">Where to Buy</button></a></li>
</ul>
</div>
<div class="topNav">
<ul class="hidden-sm">
<li>
<div class="btn-group">
<a href="#" data-toggle="dropdown">Parts & Service</a>
<ul class="dropdown-menu">
<li><a href="#">Store Locator</a></li>
<li><a href="#">Find a Service Centre</a></li>
<li><a href="#">Parts List</a></li>
<li><a href="#">Tool Vibration</a></li>
</ul>
</div>
</li>
<li><a href="#">Resource Centre</a></li>
<li><a href="#">Media Centre</a></li>
<li><a href="#">Register your Tools</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">
<button type="button" class="btn btn-default">Where to Buy</button></a></li>
</ul>
</div>
<div class="searchArea">
<input type="text" />
<a href="#" class="goBtn">GO</a>
</div>
</div>
</div>
</div>
<div class="mainNavArea">
<div class="container rel">
<div class="logo">
<img src="/SiteFiles/img/logo.png" title="Milwaukee - Nothing but heavy duty" alt="Milwaukee - Nothing but heavy duty" />
</div>
<div class="navi">
<div class="navbar">
<div class="container">
<!-- .navbar-toggle is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- Place everything within .navbar-collapse to hide it until above 768px -->
<div class="nav-collapse collapse navbar-responsive-collapse">
<ul class="nav nav-justified">
<li><span class="dropArrow"> </span><span class="topNavPosition">Power Tools</span>
<div class="navDrop">
<div class="navDropInner">
<div class="row">
<div class="hidden-sm col-sm-4 col-lg-4">
<img src="/SiteFiles/img/drill.jpg" alt="" />
</div>
<div class="col-12 col-sm-8 col-lg-8">
<h2>Power Tools</h2>
<div class="row">
<div class="col-6 col-sm-6 col-lg-6">
<a href="#">Cutters</a>
<a href="#">Levels</a>
<a href="#">Pliers</a>
<a href="#">Saws</a>
<a href="#">Screwdrivers</a>
</div>
<div class="col-6 col-sm-6 col-lg-6">
<a href="#">Snips</a>
<a href="#">Utility Knives</a>
<a href="#">Combo Knives</a>
<a href="#">Hand Tool Accessories</a>
</div>
</div>
</div>
</div>
</div>
<a href="#" class="closeNav">X</a>
</div>
</li>
<li><span class="dropArrow"> </span><span class="topNavPosition">Hand Tools</span>
<div class="navDrop">
<div class="navDropInner">
<div class="row">
<div class="hidden-sm col-sm-4 col-lg-4">
<img src="/SiteFiles/img/drill.jpg" alt="" />
</div>
<div class="col-12 col-sm-8 col-lg-8">
<h2>Hand Tools</h2>
<div class="row">
<div class="col-6 col-sm-6 col-lg-6">
<a href="#">Cutters</a>
<a href="#">Levels</a>
<a href="#">Pliers</a>
<a href="#">Saws</a>
<a href="#">Screwdrivers</a>
</div>
<div class="col-6 col-sm-6 col-lg-6">
<a href="#">Snips</a>
<a href="#">Utility Knives</a>
<a href="#">Combo Knives</a>
<a href="#">Hand Tool Accessories</a>
</div>
</div>
</div>
</div>
</div>
<a href="#" class="closeNav">X</a>
</div>
</li>
<li><span class="dropArrow"> </span><span class="topNavPosition">Test & Measurement</span>
<div class="navDrop">
<div class="navDropInner">
<div class="row">
<div class="hidden-sm col-sm-4 col-lg-4">
<img src="/SiteFiles/img/drill.jpg" alt="" />
</div>
<div class="col-12 col-sm-8 col-lg-8">
<h2>Test & Measurement</h2>
<div class="row">
<div class="col-6 col-sm-6 col-lg-6">
<a href="#">Cutters</a>
<a href="#">Levels</a>
<a href="#">Pliers</a>
<a href="#">Saws</a>
<a href="#">Screwdrivers</a>
</div>
<div class="col-6 col-sm-6 col-lg-6">
<a href="#">Snips</a>
<a href="#">Utility Knives</a>
<a href="#">Combo Knives</a>
<a href="#">Hand Tool Accessories</a>
</div>
</div>
</div>
</div>
</div>
<a href="#" class="closeNav">X</a>
</div>
</li>
<li><span class="dropArrow"> </span><span class="topNavPosition">Accessories</span>
<div class="navDrop">
<div class="navDropInner">
<div class="row">
<div class="hidden-sm col-sm-4 col-lg-4">
<img src="/SiteFiles/img/drill.jpg" alt="" />
</div>
<div class="col-12 col-sm-8 col-lg-8">
<h2>Accessories</h2>
<div class="row">
<div class="col-6 col-sm-6 col-lg-6">
<a href="#">Cutters</a>
<a href="#">Levels</a>
<a href="#">Pliers</a>
<a href="#">Saws</a>
<a href="#">Screwdrivers</a>
</div>
<div class="col-6 col-sm-6 col-lg-6">
<a href="#">Snips</a>
<a href="#">Utility Knives</a>
<a href="#">Combo Knives</a>
<a href="#">Hand Tool Accessories</a>
</div>
</div>
</div>
</div>
</div>
<a href="#" class="closeNav">X</a>
</div>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<!-- /.navbar -->
</div>
</div>
</div>
</header>
Ответы
Ответ 1
Вы получили свой CSS от CDN (bootstrapcdn.com). response.js работает только для локальных файлов. Поэтому попробуйте свой веб-сайт на IE8 с локальной копией bootstrap.css. Или читайте: Настройка CDN/X-домена
Примечание См. также: https://github.com/scottjehl/Respond/pull/206
Update:
Пожалуйста, прочитайте: http://getbootstrap.com/getting-started/#support
Кроме того, Internet Explorer 8 требует использования response.js для поддержки поддержки медиа-запросов.
Смотрите также: https://github.com/scottjehl/Respond
По этой причине основной шаблон содержит эти строки в разделе главы:
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="../../assets/js/html5shiv.js"></script>
<script src="../../assets/js/respond.min.js"></script>
<![endif]-->
Ответ 2
Мне также пришлось установить следующий тег META:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
Ответ 3
У меня возникла такая же проблема при переходе с Bootstrap 2 на 3. У меня уже были answer.js и html5shiv.js, и я поставил свою мета на край. Я пропустил это от 2 до 3, тип элемента навигационной панели изменился. В Bootstrap 2 это был nav. В Bootstrap 3 теперь заголовок. Чтобы полностью решить проблему, я должен был
<meta http-equiv="X-UA-Compatible" content="IE=edge">
Положите это сразу после загрузки моего css:
<!--[if lt IE 9]>
<script src="~/Content/compatibility/html5shiv.js"></script>
<script src="~/Content/compatibility/respond.min.js"></script>
<![endif]-->
а затем измените
<nav class="navbar" role="navigation">
</nav>
к
<header class="navbar" role="navigation">
</header>
О, и для хорошей меры я также добавил
<meta name="viewport" content="width=device-width, initial-scale=1.0">
просто потому, что сам сайт Bootstrap имеет.
Ответ 4
В моем случае ошибка, вызванная бутстрапом, вызвала проблему.
Чтобы сделать bootstrap 3.0.2 отзывчивым в IE8 (эмулированный с помощью инструментов разработчика F12), мне пришлось:
1 - Установите флаг X-UA-Compatible.
<meta http-equiv="X-UA-Compatible" content="IE=edge">
2 - используйте notminified bootstrap.css вместо bootstrap.min.css
<link href="/css/bootstrap.css" rel="stylesheet" />
3 - Добавьте response.js(и html5shiv.js)
<!--[if lt IE 9]>
<script src="/js/html5shiv.min.js"></script>
<script src="/js/respond.min.js"></script>
<![endif]-->
Ответ 5
поместите respond.js
в нижней части страницы, но перед закрытием тега body
и вот ссылка respond.js
и запустите этот код в своем локальном хосте.
https://github.com/scottjehl/Respond
Ответ 6
На всякий случай. Убедитесь, что вы загрузите специфические js файлы IE после загрузки ваших файлов css.
Ответ 7
Не забудьте поместить ваши ссылки css в <head>
, поскольку respond.js
принимает только те.
Ответ 8
Как было сказано ранее, существуют две разные проблемы:
1) IE8 не поддерживает медиа-запросы
2) response.js, используемый в сочетании с междоменными css файлами, должен быть включен, как описано ранее.
Если вы хотите использовать BootstrapCDN здесь рабочий пример:
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<!--[if lt IE 9]>
<link href="//netdna.bootstrapcdn.com/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
<link href="img/ie/respond.proxy.gif" id="respond-redirect" rel="respond-redirect" />
<script src="js/ie/html5shiv.js"></script>
<script src="js/ie/respond.min.js"></script>
<script src="js/ie/respond.proxy.js"></script>
<![endif]-->
Также обязательно скопируйте response.proxy.gif, reply.min.js и response.proxy.js в локальных каталогах
Ответ 9
После проверки:
- DOCTYPE
- X-UA-совместимый метатег
- Включение html5shiv.js и response.js(и загрузка последних версий)
- response.js является локальным
- Хостинг сайта с веб-сервера, а не из файла://
- Не использовать @import
- ...
Все еще col-lg, col-md и col-sm не работали. Наконец, я переместил ссылки на бутстрап, чтобы быть перед ссылками на html5shiv.js и response.js, и все это сработало.
Вот фрагмент:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Bootstrap Test for IE8</title>
<!-- Moved these two lines up -->
<link href="includes/css/bootstrap.css" type="text/css" rel="stylesheet" />
<script src="includes/js/bootstrap.js"></script>
<!--[if lt IE 9]>
<script src="includes/js/html5shiv.js"></script>
<script src="includes/js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4" style="background-color:red;">col-md-4</div>
<div class="col-md-8" style="background-color:green;">col-md-8</div>
</div>
</div>
</body>
</html>
Ответ 10
Необходимо добавить - <meta http-equiv="X-UA-Compatible" content="IE=edge">
Я использовал Bootstrap 3 - работал ли он над IE на моем локальном компьютере.
Я сказал, что он не работает в IE.
Just Bootstrap не включает эту строку кода в свои шаблоны, я не уверен, почему, но это может быть связано с тем, что она не совместима с W3C.
Ответ 11
Из объяснения говорится, что IE8 является стандартной версией для вас, а content="IE=edge"
отобразит страницу в самом высоком режиме. Чтобы сделать его совместимым, измените его на content="IE=8"
.
Режим IE8 поддерживает множество установленных стандартов, в том числе спецификации каскадных таблиц стилей W3C уровня 2.1 и API-интерфейсы W3C; он также обеспечивает ограниченную поддержку каскадных таблиц стилей W3C уровня 3 (рабочий проект) и других новых стандартов.
Режим Edge указывает Internet Explorer отображать содержимое в доступном режиме. В Internet Explorer 9 это эквивалентно режиму IE9. Если будущий выпуск Internet Explorer поддерживает более высокий режим совместимости, страницы, установленные в режиме edge, будут отображаться в самом высоком режиме, поддерживаемом этой версией. Те же самые страницы будут отображаться в режиме IE9 при просмотре в Internet Explorer 9.
Ссылка Что такое < meta http-equiv = "X-UA-Compatible" content= ", IE = край " > делать?
Ответ 12
У меня есть исправление для этой проблемы. На самом деле IE7 и 8 не поддерживают @media правильно, и если вы проверите css для классов "col-md- *", и ширина будет указана в ширине носителя 992px. Просто создайте новый css файл IE, например: IE.css, и добавьте условные комментарии. А затем просто скопируйте классы, необходимые для вашего дизайна, непосредственно с любыми запросами на медиа-носители, и вы закончили.
Ответ 13
У меня была точно такая же проблема при переходе с bootstrapv2 на v3.
Если (как я) вы перенести, заменив старый spanX на col-sm-X, вам также нужно добавить классы col-X. col-X - это стили, которые находятся вне любых блоков @media, поэтому они работают без поддержки медиа-запросов.
Чтобы исправить ширину контейнера, вы можете установить ее вне блока @media. Что-то вроде:
.container {
max-width: @container-tablet;
}
@import "twitter-bootstrap/less/bootstrap";
Ответ 14
У меня такая же проблема в IE 10.0. Я знаю, что это не совсем проблема в OP, но, возможно, это будет полезно для других.
В моем случае у меня была пустая строка в начале документа:
[blank line]
<!DOCTYPE html>
<html lang="es">
...
Если пустая строка находится между DOCTYPE и тегом, проблема также отображается:
<!DOCTYPE html>
[blank line]
<html lang="es">
Как только я удалил пустую строку и без волшебной X-UA-совместимой мета, IE 10 начал правильно отображать сайт.
Если вы используете PHP и Smarty, будьте осторожны с комментариями Smarty, потому что они добавят эти проблемные пустые строки: -)
Ответ 15
мой тег заголовка выглядит следующим образом:
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- Bootstrap core CSS -->
<link href="css/modern-business.css" rel="stylesheet">
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet">
<link href="css/bootstrap.css" rel="stylesheet" media="screen">
<script src="js/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/modern-business.js"></script>
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.js"></script>
<![endif]-->
</head>
если вы хотите попробовать локально... попробуйте через localhost или создайте сервер QA и настройте контент и попробуйте.
Нам нужен response.js для bootstrap 3, и он не будет работать на локальной машине, если мы просто поместим его в js и добавим его в html в заголовке. Он скажет, что доступ запрещен. он работает только через сервер, поскольку IE имеет ограничение безопасности.: P
Ответ 16
Я прочитал каждый комментарий здесь, попробовал все.. но не смог заставить его работать с Windows 7 - Internet Explorer 11 (с режимом документа: IE8).
Затем пришло в голову, что запуск режима документа (IE8) не совпадает с реальным IE8, поэтому я установил Windows Virtual PC (Windows 7 с Internet Explorer 8) и tadaaaa... он работает как шарм!
Я поставил этот фрагмент кода JUST в нижней части страницы, чтобы он работал:
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
</body>
</html>
Ответ 17
Если вы используете Bootstrap 3, и все работает отлично в других браузерах, кроме IE, попробуйте ниже.
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
Ответ 18
Так же, как хедз-ап. У меня была та же проблема, и ни одна из вышеперечисленных не исправила это для меня. В конце концов я узнал, что response.js не анализирует CSS, на который ссылается @import. У меня было все bootstrap.min.css
импортировано через @import
в мой main.css
.
Поэтому убедитесь, что у вас нет CSS, который содержит ваши медиа-запросы, на которые ссылаются через @import.
Ответ 19
Я решил выполнить следующие шаги.
(1) установлен модуль Respond.js для drupal 7.
(2) модуль lessphp для drupal 7, установленный в библиотеках, а не в папке с модулем.
(3)
(3.1) <meta http-equiv="X-UA-Compatible" content="IE=edge">
(3.2)
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<![endif]-->
используя cdn bootstrap из настройки темы.
Чтобы узнать больше, просмотрите мой блог на сайте для дизайна и развития drupal www.devangsolanki.com
Ответ 20
Используйте это решение
<!--[if lt IE 9]>
<script src="js/css3-mediaqueries.js"></script>
<link rel="stylesheet" type="text/css" href="css/bootstrap-ie7.css" />
<![endif]-->
Эта строка <script src="js/css3-mediaqueries.js"></script>
включает медиа-запросы.
Эта строка <link rel="stylesheet" type="text/css" href="css/bootstrap-ie7.css" />
включает бутстрап-шрифты.
Проверено на Bootstrap 3.3.5
Ссылка на скачивание mediaqieries.js.
Ссылка для скачивания bootstrap-ie7.css
Ответ 21
Убедитесь, что вы связали источник начальной загрузки
Если вы используете LESS
или SASS
, не следует жадно компилировать стили.
В моем проекте я включил bootstrap.min.css
в мой основной стиль, в верхней части файла, поэтому должен быть только один запрос для всех стилей.
И из-за этого классы boostrap не работали должным образом.
При добавлении отдельно, работает как ожидалось.
Ответ 22
Я столкнулся с той же проблемой, попробовал первый ответ, но чего-то не хватало.
Если вы, ребята, используете Webpack, ваш css будет загружен как тег стиля, который не поддерживается response.js, ему нужен файл, поэтому убедитесь, что bootstrap загружен как файл css
Лично я использовал extract-text-webpack-plugin
const webpack = require("webpack")
const ExtractTextPlugin = require("extract-text-webpack-plugin")
const path = require("path")
module.exports = {
context: __dirname+"/src",
entry: "./index.js",
output: {
filename: "./dist/bundle.js",
path: __dirname
},
plugins: [
...,
new ExtractTextPlugin("./dist/bootstrap.css", {
allChunks: true
})
],
module: {
loaders: [
...,
// your css loader excluding bootstrap
{
test: /\.css$/,
loader: "style!css",
exclude: [
path.resolve(__dirname, "node_modules/bootstrap/dist/css/bootstrap.css")
]
},
{
// loads bootstrap as a file, change path accordingly if needs be, path needs to be absolute
include: [
path.resolve(__dirname, "node_modules/bootstrap/dist/css/bootstrap.css")
],
loader: ExtractTextPlugin.extract("style-loader", "css-loader?minimize")
}
]
}
}
Надеюсь, это поможет вам.