大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要为大家展示了“css溢出机制的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css溢出机制的示例分析”这篇文章吧。
在特克斯等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、做网站 网站设计制作定制网站设计,公司网站建设,企业网站建设,成都品牌网站建设,网络营销推广,成都外贸网站建设公司,特克斯网站建设费用合理。
为什么需要深入学习CSS溢出机制?
在实际开发的过程中,内容溢出是经常见到的。如果不深入了解这个机制,你经常会碰到这样的问题:为什么这个元素没有受到祖先元素的overflow:hidden的影响?这里出现的滚动条是哪个元素的?如果消除这个滚动条?如何在指定的元素上增加滚动功能?
在这篇文章,我们将会从CSS标准出发,讨论CSS溢出机制的细节。
溢出
当一个盒子(block container box)的内容(子元素、孙子元素等后裔)超过盒子本身的大小的时候,就会出现溢出。这个时候CSS属性overflow决定如何处理溢出。这个css属性大家都知道,在这里不讨论了,在这里指出需要注意的几点:
overflow会影响所在元素的所有内容的裁剪、滚动,但是有一种情况例外:"It affects the clipping of all of the element's content except any descendant elements (and their respective content and descendants) whose containing block is the viewport or an ancestor of the element." 也就是说,overflow的所在元素必须是内容元素的直接或间接containing block,这时overflow属性才会影响这个内容元素。比如
当需要滚动条的时候,滚动条会放在border与padding之间。父元素产生滚动条以后,它产生的containing block的尺寸会减少,以便给滚动条腾出空间。
在和
上的overflow属性存在冒泡现象: "UAs must apply the 'overflow' property set on the root element to the viewport. When the root element is an HTML "HTML" element or an XHTML "html" element, and that element has an HTML "BODY" element or an XHTML "body" element as a child, user agents must instead apply the 'overflow' property from the first such child element to the viewport, if the value on the root element is 'visible'. The 'visible' value when used for the viewport must be interpreted as 'auto'. The element from which the value is propagated must have a used value for 'overflow' of 'visible'. "可以推断出:
一般来说只有元素才能拥有滚动条(更准确地说,只有产生block container box的元素才能拥有滚动条)。但visual viewport是个例外。它虽然不是一个元素,但是也可以拥有滚动条。如果在和
上都没有设置overflow属性而使用默认值visible(大部分场景都是这样),那么,visual viewport的overflow就是auto:当网页中有内容超出visual viewport时,visual viewport上会出现滚动条。的最终overflow永远都是visible。也就是说,元素永远不可能拥有滚动条。
如果你想要为
设置非visible的overflow,需要先为设置一个非visible的值来冒泡,从而的overflow不会被冒泡。小练习小练习:
利用以上原理,使visual viewport和
都拥有横、竖滚动条,总共4个滚动条。不能使用overflow: scroll(这样就太简单了)。步骤:
使visual viewport和
的最终overflow值都为auto,从而可以出现滚动条。触发visual viewport和
的溢出。通过【为内容设置一个更大的尺寸】来做到。代码+注释:
test
结果:
自己在chrome中打开以上代码,能更加清晰地看出是怎么做到的。
也可以通过absolute的方式来溢出initial containing block:
test
结果:
自己在chrome中打开以上代码,能更加清晰地看出是怎么做到的。
如何看出某个滚动条是属于哪个元素的?
通过Chrome DevTools就可以看出滚动条的所属元素。
前面已经说过,滚动条的位置在元素的border与padding之间。当你使用Chrome DevTools选中某个元素,发现滚动条恰好在高亮区域(border)内部时,滚动条就属于当前元素。
要判断滚动条是否属于visual viewport,首先先将右边、下边的滚动条分别滚动到最下、最右(这一步很重要,它保证没有内容藏在滚动条下面)。然后,Ctrl+Shift+C
选择右边或下边的滚动条,如果高亮的区域不包含这个滚动条,就说明这个滚动条不属于任何元素,也就是属于visual viewport。
以上是“css溢出机制的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!