Форум hotibo.ru

Сайты - по стандартам, но не стандартные сайты!






#1 12.10.2011 20:51

FileJunkie
Новичок
Откуда: Санкт-Петербург
Зарегистрирован: 21.09.2010
Сообщений: 3
Вебсайт

Firefox, border-collapse: collapse и внешний div

Создаём div. Прописываем для него border. Внутрь пихаем таблицу с border-collapse: collapse. В результате огнелис сливает границы дива и таблицы. Излечимо?

Нет на форуме

 

#2 13.10.2011 17:47

MT
Опытный
Откуда: Moscow
Зарегистрирован: 23.11.2009
Сообщений: 241
Вебсайт

Re: Firefox, border-collapse: collapse и внешний div

Код:

#mydiv TABLE {border-collapse: collapse; border-spacing: 0; }
:root #mydiv TABLE {border-collapse: separate; }

Применение селектора :root в данном случае вполне безопасно, поскольку крайне маловероятно, что IE станет поддерживать :root раньше, чем свойство border-spacing.


[url=http://TANALIN.com/blog/]блог[/url] | [url=http://TANALIN.com/music/]музыка[/url] | [url=http://firefox.com/]браузер[/url]

Нет на форуме

 

#3 13.08.2013 22:03

katanashi
Новичок
Зарегистрирован: 13.08.2013
Сообщений: 1

Re: Firefox, border-collapse: collapse и внешний div

Невероятно, но до сих пор этот глюк не поправили. В мозилла это считают не багом, а фичей: правильной имплементацией стандарта w3c smile

Конкретно о проблеме.

В firefox таблица с border-collapse:collpase отжирает пространство у окружающих элементов, увеличиваясь в размерах.
Эффект имеет сложную форму: влево и вправо таблица увеличивается на половину ширины своего бордера, заезжая на окружение, а вверх и вниз - увеличивается на полный размер бордера, на половину бордера заезжая на окружение, и еще на половину отодвигая его.
Т.е. изменения margin для border в 10px будут: -5 со всех сторон, и при этом width увеличится на 10px, а height - на 20px.
(Вы что-то поняли? Я, лично, с трудом врубаюсь в этот п@#*&ц.)
Если бордер имеет ширину 1px, то один пиксел отжирается сверху и слева, а снизу и справа - нет (в firefox 3.0.x, и, вполне возможно, что именно на моей конкретной странице).
В общем, дизайн, для которого критична точность размеров, будет нарушен.

Что делать?

- Использование "border-spacing: 0;", как советует MT (или вот здесь, например: http://rmcreative.ru/blog/tag/CSS+border-collapse ) делу не поможет, т.к. это совсем другая вещь: он убирает cellspacing, а не сдвоенные бордеры. Сосбно, то что посоветовал МТ - это просто отключить коллапс для файерфокса.
Имхо, если бы он не был нужен, то его можно бы было и не включать вовсе, и не постить вопросы о нем в форумы wink

- Компенсировать изменения размеров и margin? В принципе возможно. Пожалуй вполне удобно для бордера в 10px. Но делать подобное для 1px мне просто страшно, т.к. не берусь предсказывать что и куда будет округляться при различных обстоятельствах. И, кстати, не забудьте это сделать с использованием css-хака для firefox, чтобы не изменить размеры в браузерах, дружащих с темой.

- переключить браузеры в quirks mode. Отлично помогает, но тоже страшно, разнообразные гуру от css всегда настойчиво уговаривают так не делать. Я им верю. Мало ли, вдруг новые браузеры тотально перестанут поддерживать этот режим?

- Итак, остается убирать сдвоенные бордеры руками. "Как наши деды убирали, и убирать нам завещали, и убирать мы обещали, и клятву верности сдержали, и файерфокс мы матюкали, проклятый файерфокс!", ггг smile
Т.е. это одно из:
  - задать бордеры у таблицы и у всех td только с двух сторон. У таблицы, например, top и left, а у td - bottom и right.
  - задать cellspacing=1 и фон таблицы, который будет просвечивать в щели между ячейками.
  - конечно, можно как-то еще. Проблемы особой, для человека с руками, собсно нет. Но раздражение... оно есть, млин! mad


Не по делу (чуйства):

Я просто ох@еваю с этой ситуации. Куча высоколобых дядек в w3c и компаниях, пишущих браузеры, парят себе и нам мозги размышляя над css-проблемами типа "каким должен быть display у img по-умолчанию - block или inline". И так проходя годы! А в это время простые верстальщики, опять же, ГОДАМИ должны или терпеть у себя сдвоенные бордеры внутри таблиц, или убирать их руками, или бесконечно серфить по инету в поисках ответа на наболевший вопрос: "Ну как же, млять, быстро и безболезненно все-таки убрать эти уродливые сдвоенные бордеры?!".

Почему я так негодую? Потому что для большинства верстальщиков ТАБЛИЦА ЯВЛЯЕТСЯ ОСНОВНЫМ И ГЛАВНЫМ ЭЛЕМЕНТОМ ДИЗАЙНА, НА КОТОРОМ СТРОИТСЯ ВСЕ. Не не

    , а таблица! Можно еще делать на дивах, и это, наверное, круто. Но что проще для головы? Каких страниц больше?  И каких разработчиков больше, тех что пишут на дивах, или тех, что пишут таблицами? Ответ, я думаю, очевиден.

    Если даже такой основной (я не говорю - простой, но ОСНОВНОЙ же!) элемент, как  table, в течение десятка лет уроды из w3c не могут внятно специфицировать, а разные браузеры не могут отобразить одинаково, то нахрена вообще все остальное нужно? Зачем менять box-sizing?? Зачем менять умолчания для img display? Я с удовольствием пропишу конкретные значения для всех моих элементов и классов. Дайте мне тупую, нормальную, одинаковую, табличку хотя бы в трех самых популярных браузерах!!!


    PS: Возможно, продвинутые верстальщики не заморачиваются из за такой фигни (Нафига вообще нужны эти бордеры? Может, нормальный дизайн делается без бордеров?). Но млин, зачем-то же ведь придумали border-collapse? Значит надо было все-таки?! Значит это разумно и востребовано??

    PS2: Обожаю FF, это мой любимый браузер. Поиск по странице, плагины - рулят. Как они такое с табличками умудрились сделать - ума не приложу. Бюрократы-формалисты, мать их...

    Отредактированно katanashi (13.08.2013 22:19)

Нет на форуме

 

#4 27.09.2013 13:19

Octane
Опытный
Откуда: Волгоград
Зарегистрирован: 05.03.2012
Сообщений: 220
Вебсайт

Re: Firefox, border-collapse: collapse и внешний div

katanashi написал:

для большинства верстальщиков ТАБЛИЦА ЯВЛЯЕТСЯ ОСНОВНЫМ И ГЛАВНЫМ ЭЛЕМЕНТОМ ДИЗАЙНА, НА КОТОРОМ СТРОИТСЯ ВСЕ.

таких людей теперь верстальщиками не называют)

Отредактированно Octane (27.09.2013 13:21)


[url=http://code.google.com/p/js-core/]javascript framework[/url]

Нет на форуме

 

#5 01.10.2013 11:37

Xexe
Новичок
Зарегистрирован: 03.03.2012
Сообщений: 28

Re: Firefox, border-collapse: collapse и внешний div

Octane написал:

katanashi написал:

для большинства верстальщиков ТАБЛИЦА ЯВЛЯЕТСЯ ОСНОВНЫМ И ГЛАВНЫМ ЭЛЕМЕНТОМ ДИЗАЙНА, НА КОТОРОМ СТРОИТСЯ ВСЕ.

таких людей теперь верстальщиками не называют)

Вы так считаете?
Ну тогда предложите вариант макета, где футер и хидер прижаты к верху и к низу соответственно, имеют неизвестную заранее высоту (она определяется содержимым). У макета 2 колонки. Макет резиновый. Колонки разного цвета и обе тянутся от хидера до футера вне зависамости хватает ли содержимого в какой-либо из них. Это кстати наиболее распространенный вариант макета в рунете в области создания сайтов класса "сляпаем за неделю или месяц". Как раз та область, где работает большинство народа.

Нет на форуме

 

#6 02.10.2013 12:56

vashurin
Moderator
Зарегистрирован: 14.09.2010
Сообщений: 291
Вебсайт

Re: Firefox, border-collapse: collapse и внешний div

Xexe:
http://chikuyonok.ru/playground/cols/
http://matthewjamestaylor.com/blog/equa … column.htm
http://matthewjamestaylor.com/blog/ulti … pixels.htm


С уважением, [url=http://vashurin.ru]Вашурин Владимир[/url].

Нет на форуме

 

#7 06.10.2013 14:30

gordi
Новичок
Зарегистрирован: 03.05.2010
Сообщений: 31

Re: Firefox, border-collapse: collapse и внешний div

Xexe написал:

Ну тогда предложите вариант макета, где футер и хидер прижаты к верху и к низу соответственно, имеют неизвестную заранее высоту (она определяется содержимым). У макета 2 колонки. Макет резиновый. Колонки разного цвета и обе тянутся от хидера до футера вне зависамости хватает ли содержимого в какой-либо из них. Это кстати наиболее распространенный вариант макета в рунете в области создания сайтов класса "сляпаем за неделю или месяц". Как раз та область, где работает большинство народа.

vashurin написал:

Xexe:
http://chikuyonok.ru/playground/cols/
http://matthewjamestaylor.com/blog/equa … column.htm
http://matthewjamestaylor.com/blog/ulti … pixels.htm

Если макет должен иметь 100% высоту, ссылки не катят smile
Хехе тут прав.


[i]Мы обречены, помогать друг другу...[/i]

Нет на форуме

 

#8 09.10.2013 12:58

Xexe
Новичок
Зарегистрирован: 03.03.2012
Сообщений: 28

Re: Firefox, border-collapse: collapse и внешний div

vashurin написал:

Xexe:
http://chikuyonok.ru/playground/cols/
http://matthewjamestaylor.com/blog/equa … column.htm
http://matthewjamestaylor.com/blog/ulti … pixels.htm

Да, эти ссылки не катают. Условие "высота 100%" не выполняется.
Скажу по секрету - без таблиц можно, но геморрой дикий + для ИЕ у вас все равно будут таблички, а добавление или убирание колонок превратится в ад. И, кстати, если добавить условие "одна колонка фиксирована" (что тоже очень частое требование) - то выше приведенные ссылки вообще никуда не лезут.
На самом деле пока дядя ИЕ6 и дизайнеры, которые рисуют стандартные макеты, будут жить - будут жить и таблички для сетки. ИМХО

Нет на форуме

 

#9 09.10.2013 13:29

vashurin
Moderator
Зарегистрирован: 14.09.2010
Сообщений: 291
Вебсайт

Re: Firefox, border-collapse: collapse и внешний div

И, кстати, если добавить условие "одна колонка фиксирована" (что тоже очень частое требование) - то выше приведенные ссылки вообще никуда не лезут.

http://matthewjamestaylor.com/blog/holy … s-mode.htm фиксированные колонки и "резиновый" центр.
Так, что это не проблема.

Макеты с колонками и 100% я верстал. Так, что это сделать не столь уж и сложно. Хотя, впадать в холивар DIV vs TABLE не хочу. Смысла в этом нет, верстать надо так, что б это было экономически оправданно (быстро и удобно), а не для показа коллегам wink


С уважением, [url=http://vashurin.ru]Вашурин Владимир[/url].

Нет на форуме

 

#10 09.10.2013 14:09

gordi
Новичок
Зарегистрирован: 03.05.2010
Сообщений: 31

Re: Firefox, border-collapse: collapse и внешний div

vashurin написал:

Макеты с колонками и 100% я верстал. Так, что это сделать не столь уж и сложно.

Не все так просто smile
Если попытаться сделать так - требования к стандартной трех колоночной разметке - left-content-right:

1. Макет имеет 100% высоту с включением header и footer
2. Колонки центральной части одинаковой (равной) высоты
3. Они же заключены в индивидуальную окантовку (border),  и имеют каждая свою фонофую заливку или (background:url(...) repeat-y;
4. Область контента с плавающей шириной, а еще лучше все колонки smile
5. Как дополнительное условие область контента по html-коду идет раньше колонок навигации

Покажите ваш пример без таблиц smile

Отредактированно gordi (09.10.2013 14:10)


[i]Мы обречены, помогать друг другу...[/i]

Нет на форуме

 

#11 09.10.2013 17:53

Octane
Опытный
Откуда: Волгоград
Зарегистрирован: 05.03.2012
Сообщений: 220
Вебсайт

Re: Firefox, border-collapse: collapse и внешний div

Соревнования, кто сложнее придумает макет? Ну есть некоторые проблемы, которые иногда приходится решить использованием таблицы, но каким местом это относится к утверждению: «ТАБЛИЦА ЯВЛЯЕТСЯ ОСНОВНЫМ И ГЛАВНЫМ ЭЛЕМЕНТОМ ДИЗАЙНА, НА КОТОРОМ СТРОИТСЯ ВСЕ»?


[url=http://code.google.com/p/js-core/]javascript framework[/url]

Нет на форуме

 

#12 09.10.2013 18:01

gordi
Новичок
Зарегистрирован: 03.05.2010
Сообщений: 31

Re: Firefox, border-collapse: collapse и внешний div

Octane написал:

Соревнования, кто сложнее придумает макет? Ну есть некоторые проблемы, которые иногда приходится решить использованием таблицы, но каким местом это относится к утверждению: «ТАБЛИЦА ЯВЛЯЕТСЯ ОСНОВНЫМ И ГЛАВНЫМ ЭЛЕМЕНТОМ ДИЗАЙНА, НА КОТОРОМ СТРОИТСЯ ВСЕ»?

Ни говорит, что таблицы наше ВСЁ smile
Но то, что можно на них на DIV, иногда, сделать затруднительно smile
Во всяком случае не проще по стилям.
А так сплошные компромиссы smile


[i]Мы обречены, помогать друг другу...[/i]

Нет на форуме

 

#13 14.10.2013 17:08

vashurin
Moderator
Зарегистрирован: 14.09.2010
Сообщений: 291
Вебсайт

Re: Firefox, border-collapse: collapse и внешний div

gordi написал:

Не все так просто smile
Если попытаться сделать так - требования к стандартной трех колоночной разметке - left-content-right:

1. Макет имеет 100% высоту с включением header и footer
2. Колонки центральной части одинаковой (равной) высоты
3. Они же заключены в индивидуальную окантовку (border),  и имеют каждая свою фонофую заливку или (background:url(...) repeat-y;
4. Область контента с плавающей шириной, а еще лучше все колонки smile
5. Как дополнительное условие область контента по html-коду идет раньше колонок навигации

Покажите ваш пример без таблиц smile

gordi, долго не отвечал, потому, что дел полно кроме форума. smile
Как такой вариант: http://pmob.co.uk/temp/3col-sticky- … n-max2.htm ? Подойдет? tongue
Пример не мой, просто лежал в закладках, на основе которого верстал примерно такое, но жаль показать уже нечего. sad
Только данный пример подработал, под разные фоны (как в поставленной вами задаче), так, что можно скопировать и сделать у себя на локале разные фоны:

Код:


3 equalising column min-max with sticky footer



Go to Basic version with no equal columns and no sticky footer.

Original 3 column layouts (circa 2003)

Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here : Left content goes here :



How it works - in brief

This layout uses three floats for the columns even though the middle column is a fluid width we can achieve this by using a 100% width float for the middle column and then applying a right negative margin equal to the widths of the left and right columns.

A negative margin on the opposite side of a float (opposite to the direction it is floated) doesn't change the width of a float but instead allows other content to approach from that side by the amount of the negative margin.

This would result in overlap of course so we need one extra html element to nest inside the middle floated column that has a margin-right equal to the combined width of the left and right floats and this then keeps the content clear of the side floats.

The benefit of floating all three columns is that we avoid the 3 pixel jog in IE6 and it also allows the html to remain in sensible source order in that left, middle and right columns follow each other logically in the html.

The drawback of this technique is that you must control the minimum width of the center column before the ocntent overflows or the columns will drop in IE6.

The min max routine for IE6 (as ie6 doesn't understand min/max width) is provided by javascript and a once only expression which avoids the speed issues with using expressions. (See Steve Souders for more information on this.)

The sticky footer is a combination of my old techniques and the results of a brain storming session on Sitepoint where a quiz I set refined the details into an all purpose sticky footer. You can see the quiz and read how it all evolves here. A stripped down version of the footer technique is shown here in all it's glory.

Lastly the full column colours are achieved with my absolute column overlay technique that I invented some years ago and uses two extra divs to supply just column colours. The full details are shown in my orignal article and as shown in this demo.

Хотя, выше я уже писал:

vashurin написал:

... впадать в холивар DIV vs TABLE не хочу. Смысла в этом нет, верстать надо так, что б это было экономически оправданно (быстро и удобно), а не для показа коллегам


С уважением, [url=http://vashurin.ru]Вашурин Владимир[/url].

Нет на форуме

 

#14 14.10.2013 17:51

gordi
Новичок
Зарегистрирован: 03.05.2010
Сообщений: 31

Re: Firefox, border-collapse: collapse и внешний div

vashurin написал:

gordi написал:

Не все так просто smile
Покажите ваш пример без таблиц smile

gordi, долго не отвечал, потому, что дел полно кроме форума. smile
Как такой вариант: http://pmob.co.uk/temp/3col-sticky- … n-max2.htm ? Подойдет? tongue
Пример не мой, просто лежал в закладках, на основе которого верстал примерно такое, но жаль показать уже нечего. sad
Только данный пример подработал, под разные фоны (как в поставленной вами задаче)...

Имел ввиду такое - http://trifler.ru/blog/i/control/lcr.htm
Что по сравнению с вашим примером много проще,
причем все колонки с плавающей шириной.


vashurin написал:

.Хотя, выше я уже писал:

... впадать в холивар DIV vs TABLE не хочу. Смысла в этом нет, верстать надо так, что б это было экономически оправданно (быстро и удобно), а не для показа коллегам

Ваш пример из холивар DIV vs TABLE, плавно перетекает в холивар браузеров smile
Под каждый из них пишем свои стили smile
И в придачу JavaScript


[i]Мы обречены, помогать друг другу...[/i]

Нет на форуме

 

#15 11.06.2014 21:06

Sturmann
Новичок
Зарегистрирован: 11.06.2014
Сообщений: 3

Re: Firefox, border-collapse: collapse и внешний div

а если такая задача:
main контент с колонками фиксированы и центрированы, а в хидере и футере полоса на 100%? ну в хидере проблема решаема, 1пиксельная картинка в боди с позицией топ, лефт... центральная часть верстается на div-ах, а снизу как делать 100% полоску без таблицы?

Нет на форуме

 

Board footer