2024年9月cssposition和margin区别(css当中的margin与position定位问题)
⑴cssposition和margin区别(css当中的margin与position定位问题
⑵css当中的margin与position定位问题
⑶真的不太好描述,这也算是css中最麻烦的样式了简单的说下absolute一般是要在relative里面用的,是相对于relative定位的比如父节点relative,那么子节点用absolute后,再配合top,right,left,bottom来实现定位margin是以自身为中心,向外扩散,这扩散的部分不属于自己的,比如width:,margin:px;那么实际宽度还是px。你可以试试《imgsrc=用了margin:px,background:#ff;会发现图片没有背景颜色如果换成《imgsrc=用了padding:px,background:#ff;会发现有像素的红色背景padding就是以自身为中心,向外扩大,扩大的部分,是自己的,比如width:,padding:px;那么实际宽变成了px囧,可能描述得也挺晕的,不可言传呀,可以用PS画图描述,懒得弄了
⑷css中margin-top和top有什么区别
⑸margin-top:功能为设置元素的上外边距。
⑹top:规定元素的顶部边缘。
⑺margin-top:允许使用负值。定义固定的上外边距。默认值是。
⑻top:定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。
⑼margin-top:所有主流浏览器都支持margin-top属性。
⑽top:如果“position“属性的值为“static“,那么设置“top“属性不会产生任何效果。
⑾参考资料来源:百度百科-CSStop
⑿参考资料来源:百度百科-CSSmargin-top
⒀请教前端排版技巧,margin和position的区别
⒁根本没有可比性,你要说margin和padding比还差不多;margin是内容和其他元素之间的距离,position是一个决定定位的属性,本身不产生距离
⒂position、float、margin的区别
⒃position属性规定元素的定位类型。说明这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。默认值:staticJavaScript语法:object.style.position=“absolute“可能的值值描述absolute生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。元素的位置通过“left“,“top“,“right“以及“bottom“属性进行规定。fixed生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过“left“,“top“,“right“以及“bottom“属性进行规定。relative生成相对定位的元素,相对于其正常位置进行定位。因此,“left:“会向元素的LEFT位置添加像素。static默认值。没有定位,元素出现在正常的流中(忽略top,bottom,left,right或者z-index声明。inherit规定应该从父元素继承position属性的值。float属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在CSS中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。默认值:noneJavaScript语法:object.style.cssFloat=“left“可能的值值描述left元素向左浮动。right元素向右浮动。none默认值。元素不浮动,并会显示在其在文本中出现的位置。inherit规定应该从父元素继承float属性的值。margin简写属性在一个声明中设置所有外边距属性。该属性可以有到个值。说明这个简写属性设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度。块级元素的垂直相邻外边距会合并,而行内元素实际上不占上下外边距。行内元素的的左右外边距不会合并。同样地,浮动元素的外边距也不会合并。允许指定负的外边距值,不过使用时要小心。
⒄CSS里的margin和position:relative属性有什么区别啊!
⒅如果这里对黄色那个div用相对定位和margin的话,效果看起来是一样的。
⒆但如果给第一个蓝色的div设置margin的话,我们看到第二个黄色的被推往下面推了。
⒇而如果用相对定位的话是不会影响到其它元素的。
⒈也许这就是他们之间的最大区别。
⒉话说回来,如果不会影响其它元素的时候,我还是比较喜欢用margin的。
⒊CSS中的利用margin和position定位时的不同
⒋先来看例子吧:《HTML》《head》《style》.red{border:pxsolidred;}《/style》《/head》《body》《divstyle=“padding:px;width:px;“class=“red“》《divid=“a“class=“red“》AAAA《/div》《divid=“b“class=“red“》BBBB《/div》《/div》《/body》《/html》以上代码在浏览器中的显示效果如下:AAAABBBB下面通过position属性来把AAAA往上移动px,在head的style里面加入#a{position:relative;top:-px;}即:《HTML》《head》《style》.red{border:pxsolidred;}#a{position:relative;top:-px;}《/style》《/head》《body》《divstyle=“padding:px;width:px;“class=“red“》《divid=“a“class=“red“》AAAA《/div》《divid=“b“class=“red“》BBBB《/div》《/div》《/body》《/html》效果如下:AAAABBBB而如果通过margin-top:-px来调整的话,即:《HTML》《head》《style》.red{border:pxsolidred;}#a{margin-top:-px;}《/style》《/head》《body》《divstyle=“padding:px;width:px;“class=“red“》《divid=“a“class=“red“》AAAA《/div》《divid=“b“class=“red“》BBBB《/div》《/div》《/body》《/html》效果如下:AAAABBBB看到不同了吧,用position属性来调整的时候,只是被调整的div移动了,而下面的div不会动;用margin属性调整就不同了,下面的div也会相应的向上移动px,但是并不影响下面的padding值。
⒌CSS中的确我们发现position:absolute和margin:pxauto
⒍position:absolute;绝对定位是相对于他的祖先元素改变left,top,right,bottom值来偏移自己。margin:auto;也是相对他父标签的宽让自己左右剧中对齐。这并不是该或不该就不要这些属性的,因为在页面相同的效果可以用不同的属性方式实现。只是个人习惯问题。至于节约调试时间这不是主要。而是浏览的用户体验和搜索引擎的抓取。。。。
⒎css中left与margin-left和position:relative与position:absolute的区别
⒏主要区别可以总结为:、left指令要生效,必须其有position:relative或者position:absolute的定位才能执行;margin-left则不需要。、position:relative只能定位在当前位置,受其父div位置的控制;position:absolute可以使div脱离文档源,位置由上一个有定位的祖div控制。为了方便观察,我把背景颜色换了,然后把系统自带的内边距外边距都取消了具体输入*{background-color:#eee;?margin:px;?padding:px;}.生成一个div,输入{border:pxredsolid;?height:px;?width:px;?left:px;}其效果图为:这时候输入了left=px,但是div并没有移动,这是由于他没有被定位,所以left指令无法实行。.但是如果对这个div进行相对定位或者绝对定位,那么它会定位在他所出现的位置,然后对left或top的指令再进行移动。这次我们把position:absolute/relative加上,输入{border:pxredsolid;??height:px;?width:px;?left:px;position:relative;},其效果图为:这时候他就会先根据他一开始的定位发生移动,left的指令就生效了。.接下来,把left指令,换为margin-left,把position的指令删除,输入{border:pxredsolid;??height:px;?width:px;margin-left:px;},其效果图为:这时候它就往右边移动了px,也就是距离左边距px。可以得出其指令并不需要position位,它直接规定边距的距离。.最后我们把position;left;margin-left都加上,输入{border:pxredsolid;??height:px;?width:px;?left:px;position:relative;margin-left:px;},其效果图为:这时候两个指令都生效了。首先margin-left:px,先让这个div距离左边距px,然后position:relative;的指令使div定位在这个位置,最后left:px;的指令,使div再距离所定位的位置px,所以一共离左边距px。创建以下三个div:《divid=“father“》????《divid=“son“》??????《divid=“grandson“》《/div》????《/div》??《/div》、在style分别输入#father{border:pxredsolid;??height:px;?width:px;?left:px;position:relative;}#son{border:pxblacksolid;??height:px;?width:px;margin-left:px;?}#grandson{border:pxbluesolid;??height:px;?width:px;left:px;?position:relative;?}其效果图为:这时候#son并没有position,但是#grandson的position为relative,所以他只能对当前的定位(由于他是father与son的子文件,所以会跟他们进行相关的位移后,再实施它自己的指令进行位移,所以一开始的定位应该在黑色框内的右上角进行位移。、保持其他参数不变,然后把#grandson的position:relative给为position:absolute,具体为:#father{border:pxredsolid;??height:px;?width:px;?left:px;position:relative;}#son{border:pxblacksolid;??height:px;?width:px;margin-left:px;?}#grandson{border:pxbluesolid;??height:px;?width:px;left:px;?position:absolute}其效果图为:此时,由于#grandson的position为absolute,即脱离文本源,就是他不会受没有定位的父div的影响,就是说其定位会忽略没有position定位的div,而直接找到最近一个有定位的祖div,再进行定位,所以它直接找到的是#father的定位,然后想对它定位后再进行left=px的指令。.要证明这一点很简单,我们再给#grandson生一个子divid=“ggson“这时候布局如图:在style输入:#father{border:pxredsolid;??height:px;?width:px;?left:px;position:relative;}#son{border:pxblacksolid;??height:px;?width:px;margin-left:px;?}#grandson{border:pxbluesolid;??height:px;?width:px;left:px;?position:absolute}#ggson{border:pxgreensolid;??height:px;?width:px;left:px;?position:absolute}其效果图为:#ggs的定位追踪到#grandson上,所以在其定位上做出left=px的指令。这时候我们在吧#grandson的position给删掉,输入:#father{border:pxredsolid;??height:px;?width:px;?left:px;position:relative;}#son{border:pxblacksolid;??height:px;?width:px;margin-left:px;?}#grandson{border:pxbluesolid;??height:px;?width:px;left:px;}#ggson{border:pxgreensolid;??height:px;?width:px;left:px;?position:absolute}这时的效果图为:由于#son与#grandson上面都没有position的定位了,所以#ggson只能定位到father的position上面。最后我们再把#ggson的position:absolute改为relative,输入:#father{border:pxredsolid;??height:px;?width:px;?left:px;position:relative;}#son{border:pxblacksolid;??height:px;?width:px;margin-left:px;?}#grandson{border:pxbluesolid;??height:px;?width:px;left:px;}#ggson{border:pxgreensolid;??height:px;?width:px;left:px;?position:relative;}其效果图为:这时候他就不会找祖div的position,其定位只接受其父div控制,只能定位在所在的位置。
⒐在CSS中,用float和position的区别是什么
⒑CSS布局浮动(float)和定位(position)属性的区别:
⒒postion:relative是子块级元素面向父级元素的相对定位,定位关键字使用left/right/top/bottom。兄弟块元素之间相对进行定位,但是position移动后,原位置依然保留。而且随后的兄弟块元素定位基于被移走前的位置。
⒓float:right/left是子块级元素流集合面向父级元素的定位,定位的关键词使用margin/padding。兄弟块元素之间进行相对的定位均基于移动后的新位置进行重新渲染,可以重叠,原位置被清空。
⒔二者之中最大的差别就是位置保留。
⒕同时应用position:absolute和float:left会导致清除浮动无效(position:relative则可以清除浮动。
⒖常用的清除浮动的方法有两种:
⒗通过在容器中添加一个标签,设置该标签的样式为clear:both
⒘容器设置overflow:hidden
⒙《divstyle=“background:#fff;width:%;overflow:hidden;“》??《divstyle=“float:left;position:absolute;“》我是DIV《/div》??《divstyle=“clear:both;“》《/div》《div》效果:
⒚请教前端排版技巧,margin和position的区别
⒛margin:是为元素设置外边距;position:是给元素定位;两者毫无相似。