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

margin详解

时间:2023-03-31 13:11:47 CSS

margin属性指定框的边距区域的宽度。margin简写属性立即设置margin,而其他margin属性只设置它们的边。这些属性适用于所有元素,但非替换内联元素上的垂直边距将不起作用它仅适用于水平尺寸一侧具有固定宽度的自适应布局(未修改版本)。marginandoccupationsizemarginandoccupationsize我们修改图片的margin-bottom值,容器的高度随着margin值block/inline-blocklevel的变化而变化,无论是否设置了width/height值,所有元素都适用.适用于水平和垂直滚动。容器中上下边距的边距和百分比都是普通元素。普通元素的百分比边距是相对于容器宽度计算的绝对定位。定位元素的百分比边距是相对于第一个祖先固定元素的宽度计算的宽度(相对/绝对/固定)2:1自适应矩形边距OverlappingCSS,两个或多个框(可能但不一定是兄弟)相邻的边距将合并为一个边距。以这种方式组合Margin称为collapse,由此产生的组合margin称为marginoverlaps。CSS中重叠的条件:都属于流入(In-flow)块级框,并且在同一个块级格式化上下文(BFC)中没有行框,没有间隙,没有填充和没有边框将它们分开都属于vertically-adjacentboxedges(垂直相邻的盒子边缘)overlappingadjacentsiblingelementsoverlappingparentofadjacentsiblingelements需要注意的是,overflow:hidden仅在父子元素margin与first/重叠时有效last子元素parent和first/last子元素,相邻兄弟元素重叠时无效。margin-top重叠父元素非块状格式化上下文元素父元素没有设置border-top父元素没有padding-top值父元素和第一个子元素没有内联元素分隔margin-bottomOverlapping以上四个例子可以all导致margin-bottomOverlap,其他父元素没有height,min-height,max-height限制空块元素margin重叠空块元素margin重叠空块元素margin重叠其他条件元素没有border设置元素没有padding值没有内联元素和没有height或min-heightmarginoverlap的计算规则是正负值重叠,正负值相加,最负值就是marginoverlap的意思。会和其他兄弟标签1:2的关系,排版不自然。所以边距重叠主要是为了解决文字排版和排版的问题。marginoverlap是在表格中练习的,使用.list{margin-top:15px;margin-bottom:15px;},比.list{margin-top:15px;}更健壮,最后一个元素的移除或位置交换不会破坏原始布局,即使没有设置width或者height,也会自动填充例2,作为绝对定位元素,width自动填充父级第一个定位元素容器例3,此时如果设置了width或者height,则自动填充featurewillbedisabledCoverexample4,setmargin-right:100px,margin-left:auto,则margin-left为剩余空间的大小,即width-margin-right例5,两边设置margin:auto,将剩余空间平分。左右设置自动,图像水平居中。因为img是行内水平元素,所以需要设置display:block属性。这样即使没有宽度,元素也会占据整个容器来改变流向。使用margin:auto垂直居中使用margin:auto绝对水平和垂直定位。上面例子中绝对定位的水平和垂直居中的原理是IE8+需要的。正常流程中的负保证金值,设置margin-top也是一样。当设置margin-right:-20px;时,元素本身不会移动,后面的元素会向元素左边移动20px。设置margin-bottom也是如此。在指定宽度的情况下,如果margin-left或margin-right设置为负值,则其宽度会在元素对应的方向上增加。相对定位元素的margin负值是相对定位元素的margin在设置margin-bottom/top时表现如上,需要注意的是设置了position:relative属性的元素会被覆盖以下元素(后一个元素没有定位和Z索引)。float元素的负marginfloat和marginDemo设置float的margin,当设置margin为负值时,表现如下:如果设置的margin的方向与float的方向相同,则元素会移动相应方向的相应距离。如果设置margin的方向与float的方向相反,则元素不移动,元素前后的元素都会向元素的方向移动相应的距离。第二个示例是一个固定宽度的双列流体布局,通过使用负边距值和浮动实现。使用负边距值的绝对定位VerticalCenterAlignmentVerticalCenterAlignmentDemo将元素的absolute、left、top设置为50%;那么margin-top是负高度的一半,margin-left是负宽度的一半。这种方法的缺点是宽高需要固定。Useaborderedlistlayoutwithanegativemarginforaborderedlistlayout这里使用margin和padding之间的偏移量使边界重合。间隔列表布局使用margin的负值,以及间隔列表布局和两端对齐的双侧对齐的两个例子。当元素没有固定宽度时,负值会增加自身的宽度。一个实现间隔列表布局的例子,其中需要去掉ul的样式,在ul中设置一个负的margin值来抵消li中的margin值。第二个示例实现了两端对齐且一侧具有负边距值的自适应布局。修改版,一侧定宽自适应布局,DOM顺序正确第一个例子的重点是为左边的div嵌套一个父div,并设置宽度为100%,这样当容器宽度变化时,leftdivautomatically适配第二个例子,我们用同样的原理让DOM顺序和最终的视觉顺序保持一致,也就是上面第一个固定宽度的自适应布局的修改版。EqualheightcolumnlayoutEqualheightcolumnlayoutDemoEqualheight列布局主要是利用padding会显示背景色的原理。先给div一个巨大的负margin值造成塌陷,然后用padding的正值填充塌陷,从而实现多列等高布局的半遮挡标题。本Demo示例利用了relative属性会显示在后面的元素上的特性,配合margin的负值来抵消HolyGrail布局。在DemoHolyGrail布局的HolyGrail布局中,需要注意的是三列都使用了浮点数,clear:both都需要用来清除浮点数,影响左右两列。需要使用position:relative和负边距来达到三列一行的目的。父容器需要指定与左右两列宽度相同的padding来容纳左右两列。改进版的圣杯布局,区别在于对中间栏目内容不被遮挡的处理。圣杯布局使用padding和相对定位来处理,而双飞翼布局则在中间的列中添加一个div边距来处理css。深入理解margin理解并使用CSSmarginnegativevalue负边距值详解