min-width IE 6

Тъй като старото Internet Explorer не поддържа минимална ширина, а на мен ми трябва точно това за един течен лейаут, изхачих ето това:

body
{
	margin:0 10px;
	min-width:1007px;
	_width:expression(document.documentElement.offsetWidth < 1048 ? '1007' : 'auto');
}

Числата са нагласяни на око, с фино ресайзване на прозореца. Има и някакви чисти CSS решения, които обаче не схванах. Освен това expression + _ ми се струва напълно приятен подход за решаване на проблеми от този тип. Може да се упражни и с conditional comments, ако държите на валидацията на цсс-а.

11 Коментара по “min-width IE 6”

  1. Серж:

    Добре изглежда и твоето, другото проблема е, че има допълнителни тагове. Но не е толкова сложно, слага в div-a, един върху друг единия се състои само от широк бордър. А другия с margin-a се наслагва в/у него. И така се получава някак изкуствен min-width. Между другото в IE7 го поддържа вече нали?

  2. Петьо:

    Да, поддържа го. Затова и хаквам с подчертавка, която IE7 не разпознава. Гореупоменатия подход не е универсален, аз съм си го нагласил спрямо моя случай (body). Ако отиде на вътрешни елементи става по-сложно.

  3. Серж:

    Я интересно, виж как моя коментар е в 12:34 am, а твоя отговор е в 9:51 am на същия ден?
    Изумителна работа.

  4. Петьо:

    Wordpress. Всъщност, вероятно няма значение :) .

  5. Димо:

    По отношение на часовете - точно така трябва да бъде - 12:00 am е полунощ, a 12:00 pm - обяд :)

  6. uv:

    странно… само

    * html body {width:1007px;}

    .. не работи ли? :)

  7. Петьо:

    @uv: Не, щото правя течен лейаут. идеята е да се разпъва по екрана, но да не се свива след определена ширина.

  8. abozhilov:

    Има и чисто CSS решение, без да се влагат елементи и без да се “маже” много.
    Идеята е проста, използват се white-space: nowrap; и width и се задават само за IE6 , тъй като знаем, че в ИЕ6 има доста проблеми с боксовия модел, и ако съдържанието стане по широко родителския елемент ще си разшири размера.Подобен е и трика за min-height за ИЕ6.
    Ето ти пример за това което говоря, на блоков елемент (div).

    New Document

    			.container {
    				min-width: 200px;
    				float: left;
    				border: 1px solid black;
    				_white-space: nowrap;
    				_width: 200px;
    			}
    

    Тук малко е невалиден CSS кода заради _ но така е някак си по спретнато, ако искаш да ти е валидин си ги изнеси в един conditional comments.

  9. Петьо:

    @abozhilov: Тъй като май и ти (като предишния коментар) не разбра за какво точно ползвам min-width, направих много прост пример - http://underlog.org/uploads/min-width.html . Така като гледам, явно не съм го обяснил добре.
    Трика с това, че експлорър прави _width на нещо като min-width не ме устройва в случая. Защото имам течен лейаут, който искам да се разпъва, но да не се свива след определено намаляне на размера на прозореца. Точно това, което прави min-width. _width или * html body няма да позволяват на елемента да се опъва по браузъра.

  10. Ростислав:

    Чистото решение, макар трудно смилаемо и доста завъртяно е за предпочитане… с малко напъни се схваща и наистина работи. Този експрешън при мен доста често е водил до забив на браузъра.

  11. Петьо:

    И това е вярно. Експрешъните могат да докарат до такива главоболия. Трябва внимателно да се пипа.

Коментирай