IE Альтернатива столбцу-графу и столбцу-пробелу
Мне интересно, есть ли IE альтернатива использованию column-count
и column-gap
?
Я сделал этот пост о создании списка, который автоматически создает новый столбец для каждого пятого элемента. Leniel предложила решение, которое использует column-count
и column-gap
, но это не поддерживается IE. Я ищу решение для решения проблемы.
Ответы
Ответ 1
Я нашел это: Многостолбцовый макет с CSS3. Прочтите раздел под названием CSS3 Multi-Column Browser Support. В нем указано следующее:
Если вам необходимо поддерживать браузеры, которые не поддерживают много столбцов, то у вас должен быть резервный вариант для этих браузеров. Вот как вы можете сделать это с помощью Modernizr script...
-
Поместите следующий тег SCRIPT в HEAD после любых других таблиц стилей:
<script src="http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.0.6/modernizr.min.js"></script>
-
Добавьте еще одну SCRIPT ниже указанной строки:
<script>
Modernizr.load({
test: Modernizr.csscolumns,
yep: 'columns.css',
nope: 'no-columns.css'
});
</script>
-
Создайте таблицу стилей CSS, которая включает в себя CSS с несколькими столбцами и сохранит ее как columns.css в том же каталоге.
- Создайте таблицу стилей CSS, содержащую ваш резервный CSS (например, столбцы с float) и сохраните его как no-columns.css в том же каталоге.
Проверьте свою страницу в IE и Chrome, Safari или Opera.
Страница Несколько столбцов предоставляет резервную копию JavaScript, если вы заинтересованы в этом.
Ответ 2
Вот решение, как сделать меню с многоколоночными, которое выглядит так же, как и созданное с использованием свойства столбца, и работает в ВСЕХ БРАУЗЕРОВ.
Это делается с помощью плавающих элементов, но здесь нужно переупорядочить элементы в javascript (или стороне сервера), чтобы они естественный поток выглядел как вверх-вниз, а слева-справа
Item1 Item4 Item7
Item2 Item5 Item8
Item3 Item6
Пример:
http://jsfiddle.net/xrd5Y/16/
// number of columns
var columns = 4;
var $ul = $('ul.multicolumn'),
$elements = $ul.children('li'),
breakPoint = Math.ceil($elements.length/columns);
$ordered = $('<div></div>');
function appendToUL(i) {
if ($ul.children().eq(i).length > 0) {
$ordered.append($ul.children().eq(i).clone());
}
else $ordered.append($('<li></li>'));
}
function reorder($el) {
$el.each(function(){
$item = $(this);
if ($item.index() >= breakPoint) return false;
appendToUL($item.index());
for (var i = 1; i < columns; i++) {
appendToUL(breakPoint*i+$item.index());
}
});
$ul.html($ordered.children().css('width',100/columns+'%'));
}
reorder($elements);
Ответ 3
Вот что работает для меня: вместо использования JS или только для IE, вы можете использовать классы Modernizr непосредственно в своей таблице стилей.
Если вы используете элемент Inspect на нашей веб-странице, вы увидите, что в теге html добавлено несколько классов CSS:
![If you do an Inspect Element on our webpage, you will see that there are many CSS classes added to the html tag]()
Если браузер пользователя не поддерживает столбцы css, вы увидите класс "no-csscolumns", который вы можете использовать для размещения элементов.
Ответ 4
Вот простое решение, которое я обнаружил для IE и IE Edge, просто отделяя каждый столбец абзацем <p> your text </p>
, column-2 <p> your text </p>
, он работал у меня.
#subfootera {
with:100%;
text-align:left;
padding-top: 20px;
padding-bottom: 20px;
font-family: Verdana, Geneva, sans-serif;
font-size: 14px;
font-weight: bold;
color: #000;
text-shadow:1px 1px 1px #999;
}
.subfooterb {
-webkit-column-count: 2; /* Chrome, Safari, Opera */
-moz-column-count: 2; /* Firefox */
column-count: 2;
-webkit-column-gap: 10px; /* Chrome, Safari, Opera */
-moz-column-gap: 10px; /* Firefox */
column-gap: 10px;
}
<div id="subfootera">
<div class="subfooterb">
<p>Your Text.</p>
<p>Your text or an img</p>
</div>
</div>