position(static-relative-absolute-fixed),margin(top-right-bottom-left),top-right-bottom-left

最近写css遇到一些问题,所以准备写下来捋一下思路。

1.position=satic下看margin的使用。(top-right-bottom-left在这种case下无效)

1-1)margin

a,margin值为具体的px

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .container{
            border: 1px solid blue;
            padding-left: 100px;/*设置父元素的padding为了明显子元素的包含块区域*/
            background: darkgoldenrod;
        }
        .inner{
            width: 200px;
            height: 200px;
            background: red;
            margin-left: 100px;/*相对于包含块移动,static的包含块为父元素的content边界以内
        }
    </style>
</head>
<body>
<div class="container">
    <div class="inner">
    </div>
</div>
</body>
</html>

结果如图,

b,margin值为百分比

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .container{
            border: 1px solid blue;
            padding-left: 100px;
            background: darkgoldenrod;
        }
        .inner{
            width: 200px;
            height: 200px;
            background: red;
            margin-left: 50%;
        }
        .half{
            width: 50%;
            height: 100px;
            background: yellow;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="inner">
    </div>
</div>
<div class="half"></div>
</body>
</html>

margin仍然是相对于包含块移动(以包含块左上角为原点移动),移动的值是父元素的宽度的百分比(如,50%)。

结果如下图,为了明显移动的情况,我在底部添加了一个宽度50%的div做对比。

2.position=relative.由于top和margin-top的百分比情况下容易导致问题,所以这里讨论时会同时看top和left两个边。

2-1)margin

a,margin值为具体px

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .container{
            border: 1px solid blue;
            padding-left: 100px;
            padding-top: 100px;
            background: darkgoldenrod;
        }
        .inner{
            position: relative;
            width: 200px;
            height: 200px;
            background: red;
            margin-left: 100px;//relative元素的包含块也是父元素的content边界以内区域
            margin-top: 100px;
        }
        /*.half{*/
        /*width: 50%;*/
        /*height: 100px;*/
        /*background: yellow;*/
        /*}*/
    </style>
</head>
<body>
<div class="container">
    <div class="inner">
    </div>
</div>
<!--<div class="half"></div>-->
</body>
</html>

结果如图,margin依然是相对于包含块做移动

b,margin值为百分比

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .container{
            width: 800px;
            height: 400px;
            border: 1px solid blue;
            padding-left: 100px;
            padding-top:100px ;
            background: darkgoldenrod;
        }
        .inner{
            position: relative;
            width: 200px;
            height: 200px;
            background: red;
            margin-left: 50%;
            margin-top: 50%;//父元素height=width(400px)+padding-top(100px)=500px.marin-top相对于包含块使子元素向下移动margin-top(父元素宽度的50%,即400px)
        }
        .half{
            width: 400px;
            height: 100px;
            background: yellow;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="inner">
    </div>
</div>
<div class="half"></div>
</body>
</html>

结果如图,margin依然是以包含块左上角为原点移动,不过margin-left/margin-top的值均是父元素宽度的百分比(记得这里margin-top也是相对于父元素的宽度而不是高度,同理padding).不过也并不是绝对的,当设置了writing-mode为纵向书写时,比如-webkit-writing-mode: vertical-lr;此时按百分比书写的margin就会参照容器的高度来计算了

2-2)top-right-bottom-left

a,top和left为具体值(px)

b,top和left为百分比

3.position=absolute.

时间: 2024-08-10 12:42:09

position(static-relative-absolute-fixed),margin(top-right-bottom-left),top-right-bottom-left的相关文章

10步掌握CSS布局定位: position static relative absolute float

无意中看到此文,因作者强调其中避开了浏览器bug/分歧,所以个人认为值得借鉴. 不才仔细看了此文,自觉受益匪浅 ,屡试不爽,佩服作者对css布局的精炼总结,顺便小译了一段, 英文水平有限,且个人通常写写php,对css了解不深却有点兴趣,错误之处还请指正. 个人没有空间,代码中的css文件和js保留了完整路径:http://www.barelyfitz.com/screencast/html-training/css/positioning/ 原文地址:http://www.barelyfitz

【前段开发】10步掌握CSS定位: position static relative absolute float

希望能帮到需要的人,转自:http://www.see-design.com.tw/i/css_position.html 1. position:static 元素的 position 屬性默認值為:static,即該元素出現在文檔的常規位置,不會重新定位. 通常此屬性值可以不設置,除非是要覆蓋之前的定義. #div-1 { position:static; }    .    .    .    .    .    .

CSS position relative absolute fixed

position属性absolute与relative 详解 最近一直在研究javascript脚本,熟悉DOM中CSS样式的各种定位属性,以前对这个属性不太了解,从网上找到两篇文章感觉讲得很透彻,收藏下来,唯恐忘记. 一.解读absolute与relative 很多朋友问过我absolute与relative怎么区分,怎么用?我们都知道absolute是绝对定位,relative是相对定位,但是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对于什么地方而言的呢?那他们又有什么样的

CSS 浅析position:relative/absolute定位方式

一.position:relative 相对定位 分两种情况分析:· 无 position: relative:· 有 position: relative. 代码如下图: 显示效果如下图:  我们给 box4加入 position: relative属性.  * 如果元素加上 position: relative 属性; 元素默认为 块级元素.  * 如果未给出TRBL(top, right, bottom, left), 元素位置不变, 样式不变.  * 给出 TRBL时,是相对于 之前的位

对于position:relative,absolute,fixed的见解:

1.switch--fixed,div脱离父元素,top,left,right,bottom都是相对于body,自己原来的位置不存在,即不占父元素位置了 2.switch--relative,div相对于自己原来的位置,还是会占父元素位置 3.switch--absolute,div相对于父元素的位置(要求父元素必须有位置属性,逐级网上寻找),不占父元素位置 原文地址:https://www.cnblogs.com/maidongdong/p/8295822.html

CSS定位:相对定位、绝对定位和固定定位(relative absolute fixed)

相对定位:position:relative; 不脱离文档流,参考自身静态位置通过top,bottom,left,right定位,并且可通过z-index进行层次分级. 绝对定位:position:absolute; 脱离文档流,通过top,bottom,left,right定位,选取其最近的父级元素进行定位,当父级元素position为static时,absolute元素将以body坐标原点进行定位,可通过x-index层次分级. 固定定位:position:fixed; 这里他所固定的对象是

css position: relative | absolute | static | fixed详解

static(静态):没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级. fixed(固定定位) 这里所固定的参照对象是可视窗口而并非是body或是父级元素.可通过z-index进行层次分级. CSS2.0 HandBook上的解释: 设置此属性值为 absolute 会将对象拖离出正常的文档流绝对定位而不考虑它周围内容的布局.假如其他具有不同 z-index 属性的对象已经占据了给定的位置,他们之间不会相互影响,而会在同一位置层叠.此时对象不具有外边距( margin )

css中position属性(absolute/relative/static/fixed)

css中position属性(absolute/relative/static/fixed): position:static   无特殊定位,是html元素默认的定位方式,对象遵循正常文档流.top,right,bottom,left等属性不会被应用. position:relative 对象遵循正常文档流,相对的是它原本在文档流中的位置而进行的偏移,但将依据top,right,bottom,left等属性在正常文档流中偏移位置.而其层叠通过z-index属性定义. position:abso

HTML中的布局方式:absolute、relative、fixed、static

在CSS中关于定位的内容是: position:relative | absolute | static | fixed     static(静态) 没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级,这是默认值.    relative(相对定位) 对象不可层叠.不脱离文档流,参考自身静态位置通过 top,bottom,left,right 定位,并且可以通过z-index进行层次分级.    absolute(绝对定位) 脱离文档流,通过 top,bottom,left

布局模型 之 层模型(position的relative、absolute与fixed区别?)

css的布局模型分为流动模型(Flow).浮动模型(Float).层模型(Layer). 浮动模型(Float)和层模型(Layer)有什么显著区别?     浮动模型(Float):浮动是让某元素脱离文档流的限制,在浮动框之前和之后的非定位元素会当它不存在一样,可能沿着它的另一侧垂直流动:浮动的元素仍然会占据文档流的物理空间.关于浮动模型的详细说明请看另一篇文章的介绍.http://ycgit.blog.51cto.com/8590215/1958452 层模型(Layer):设置为层模型的元