前端小白的第一篇博客—CSS定位

CSS定位的一些个人理解

本人是还没有入门的技术小白,仅以此篇记录成长,欢迎大家一起讨论学习,也欢迎在评论区指出问题~~
言归正传啦,以下是关于CSS中定位的个人理解。

一、分类

在CSS中定位分为:static静止定位、relative相对定位、absolute绝对定位、fixed固定定位、inherit继承定位。本文主要讨论相对定位,绝对定位与固定定位。

二、应用

(1)相对定位

相对自己的原始位置定位
就是在没添加定位前,它已经占了一个位置了,应用相对定位后,是相对于它本来该在的位置上下左右移动。但是它之前的位置还是给它留着的。之前看到有人给相对定位比喻成进城打工的人,虽然进城了,但是老家还是有房子的,不会因为人进城打工,老家的房子就没了。下面引入代码,大家可以运行一下感受相对定位。

先做一些准备

<!DOCTYPE html>
<html>
    <meta charset="utf-8">
    <head>
        <style>
        *{
            margin: 0;/*去掉系统自带的一些边距*/
            padding: 0;
            }
        .big{/*为了看上去比较直观,我们定义了一个大盒子和小盒子*/
            width: 1000px;
            height:1000px;
            background-color: gray;
        }
         .small{
             width: 300px;/*定义一个边长为300像素的黄色小正方形*/
             height: 300px;
             background-color: yellow;
         }
        </style>
    </head>
    <body>
        <div class="big">
            <div class="small">
            </div>
        </div>

    </body>
    </html>

没加定位之前是酱紫的

没加定位

现在我们给黄色小正方形加入相对定位

 .small{
             width: 300px;/*定义一个边长为300像素的黄色小正方形*/
             height: 300px;
             background-color: yellow;
             position: relative;/*注意这里啦*/
             top:20px;
             left: 20px;
         }

运行出来是这样的啦可以看出相对于原来的位置挪动啦

在这里插入图片描述

(2)绝对定位

相对于最近的非static 定位的祖先元素定位
这听上去有点绕,难懂。首先,绝对定位是相对于祖先元素定位,祖先元素就是父元素,爷爷元素,太爷爷元素等等等等啦,总之就是上一级元素,在说相对定位的时候,灰色盒子就是黄色盒子的父元素。再者,这个祖先元素是非static的定位元素,那么就是说祖先元素要有定位,还不能是static定位,那我们可能会疑惑了,如果父元素没有定位怎么办??答案是找爷爷,也就是上级元素没有定位,就找上上级,那我们可能又有疑惑了,如果祖先元素都没有定位,那怎么办丫!!!答案是相对于body定位。这里要说一下,绝对定位之后,原来的位置就没有了,就像去城里打工的人赚钱了,举家搬迁到城里。
所以,现在情况很明朗了,绝对定位分为两种情况
1、祖先元素有定位(子绝父相
2、祖先元素没定位

先说第一种,在祖先元素有定位时,我们最常用的是子绝父相,及儿子是绝对定位,父亲是相对定位。

给之前的灰色大盒子添加相对定位,黄色盒子添加绝对定位

 .big{/*为了看上去比较直观,我们定义了一个大盒子和小盒子*/
            width: 1000px;
            height:1000px;
            background-color: gray;
            position: relative;/*这里这里*/
            top: 100px;
            left:150px;
        }
         .small{
             width: 300px;/*定义一个边长为300像素的黄色小正方形*/
             height: 300px;
             background-color: yellow;
             position: absolute;/*这里这里*/
             top:20px;
             left: 20px;
         }

就是这亚子的效果啦,小盒子始终是和大盒子保持相应的距离。

绝对定位

下面说祖先元素没有定位

.big{/*为了看上去比较直观,我们定义了一个大盒子和小盒子*/
            width: 1000px;
            height:1000px;
            background-color: gray;
            /*position: relative;
            top: 100px;
            left:150px;*/
            margin-top: 100px;/*这里加了边距是为了更直观的看出,小盒子不再是相对于大盒子定位了*/
            margin-left: 100px;
        }
         .small{
             width: 300px;/*定义一个边长为300像素的黄色小正方形*/
             height: 300px;
             background-color: yellow;
             position: absolute;
             top:20px;
             left: 20px;
         }

这里可以看出黄色方块不再根据灰色方块定位了,而好像是相对于浏览器左上角,其实严格来说并不是相对于浏览器,而是相对于body,相对于body要如何去理解呢,比如说一个文档,很长很长,浏览器中我们肯定是要借助于滚动条来浏览的,因为浏览器的窗口那么大,我们说的body就是浏览器里的文档,也可以说是文档里的内容。我们看到的关于左上角定位,其实也不是固定的,当我们把posision的值修改成bottom:20px;right:20px;就会变成右下角。

在这里插入图片描述

(3)固定定位

相对于浏览器(屏幕视口)定位
这里就是可能会容易和绝对定位的第二种情况混淆,其实区别是很大很大的,上面也说过了,绝对定位第二种情况是相对于内容,而固定定位是确确实实的相对于浏览器窗口。那么这种所带来的区别在视觉上会产生什么样的差异呢,就是绝对定位第二种情况会随着内容的滚动而滚动,但是固定定位不会,浏览器窗口就那么大,它就固定在那不动,不论内容滚动到哪儿,最形象的例子是屏幕底下的小广告,不管你内容翻到哪,它就像狗皮膏药一样赖在那。

这里主要说和绝对定位的区别,因为是动态的所以不发运行结果图啦~给大家一段代码,大家可以运行之后自行体会~

运行之后要滑动滚动条哦~~

<!DOCTYPE html>
<html>
    <meta charset="utf-8">
    <head>
        <style>
        *{
            margin: 0 ;
            padding: 0;
            }
         body{
                width: 1000px;
                height: 5000px;
            }
        .big{/*为了看上去比较直观,我们定义了一个大盒子和小盒子*/
            width: 1000px;
            height:1000px;
            background-color: gray;
            position: absolute;
            top: 100px;
            left:150px;
        }
         .small{
             width: 300px;/*定义一个边长为300像素的黄色小正方形*/
             height: 300px;
             background-color: yellow;
             position: fixed;
             bottom:20px;
             right: 20px;
         }
        </style>
    </head>
    <body>
        <div class="big">    
        </div>
        <div class="small">
        </div>

    </body>
    </html>

好啦~~定位就分享到这,其他类型的定位用的不多,所以就不赘述啦~
希望这篇文章可以帮助到大家,也希望自己可以逐渐成长起来~
本文如果有任何问题,欢迎评论区讨论交流~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章