css进阶

css选择器

1.盒子模型

1.1边框(border)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css进阶</title>
    <style>
        .box{
            /*border: 1px solid red;*/
            height: 200px;
            width: 200px;
            border-top: 2px solid red;
            border-bottom: 20px double green;
            border-left: 10px dotted blue;
            border-right: 10px dashed red;
        }

    </style>

</head>
<body>
    <div class="box">我是盒子模型</div>
</body>
</html>

在这里插入图片描述
边框就是一个四边形的边框,这里其实很多格式,其实如果想要更多种查一下就好,当然用的最多的就是我注释的那个语句,那个很通用。

1.2内边距(padding)

在这里插入图片描述
首先直观的感受一下什么是内间距,就是一个盒子内部的在里面的间距,尤其注意,这个内间距是先定义一个盒子,然后不是在盒子内部取一部分作为内间距,而是把一个盒子的内部直接拓宽,所以说盒子正常是会拓宽的。所以做页面的时候尽量用外间距来使用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css进阶</title>
    <style>
        .box{
            background-color: green;
            height: 200px;
            padding: 200px 10px;
        }
    </style>

</head>
<body>
    <div class="box">我是盒子模型</div>

</body>
</html>

在这里插入图片描述
首先解释一下这个代码,其实padding可以传4个参数,和上面的边框相同,方向是上右下左的顺序,但是如果传两个参数,就默认为上等于下,右等于左,如果传一个参数就是默认都是这一个间距。

1.3外边距(margin)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css进阶</title>
    <style>
        .box{
            background: green;
            height: 200px;
            width: 1000px;
            padding: 0;
            margin-top: 200px;
            margin-left: 20px;
            margin-bottom: 20px;
            /*margin-right: 20px;*/
            border: 1px solid red;
        }
        .flag{
            height: 200px;
            width: 1000px;
            background-color: red;
            margin-top: 50px;
            /*border: 1px solid blue;*/
        }
        .box1{
            height: 100px;
            width: 80px;
            margin-top: 10px;
            background-color: blue;
        }
    </style>

</head>
<body>
    <div class="flag">我是参照物</div>
    <div class="box">
        <div class="box1">
        我是盒子1
        </div>
        我是盒子模型</div>

</body>
</html>

这个和之前的有所不同,主要是因为对于外间距来说,参照物很重要,这里就有几个问题,第一种情况,如果只有两个盒子,都是没有外边框的话,那么假如第一个盒子定义的下边距为50px,第二个盒子的上边距为100px,那么这两个盒子的距离就是100px,他们之间取得是最大值而不是相加的值。第二个问题就是如果存在嵌套盒子的情况,而外面的盒子没有边框的话,那么其实定义这个盒子的整体位置的其实是小盒子,所以为了避免麻烦,尽量在外面的盒子上加上边框,这样出错的概率就会变小很多。

2.浮动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动</title>
    <style>
        .box{
            border: 10px solid red;
        }
        .box>.box1{
            width: 100px;
            height: 100px;
            /*float: left;*/
            background-color: green;
        }
        .box>.box2{
            width: 100px;
            height: 100px;
            /*float: left;*/
            background-color: blue;
        }
        .box>.box3{
            width: 100px;
            height: 100px;
            /*float: left;*/
            background-color: #695DC7;
        }
    </style>

</head>
<body>
   <div class="box">
       <div class="box1">我是盒子一</div>
       <div class="box2">我是盒子二</div>
       <div class="box3">我是盒子三</div>
   </div>

</body>
</html>

首先解释一下什么是浮动,浮动就是对一个div盒子来说,浮动会改变盒子正常的文档流,对于浮动最经典的操作就是一列变成一行,上面的代码我是把浮动注释掉了的,就是想看看原来是什么样子的。
在这里插入图片描述
原来就是这个样子的。
当然我把注释放开之后是什么样子的呢。
在这里插入图片描述
你会发现,好像和我们想象的不太一样呀,为啥会这个样子的呢,因为我们说过浮动脱离了正常的文档流,这样的话,对于边框而言就找不到限制边框的东西啦,所以说就变成这个样子了。那我们怎么改这个东西呢,方法有很多,我就写一个最推荐的方法吧。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动</title>
    <style>
        .box{
            border: 10px solid red;
        }
        .box>.box1{
            width: 100px;
            height: 100px;
            float: left;
            background-color: green;
        }
        .box>.box2{
            width: 100px;
            height: 100px;
            float: left;
            background-color: blue;
        }
        .box>.box3{
            width: 100px;
            height: 100px;
            float: left;
            background-color: #695DC7;
        }
        .clearfix::after{
            display: block;
            clear: both;
            content: "";
        }
    </style>

</head>
<body>
   <div class="box clearfix">
       <div class="box1">我是盒子一</div>
       <div class="box2">我是盒子二</div>
       <div class="box3">我是盒子三</div>
   </div>

</body>
</html>

这个就是改完的代码,主要就是clearfix,这就是相当于一个class,写完放在标签中就可以,解释一下里面是什么意思,display:block就是让float变成块级元素,其实本来的div应该是块级元素,但是因为加入float之后就不是块级元素了,所以用这个重新变成块级元素,这样边框就有了作用。clear就是字面的意思,全部清空,content就是不填内容,我试过了,如果你在content加入内容,就会在下面在开辟一个小块,然后输出内容。
在这里插入图片描述
你甚至可以通过样式控制来实现这个模块的改写。当然主要是实现行变成块的功能。

3.定位

首先说明几个概念,绝对定位和相对定位,绝对定位是脱离文档流的,相对定位是不脱离文档流的,也就是说相对定位是不影响其他布局的,而相对文档流是影响其他的网页布局的,而我们经常看到的小广告用的是固定定位,其实属于绝对定位。但是这个比较特殊,这个fixed是相对于你的浏览器的,也就是说无论你怎么滑动,都是在你当前页面的哪个固定的位置。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>定位</title>
    <style>
        .box{
            border: 10px solid red;
            width: 1000px;
            height: 1000px;
        }
        .box>.box1{
            width: 100px;
            height: 100px;
            background-color: green;
            position: fixed;
            right: 100px;
            bottom:100px;
        }     
    </style>

</head>
<body>
   <div class="box ">
       <div class="box1">我是盒子一</div>
   </div>

</body>
</html>

在这里插入图片描述
就是这样的,无论你怎么滑动你的鼠标,你都能发现这个绿色的小块还在那个位置。

3.1相对定位(relative)

前面用了一个最通俗易懂的小例子说明了什么是固定定位,现在说的是相对定位,主要还是看效果和代码吧

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>定位</title>
    <style>
        .box{
            border: 10px solid red;
            width: 1000px;
            height: 1000px;
        }
        .box>.box1{
            width: 100px;
            height: 100px;
            background-color: green;
            position: relative;
            left: 100px;
            /*bottom:100px;*/
        }
        .box>.box2{
            width: 100px;
            height: 100px;
            background-color: blue;
        }
       
    </style>
</head>
<body>
   <div class="box ">
       <div class="box1">我是盒子一</div>
       <div class="box2">我是盒子二</div>
       <!--<div class="box3">我是盒子三</div>-->
   </div>

</body>
</html>

在这里插入图片描述
在这里插入图片描述
上面的是没有使用相对定位的,下面是使用了相对定位的。说明了什么呢?说明了使用了相对定位之后不会改变改变其他的网页布局,也就是说在改编位置前,其实前面还是有一个东西在占有地方。

3.2绝对定位(absolute)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>定位</title>
    <style>
        .box{
            border: 10px solid red;
            width: 1000px;
            height: 1000px;
        }
        .box>.box1{
            width: 100px;
            height: 100px;
            background-color: green;
            position: absolute;
            left: 100px;
            /*bottom:100px;*/
        }
        .box>.box2{
            width: 100px;
            height: 100px;
            /*float: left;*/
            background-color: blue;
        }
       
    </style>

</head>
<body>
   <div class="box ">
       <div class="box1">我是盒子一</div>
       <div class="box2">我是盒子二</div>
       <!--<div class="box3">我是盒子三</div>-->
   </div>

</body>
</html>

在这里插入图片描述
是这个样子,这里我没有使用浮动,但是他改变了。这就是绝对定位。

3.3使用时候使用法则

其实使用的法则,总结一句话就是父相子绝,就是如果是对于那种div嵌套两个盒子来说,尽量对于父亲盒子要用到相对定位,对于子盒子可以使用绝对定位,这样的话,可以防止盒子因为改变而导致页面出项问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值