Как часть моего отзывчивого дизайна, я пытаюсь динамически скрыть столбики таблицы, если размер области просмотра сжимается мимо определенной точки. Я попытался установить .style.visibility = "collapse"
для всех <tr>
элементов и .style.opacity = "0"
для всех <td>
элементов. Затем мне нужно скрыть background
таблицы, чтобы она не показывала, что ширина таблицы все еще существует, а также увеличивая width
таблицы (160%), чтобы оставшиеся столбцы заполнили экран.Скрытие столбцов таблицы с javascript - динамическая настройка макета
Хотя это действительно работает на Chrome, Firefox, IE (в том числе ie8!) И моих мобильных браузерах, кажется, это смешной клоунский хак. Любые другие предложения?
var jmq = window.matchMedia("screen and (max-width: 610px)");
jmq.addListener(jmqListener);
function jmqListener(jmq){
var colTitle = getElementsByClassName('col-title');
var colName = getElementsByClassName('col-name');
var colDate = getElementsByClassName('col-date');
var colFb = getElementsByClassName('col-fb');
var table = getElementsByClassName('default');
if (jmq.matches || window.innerWidth < 611) {
//Mobile
... resize controls
// hide table columns
if (colName !== null){
for(var i=0,j=colName.length; i<j; i++){
colName[i].style.visibility = "collapse";
colName[i].style.opacity = "0";
}
}
// HACK - increase table width and hide the background which would show the reserved table space
if (table !== null){
for(var i=0,j=table.length; i<j; i++){
table[i].style.width = "160%";
table[i].style.background = "transparent";
}
}
}
else {
// Desktop
... restore control layout for desktop
// restore table column(s)
if (colName !== null){
for(var i=0,j=colName.length; i<j; i++){
colName[i].style.visibility = "visible";
colName[i].style.opacity = "100";
}
}
if (table !== null){
for(var i=0,j=table.length; i<j; i++){
table[i].style.width = "100%";
table[i].style.background = "#C8C8C8";
}
}
}
}
function getElementsByClassName(className) {
if (document.getElementsByClassName) {
return document.getElementsByClassName(className); }
else {
return document.querySelectorAll('.' + className);
}
}
По какой причине вы не используете медиа-запросы? – jcuenod