06.定位

作用:解决元素的排列问题;通过定位可以将元素摆放到任意位置

分类:

1默认定位

a)默认情况下,块元素垂直排列,行内元素水平排列
b)这个默认排列的规律称为流定位,是默认的排序方式

流:元素水平或垂直排列而形成的队伍

2特殊定位

a)浮动定位:可以让块元素左右排列
b)相对定位:让元素以自己为目标产生一定偏移
c)绝对定位:让元素以父亲为目标产生较大的偏移
d)固定定位:让元素以窗口为目标产生巨大的偏移

浮动定位:

1. 分类:

左浮动:让块按照正序左右排列

右浮动:让块按照倒序左右排列

如果最终不需要保留父元素的边框,直接在叔叔上消除影响即可,如果最终需要保留需要保留父元素的边框,在其内部增加一个空块,并在此块上消除影响。

2.步骤:

目标离队(流),

目标的弟弟跟进,目标浮动到左侧、右侧

<style>
    .d0,p{ width:400px; border: 1px solid #aaa; }
    .d1,.d2,.d3{ width:100px; height:100px; margin:10px; }
    .d1{ background-color: #ff0000; }
    .d2{ background-color: #00ff00; }
    .d3{ background-color: #0000ff; }
    .d1,.d2,.d3{ float:right; }
    .d4{ clear:right; }         <!-- 消除浮动影响 -->
</style>
<body>
    <div class=”d0”>
    <div class=”d1”></div>
    <div class=”d2”></div>
    <div class=”d3”></div>
    <!-- 仅用来消除浮动影响 -->
    <div class=”d4”></div>
    </div>
    <p>floating and watching</p>
</body>

偏移:

以任意边为基准,向中心方向偏移为正数

left:20px; 以左边为基准,向中心偏移20px,即向右偏移20px

top:-60px; 以上边为基准,向中心偏移-60px,即向上偏移60px

相对定位:

以自身为目标偏移

偏移后元素原来的位置不释放

position:relative

元素不脱离流(队伍)

case: photo wall

<style>
    body{background-color: #066; }
    ul{ 
        width:780px; 
        margin:20px auto;  
        list-style-type: none ;         ——去掉列表左侧的符号
        padding: 0;                 ——将列表左侧的内边距去掉
        }
    li{
        border:1px solid #ccc;
        width: 218px;
        margin: 10px;
        padding: 10px;
        float: left;
        background-color: #fff;
    }
    p{ text-align: center; }
    /*鼠标悬停时,让li偏移,实现一个抖动的效果*/
    li:hover{
        position: relative;
        left: 2px;          
        top: -20px;         
    }
</style>
<body>
    <ul>
        <li>
            <img src=”image1.jpg”/>
            <p>first photo</p>
        </li>
        <li>
            <img src=”image2.jpg”/>
            <p>second photo</p>
        </li>
        <li>
            <img src=”image3.jpg”/>
            <p>third photo</p>
        </li>
        <li>
            <img src=”image4.jpg”/>
            <p>fourth photo</p>
        </li>
        <li>
            <img src=”image5.jpg”/>
            <p>fifth photo</p>
        </li>
        <li>
            <img src=”image6.jpg”/>
            <p>sixth photo</p>
        </li>
    </ul>
</body>

绝对定位:

以带有position的父辈为目标偏移

若父辈都有position,则采用就近原则

若父辈没有position,则以body为目标

position:absolute;

以谁为目标就在谁上面加position

case:

<style>
    div{ 
        border: 1px solid red;
        width: 318px;
        position: relative;     ——仅声明定位,不设置偏移量,位置不受影响
     }
    p{ 
        position: absolute;
        bottom: 50px;
        width: 318px;
        background: #fff;
        text-align: center;
     }
    div{ height: 318px; }
</style>
<body>
    <div>
        <img src=”img1.jpg”/>
        <p>absolute</p>
    </div>
</body>

固定定位:

以浏览器窗口为目标偏移

偏移后元素的位置释放(脱离流)

position:fixed;

元素需要挂在窗口上永远不动,则采用固定定位

case: Top按钮挂在页面右下角

<style>
    div{ 
        border/width/line-height/right/bottom/text-align:
        position: fixed;
    }
</style>

如何选择定位

  • 固定:是否想将元素挂在窗口上

  • 浮动:是否想将块元素左右排列

  • 相对:位置是否释放,偏移量小

  • 绝对:超过15s没想出来,一般就是绝对定位

注意:

浏览器渲染网页的规则:

  1. 父元素高度自适应,只以流中元素的高度为准
  2. 浏览器认为文字很重要,会想办法将文字显示完整。

相对、绝对、固定定位的联系:

区别:在偏移时所选择的目标不同

相同点:偏移时所设置偏移量的方式相同

left:2px ; top: -10px ; 向右偏移:2px,向上偏移:10px;

堆叠顺序:

z-index: value; value越大,表示离用户越近,

case:照片重叠,悬停显示

<style>
    div {
        width/height/margin/background-color:
        positive: relative;         ——一div中心为基准
    }
    img { positive: absolute; }
    .i1{ left/top }
    .i2{ left/top }
    .i3{ left/top }
    img: hover {
        z-index: 999;               (——可能是z坐标)
    }
</style>
<body>
    <div>
        <img src=”1.jpg” class=”i1”/>
        <img src=”2.jpg” class=”i2”/>
        <img src=”3.jpg” class=”i3”/>
    </div>
</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值