Vitaly Harisov ([info]harisov) wrote,
  • Music: Soft Machine - Slightly All The Time

Макетная сетка

Есть такая штука, как «макетная сетка», направляющие линиии в дизайне сайта, к которым привязывается расположение элементов и их размеры. В тех работах, что я делаю сейчас макетная сетка есть всегда, но при этом у меня в вёрстке она виртуальная, не задаётся явно таблицами. Чтобы видеть, выровнены ли элементы по сетке я написал скрипт, который, будучи подключеным на страницу, рисует сетку:

function _columns(a)
{
    document.write('<style type="text/css"> .column_ { position: fixed; ' +
            'z-index: 999; top: 0; display: block; height: 100%;' +
            'border-right: 1px dashed #4affff; }' +
            '* html .column_ {position: absolute; } </style>');

    for (var i = 0, l = a.length; i < l; i++)
        document.write('<span class="column_" style="left: ' + a[i] + '%"></span>');
}

_columns([2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98]);

При вызове скрипта в массиве задаются проценты, где рисовать линию сетки (2%, 10%, etc).

Вот пример.

Есть только одна проблема: в MSIE6-, который не понимает position: fixed, сетка рисуется до конца окна, а не до конца документа, если документ больше, чем окно, то низ не покрывается сеткой. В стандартных браузерах благодаря position: fixed всё нормально.

Буду призателен, если кто-то предложит решение для MSIE6-.

Tags: tip, web

  • Post a new comment

    Error

    Your IP address will be recorded 

  • 15 comments

[info]_irokez

December 7 2006, 04:36:46 UTC 5 years ago

function _columns(a)
{
document.write(' .column_ { position: fixed; '+
'z-index: 999; top: 0; display: block; height: 100%;' +
'border-right: 1px dashed #4affff; }' +
'* html .column_ {position: absolute;} ');

for (var i = 0, l = a.length; i < l; i++)
document.write('');

}

function stayHigh()
{
var span = document.getElementsByTagName('SPAN');
for (var i = 0; i < span.length; i ++) {
if (span[i].className == 'column_') {
span[i].style.top = getBodyScrollTop() + 'px';
}
}
}

function getBodyScrollTop()
{
return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}

_columns([2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98]);

window.onscroll = stayHigh;
</pre>

[info]_irokez

December 7 2006, 04:38:01 UTC 5 years ago

http://alex.erava.com/files/columns.html

[info]harisov

December 7 2006, 08:54:10 UTC 5 years ago

Клёво, только надо это только для MSIE делать, а не для всех. Вот если бы решение было только на css (мечтательно :).

[info]_irokez

December 7 2006, 09:38:15 UTC 5 years ago

if (navigator.userAgent.match(/msie/i)) {
window.onscroll = stayHigh;
}

[info]iderins

December 7 2006, 10:00:01 UTC 5 years ago

Виталя, ты не об этом говоришь?
Или ты говоришь о вспомогательном средстве, с помощью которого ты нарисуешь модульную сетку, согласно которой ты будешь выравнивать элементы макета?

[info]harisov

December 7 2006, 11:03:14 UTC 5 years ago

Да, всё верно, я говорю о вспомогательном средстве.

А сетка у вас хоть и нарисована, но она какая-то странная. Я не смог наложить на неё своим скрптом, хоть и пытался (хотел привести ваш сайт как пример). Там разные проценты при разных размерах, по крайней мере, мне так показалось.

[info]iderins

December 7 2006, 11:06:52 UTC 5 years ago

Проценты там везде одинаковые (т.е. там 10 колонок-модулей), но чудо-броузеры игнорируют проценты, давая приоритет содержанию этих колонок.

[info]harisov

December 7 2006, 11:11:04 UTC 5 years ago

А зачем там таблица? width: 10% !important не помогает?

[info]iderins

December 7 2006, 11:36:38 UTC 5 years ago

Таблица там — атавизм от самой-первой-наскоро-сделанной-страницы-чтоб-что-то-было.
Сейчас готовим полноценный сайт, так что скоро текущая версия тоже станет не нужна.

[info]hannahowyve

July 16 2008, 07:37:41 UTC 3 years ago

Либо установите width либо меньще чем width Меньше значит не равно, а именно меньше, потому как там еще padding: 5px Значит, ваши внутренние таблицы должны быть, не более px в ширину.

[info]tyrellhulton

October 9 2008, 17:10:57 UTC 3 years ago

Я там зачем-то сделал, если ширина не указана, то ставить I_Work
[Error: Irreparable invalid markup ('<tr =>') in entry. Owner must fix manually. Raw contents below.]

Я там зачем-то сделал, если ширина не указана, то ставить I_Work <tr width = height = > <td width = height = class = 'rightlogo' > <a href= "/index.

[info]harisov

December 7 2006, 11:13:30 UTC 5 years ago

Про width

http://harisov.livejournal.com/48761.html

[info]iderins

December 7 2006, 11:34:32 UTC 5 years ago

Re: Про width

угу

[info]mickyxedug

July 16 2008, 16:47:30 UTC 3 years ago

А вы ее Зиммерману покажите. Нельзя, чтобы в наших школах так измывались над учителем.

[info]eugene_ivanov

December 7 2006, 17:10:52 UTC 5 years ago

прикольно. а осла в топку. я его ненавижу
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…