Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 30.09.2015, 14:14
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

ОТПАД!!!! Спасибо огромное! Правда я так и не понял суть этой хитрости. Каким образом overflow в одном месте и отсутствие онного в другом позволяет добиться этого эффекта? Можете пояснить?)
Ответить с цитированием
  #12 (permalink)  
Старый 30.09.2015, 14:16
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

overflow формирует новый контекст. Далее цитата:
Цитата:
Элементы из разных блочных контекстов форматирования никак не могут повлиять на положение друг друга на странице.
То есть по сути элементы не должны видеть друг друга, т.е. вести себя как при position:absolute;
В чем я ошибаюсь? (а я ошибаюсь, это очевидно)
Ответить с цитированием
  #13 (permalink)  
Старый 30.09.2015, 14:18
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

Ещё крайне интересно то, что блоки растягиваются на 100% хотя этого свойства мы не указывали, и ели его указать, то весь эффект исчезнет и блоки сместятся вниз.
Ответить с цитированием
  #14 (permalink)  
Старый 30.09.2015, 18:02
Аватар для mikhail.golovkin
Интересующийся
Отправить личное сообщение для mikhail.golovkin Посмотреть профиль Найти все сообщения от mikhail.golovkin
 
Регистрация: 11.12.2013
Сообщений: 16

Сообщение от Siend Посмотреть сообщение
То есть по сути элементы не должны видеть друг друга, т.е. вести себя как при position:absolute;
В чем я ошибаюсь? (а я ошибаюсь, это очевидно)

Тут речь идёт об элементах внутри контекста, т.е. внутри каждого из блока с одим из свойств, создающих контекст.
Может быть, спецификация прояснит лучше.
http://www.w3.org/TR/CSS21/visuren.h...ock-formatting

Вольный перевод:

Сообщение от w3c spec
9.4.1 Блочные контексты форматирования.

Плавающие блоки, абсолютно позиционированные элементы, блочные контейнеры (такие, как inline-block, table-cells и table-captions) не являющиеся блочными элементами, и блочные элементы с 'overflow' отличным от 'visible' (за исключением случаев, когда значение наследуется от viewport) устанавливают новые блочные контексты для их содержимого.

В блочном контексте форматирования блоки располагаются вертикально один за другим от верха родительского блока. Вертикальное расстояние между двумя соседними блоками определяется свойствами 'margin'. Вертикальные отступы между соседними блоками объединяются.

В блочном контексте форматирования каждый левый край блока касается левого края родительского блока (для выравнивания справа налево касается правым). Это верно даже в присутствии плавающего блока (при этом строчные элементы могут обтекать плавающий блок), если только блок не устанавливает новый контекст (в этом случае сам блок может обтекать плавающий блок).

Что и подтверждается практикой. Блочный элемент занимает всю доступную ширину с учётом плавающих блоков.
Если установить ширину 100%, то блочный элемент физически не может обтекать и смещается ниже. Ведь он принимает ширину родителя и просто не помещается.

Последний раз редактировалось mikhail.golovkin, 01.10.2015 в 18:36. Причина: неточности в формулировках, сбивающие с толку
Ответить с цитированием
  #15 (permalink)  
Старый 01.10.2015, 08:23
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

mikhail.golovkin, столько теории... Тестовый пример от тебя будет? А то прям заинтриговал.
Ответить с цитированием
  #16 (permalink)  
Старый 01.10.2015, 09:01
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от ksa Посмотреть сообщение
mikhail.golovkin, столько теории... Тестовый пример от тебя будет? А то прям заинтриговал.
так вот же был:

Сообщение от mikhail.golovkin Посмотреть сообщение
Можно реализовать путём создания 2х разных контекстов. float и overflow, например.

<iframe width="800" height="550" src="http://embed.plnkr.co/9RbRhrsnm85UabW7rW1G/preview" frameborder="0" allowfullscreen></iframe>


Ещё способы создать контекст: https://developer.mozilla.org/ru/doc...atting_context

К сожалению, в учебнике об этом ничего не сказано, а тема достаточно важная.
этот overflow:auto каким то магическим способом, но работает
Ответить с цитированием
  #17 (permalink)  
Старый 01.10.2015, 09:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Теперь понял как та фигня работает.
Ответить с цитированием
  #18 (permalink)  
Старый 01.10.2015, 09:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от EmperioAf
этот overflow:auto каким то магическим способом, но работает
Второй раз меня удивляет этот overflow.
Сколько скрытого подтекста за сухими определениями его значений
Цитата:
hidden - Отображается только область внутри элемента, остальное будет скрыто.
auto - Полосы прокрутки добавляются только при необходимости.
http://htmlbook.ru/css/overflow
Ответить с цитированием
  #19 (permalink)  
Старый 01.10.2015, 09:58
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

mikhail.golovkin, а подскажите пожалуйста, в такой ситуации:

.block1{
overflow:auto;
}

.block2{
overflow:auto;
}

.block3{
overflow:auto;
}


Эти три блока будут обладать каждый собственным контекстом, или у всех он будет один? Т.е. разный контекст задать можно исключительно разными свойствами (например одному блоку float, а другому overflow) или даже одно свойство будет автоматически создавать новый контекст. Или перефразирую: Будет ли контекст блоков с одинаковыми свойствами объединяться?

P.S.: звучит наверное отвратительно, но по другому мысль сформулировать не смог(
Ответить с цитированием
  #20 (permalink)  
Старый 01.10.2015, 10:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Siend
Эти три блока будут обладать каждый собственным контекстом, или у всех он будет один?
Разный у всех.
Ведь
Цитата:
Блочный контекст форматирования может быть создан посредством:
- корневого элемента или чего-то, что содержит его
- поплавками (элементы, у которых float не равно none)
- абсолютно позиционированными элементами (элементами, значение position которых либо absolute, либо fixed)
- inline-blocks (элементы с display: inline-block)
- ячейки таблицы (элементы с display: table-cell, установленного по умолчанию для ячеек таблицы)
- заголовки таблицы (элементы с display: table-caption, установленного по умолчанию для ячеек таблицы)
- элементы, у которых значение свойства overflow отличается от visible
- flex блоки(элементы с display: flex или inline-flex)
https://developer.mozilla.org/ru/doc...atting_context
Т.е. если ты у элемента указал хоть одно из 8-ми - значит создал "Блочный контекст"...

Элементы конечно могут быть и вложенными друг в друга... Но в каждом будет создан новый "Блочный контекст".
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ховер и появляющий блок Shuryga Элементы интерфейса 3 28.09.2015 14:39
Растянуть блок под загруженное содержимое ev09 jQuery 4 09.05.2015 10:09
Растянуть блок на оставшуюся высоту BETEPAH Элементы интерфейса 11 25.11.2014 10:29
Копирование блоков в блок maximus Events/DOM/Window 1 14.09.2013 19:40
Как растянуть блок? Александр141 (X)HTML/CSS 2 21.05.2013 23:22