当前位置: 首页 > Web前端 > CSS

css基础知识点总结

时间:2023-03-30 17:50:04 CSS

BFC(block-levelformattingcontext)是页面中一个独立的渲染区域。并且有一套渲染规则,决定了它的子元素将如何定位,以及它们与其他元素的关系和交互。具有BFC特性的元素可以看成是一个隔离的独立容器,使BFC内部的元素与外部元素相互隔离,使得内部元素和外部元素的定位不会相互影响。IE浏览器是hasLayout,一般可以通过zoom:(除normal以外的任意值)触发。hasLayout是IE浏览器渲染引擎的内部组件。在InternetExplorer中,元素要么计算其自身内容的大小和组织,要么依赖父元素来计算内容的大小和组织。为了调整这两个不同的概念,渲染引擎使用了hasLayout这个属性,可以是true也可以是false。当一个元素的hasLayout属性为真时,我们说这个元素有布局(Layout)。当您拥有布局时,它会负责调整自身和可能的后代的大小和定位,而不是依赖祖先来完成这项工作。如何实现BFC(BlockFromattingContext)根元素()浮动元素(element'sfloat)绝对定位元素(element'spositionisabsoluteorfixed)inlineblockelement(元素的显示是inline-block)**tableunitcell(元素显示为table-cell,HTML表格单元格默认为该值)表格标题(元素显示为table-caption,HTML表格标题默认为该值)overflow属性的值display值为flow-root的元素的不可见的弹性元素(display是flex或inline-flex元素的直接子元素)grid元素(display是grid或inline-grid元素的直接子元素)布局规则普通文档流式布局规则:浮动元素不会显示【其他计算父元素高度的框会忽略此元素,但其他框中的文字仍会为此元素腾出空间并环绕它。]非浮动元素会覆盖浮动元素的位置,margin会传给parent。两个相邻元素的上边距和下边距将重叠。浮动元素的位置会被覆盖(非浮动元素触发BFC)margin不会传递给parent(父元素触发BFC)两个相邻元素的上下边距不会重叠(加一个父元素之一,并让其父元素触发BFC)双飞翼Layout.content{float:left;width:100%;}.main,.left,.right{height:200px;行高:200px;文本对齐:居中;字体大小:20px;颜色:#fff;}.main{margin-left:160px;右边距:110px;背景:绿色;}.left{浮动:左;左边距:-100%;宽度:150px;背景:红色;}.right{浮动:左;左边距:-100px;宽度:100px;背景:蓝色;

/div>
Right
.content[maincolumn]:向左浮动,宽度100%(让它占满宽度吧,那左右两边的图层呢?)。left[sub-column]:向左浮动,宽度150,左边框为-100%(这里重点是:在浮动的情况下,负的边框值会导致DIV上移,使用-100%会使它移动到最左边。).right【附加栏】:左浮动,宽度100px,左边框-100px1。道理同上,注意负左边框必须大于等于DIV的宽度,才能转到上一行;2.这里margin-left:-100px;而不是-100%是原因。我们希望它在右侧,但它是浮动的;3.第一行的宽度已经被中间的盒子占满了,第二行只能从左往右走;4.但是一旦我们给它设置了一个margin-left负值,它就开始向左移动,直到margin-left的绝对值大于等于它的宽度,于是它跑到顶部。5、但是需要注意的一点是:.rightbox设置margin-left为负值的前提是.left设置margin-left:-100%;总结:优点:比较经典的方式,通用,兼容性强,没有兼容性问题,支持主内容优先加载。缺点:元素脱离文档流,需要注意清除浮动,防止高度塌陷。同时多加了一层DOM结构,增加了渲染树生成的计算量。清除float.container::after{content:'';显示:块;字体大小:0;高度:0;行高:0;明确:两者;可见性:隐藏;}.container{//注意这里是为了兼容IE6和IE7浏览器,会触发hasLayoutzoom:1;}HolyGrailLayout.container{margin-left:160px;margin-right:110px;}.left,.main,.right{height:200px;行高:200px;文本对齐:居中;字体大小:20px;颜色:#fff;}.main{浮动:左;宽度:100%;背景:绿色;}.left{位置:相对;左:-160px;左边距:-100%;向左飘浮;宽度:150px;背景:红色;}.right{位置:相对;右:-110px;左边距:-100px;:blue;
右优点:相比双飞翼布局,结构更简单,没有多余的DOM结构层,还支持主内容优先加载缺点:元素和文件流转,注意清除浮动,防止高度崩塌。