- From: Kang-Hao (Kenny) Lu <kanghaol@oupeng.com>
- Date: Mon, 14 Oct 2013 00:37:50 +0800
- To: Alan Gresley <alan@css-class.com>
- CC: WWW Style <www-style@w3.org>
(2013/10/14 0:09), Alan Gresley wrote:
>> I've since wondered if we can have a 'overflow: hidden' equivalent that
>> has no layout but painting effect (and that floats can intrude into it).
>
> Can you clarify what you mean by no layout.
s/layout/layout effect/
It means this:
When you specify 'overflow: <hidden-no-layout-value>' on an element,
all elements stay where they were (layout-wise, or in other words,
.clientTop/Left/Height/Width all stay the same, like what
'visibility: hidden' does).
>> Perhaps 'clip' was meant to achieve this but that property seems to
>> already fail largely.
>
> Clip only works with absolutely position elements.
Yes, which makes it useless and voloates the 'no-layout effect'
requirement when you specify 'position: abosolute' on it.
>> Before reading into the draft, I thought this
>> draft is about this, but the draft doesn't mention BFC...
>
> Well I guess it should. I believe it's more to do with css-overflow
> being so incomplete.
If the draft says nothing then your are right, according to CSS 2.1, it
would create a BFC (because CSS 2.1 always says 'overflow' that's not
'visible') and has all those consequences: different 'height: auto',
margin collapsping, float-BFC positioning behavior and such.
>> So... can we make 'overflow: clip' not establish a BFC, or is this
>> already planned? The fact that 'overflow: hidden' affects layout is just
>> really very confusing to Web developers. This behaivor has been the main
>> way how Web developers get to known what a BFC is, I believe :)
>
> If it doesn't create a BFC, then it's not a 'containing block'. Please
> read the spec [3] and note the use of the term 'containing block'.
Well, note that 'position: relative' doesn't establish a BFC but yet it
makes the element a containing block root.
This is a very fake example, but it might illustrate it:
data:text/html,<style>div { border: red solid; } p { float: left;
height: 5em; }</style><div><p></p></div>
data:text/html,<style>div { border: red solid; overflow: hidden;} p {
float: left; height: 5em; }</style><div><p></p></div>
data:text/html,<style>div { border: red solid; position: relative; }
p { float: left; height: 5em; }</style><div><p></p></div>
where the third looks like the first.
I am asking 'overflow: clip' to behave like the first and the third.
>> I don't know if spec-wise or implementation-wise not establing BFC
>> contradicts the requirement to make the element a containling block
>> root.
>
> Are you referring to the initial containing block?
Sorry for introducing a new term. By "make the element a containing
block root", I meant to refer to the 'position: relative' behavior. I'll
ask Tab to introduce a term here so that I can use it :)
>> If that's the case, I would like to requst another
>> overflow-clipping value.
Now that I think about this, I think "make the element a containing
block root" is already violating the 'no-layout effect' requirement for
decendents. I guess I'll ask for something like
'visibility: content-box;'
instead. But this property-value combination is less intuitive to the
point that I don't think it can kill 'overflow: hidden' ;)
Cheers,
Kenny
--
Web Specialist, Opera Sphinx Game Force, Oupeng Browser, Beijing
Try Oupeng: http://www.oupeng.com/
Received on Sunday, 13 October 2013 16:38:18 UTC