CSS(四)---【链接美化、浮动布局、三种定位】

零.前言

本篇主要讲解<a>标签链接美化、页面的浮动布局,以及“相对定位”、“绝对定位”、“固定定位”三种定位。

关于其它请查看作者其它文章:

CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客

CSS(二)---【常见属性、复合属性使用】-CSDN博客

CSS(三)---【盒子模型、边框、外边距合并】-CSDN博客

一.CSS链接美化

链接可以使用:“colorfont-familybackground”等属性来设置样式。

一般而言我们更在意的是:“链接处于什么状态来设置不同的样式”。

为此我们可以使用:“伪类选择器”,通过对<a>标签的伪类选择,来实现不同状态的样式。

四种链接状态分别是:

  • a:link”:正常的,未访问的链接
  • a:visited”:用户访问过的链接
  • a:hover”:用户将鼠标悬停在链接上时
  • a:active”:链接被点击时

注意:

如果为多个链接状态设置不同样式时,需要遵循顺序规则:“a:hover必须在a:linka:visited之后。a:active必须在a:hover之后”。

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        a:link{
            color: red;
        }
        a:visited{
            color:  green;
        }
        a:hover{
            color: hotpink;
        }
        a:active{
            color: blue;
        }
    </style>
</head>
<body>
    <a href="#" target="_blank">测试链接</a>
</body>
</html>

效果:

点击前

鼠标移动到链接上时

点击时

点击后

有个小问题,就是当你之前点击过<a>标签的链接,并且在浏览器中保留着浏览记录,那么颜色将始终会是visited的样式(愁人)。

二.浮动布局

2.0简介

浮动属性用于创建浮动框,将其移动到一边,直到左边缘右边缘触及包含块或另一个浮动框的边缘,这样即可使得元素进行浮动。

语法

选择器{

        float:left/right/none;

}

使用场景:“当我们使用多个行内块元素摆放到一行时,彼此之间是会有空隙的,这时我们就可以使用浮动布局用来消除空隙”。

注意:

浮动是是相对于父元素浮动,只会在父元素内部移动

2.1浮动三大特性

  1. 脱标:脱离标准流
  2. 一行显示,顶部对齐
  3. 具备行内块元素特性

2.2浮动的使用

看下面一个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .father{
            background-color: aquamarine;
            height: 100px;
            border: 3px solid brown;
        }
        .left{
            background-color: yellowgreen;
            width: 100px;
            height: 100px;
            float: left;
        }
        .right{
            background-color: blueviolet;
            width: 100px;
            height: 100px;
            float: right;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="left">左浮动</div>
        <div class="right">右浮动</div>
    </div>
</body>
</html>

效果:

此时我们对左浮动右浮动复制创建多个,效果如下:

可以看到使用浮动布局后,元素之间是没有空隙的

2.3使用浮动造成的坍塌

当我们使用浮动布局时,若父元素没有指定高度,此时就会发生坍塌。

即:

        .father{
            background-color: aquamarine;
            /* height: 100px; */    注释掉高度
            border: 3px solid brown;
        }

效果:

可以看到父元素的边框没有包裹住子元素,这就是坍塌造成的后果。

若此时我们在父元素后面继续添加标签,例如我们添加:

    <p>这是一段话</p>
    <p>这是一段话</p>
    <p>这是一段话</p>
    <p>这是一段话</p>

效果:

注意到有三个<p>标签的位置在左浮动右边,按常理来说,所有的<p>标签应该出现在父元素的下方

这便是坍塌造成的后果,解决方法很简单:

  1. 给父元素添加大于所有子元素的高度值
  2. 使用overflow属性消除浮动
  3. 使用父元素的伪元素after消除浮动

在这里,我们使用overflow属性来消除浮动:

        .father{
            background-color: aquamarine;
            /* height: 100px; */
            border: 3px solid brown;
            overflow: hidden;//使用overflow属性来消除浮动
        }

效果:

三.3种定位

3.0三种定位

定位方式:

  • 相对定位:相对于元素在文档流中的正常位置进行定位。
  • 绝对定位:相对于最近的已定位祖先元素进行定位,不占据文档流
  • 固定定位:相对于浏览器窗口进行定位。不占据文档流,固定在屏幕上的位置,不随滚动而滚动。

缺点:定位布局虽然可以精准定位,但缺乏灵活性

定位使用:“position”属性来定位

属性值有:

  • “relative”:相对定位
  • “absolute”:绝对定位
  • “fixed”:固定定位

3.1相对定位

使用相对定位,需要搭配:“top”、“right”、“bottom”、“left”四个属性使用。

top:相对于父元素向移动单位距离

right:相对于父元素向移动单位距离

bottom:相对于父元素向移动单位距离

left:相对于父元素向移动单位距离

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .allbox{
            height: 350px;
            background-color: aqua;
        }
        .box-normal{
            width: 100px;
            height: 100px;
            background-color: purple;
        }
        .box-relative{
            width: 100px;
            height: 100px;
            background-color: pink;
            position: relative;
            top: 20px;
            left: 100px;
        }
    </style>
</head>
<body>
    <div class="allbox">
        <div class="box-normal"></div>
        <div class="box-relative"></div>
        <div class="box-normal"></div>
    </div>
</body>
</html>

效果:

值得注意的是:使用相对定位的元素,其周边的元素并没有受到影响,这是因为“相对定位不会脱离文档流

3.2绝对定位

使用绝对定位,会使元素脱离正常文档流,这就说明如果下面还有标签,它就会因为该元素脱离正常文档流而上浮

即:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .allbox{
            height: 350px;
            background-color: yellow;
        }
        .box-normal{
            width: 100px;
            height: 100px;
            background-color: purple;
        }
        .box-absolute{
            width: 100px;
            height: 100px;
            background-color: pink;
            position: absolute;
        }
    </style>
</head>
<body>
    <div class="allbox">
        <div class="box-normal"></div>
        <div class="box-absolute"></div>
        <div class="box-normal"></div>
    </div>
</body>
</html>

效果:

如图,下面的紫色块上浮被覆盖了。

如果此时我们将粉色块移动,那么紫色块就显示出来了。

        .box-absolute{
            width: 100px;
            height: 100px;
            background-color: pink;
            position: absolute;
            left: 120px;    //向右移动120px,让紫色块显示
        }   

效果:

3.3绝对定位

使用绝对定位会让元素一直固定在页面某个位置,那怕用户拖动页面,元素仍固定。

通常用来作顶部导航栏等等。

即:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .allbox{
            height: 350px;
            background-color: yellow;
            margin-top: 500px;
        }
        .box-normal{
            width: 100px;
            height: 100px;
            background-color: purple;
        }
        .box-absolute{
            width: 100px;
            height: 100px;
            background-color: pink;
            position: absolute;
            left: 120px;
        }
        .box-fixed{
            width: 100px;
            height: 100px;
            background-color: brown;
            position: fixed;
            right: 0px;
            top: 100px;
        }
    </style>
</head>
<body>
    <div class="allbox">
        <div class="box-normal"></div>
        <div class="box-absolute"></div>
        <div class="box-normal"></div>
    </div>
    <h1>固定定位</h1>
    <div class="box-fixed">固定定位</div>
</body>
</html>

效果:

相关推荐

  1. CSS浮动(float)布局效果

    2024-03-30 22:40:03       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 22:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 22:40:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 22:40:03       82 阅读
  4. Python语言-面向对象

    2024-03-30 22:40:03       91 阅读

热门阅读

  1. uniapp中怎么引入echarts(最简单)

    2024-03-30 22:40:03       37 阅读
  2. 【Ncaos】Oracle数据库支持

    2024-03-30 22:40:03       45 阅读
  3. Python装饰器与生成器:从原理到实践

    2024-03-30 22:40:03       44 阅读
  4. web渗透测试漏洞复现:ZooKeeper未授权漏洞复现

    2024-03-30 22:40:03       42 阅读
  5. alertmanager

    2024-03-30 22:40:03       43 阅读
  6. 通过三个代码实例,教你快速了解js(上)

    2024-03-30 22:40:03       41 阅读
  7. 每日OJ题_子序列dp②_力扣376. 摆动序列

    2024-03-30 22:40:03       42 阅读
  8. TCP三次握手四次挥手

    2024-03-30 22:40:03       39 阅读
  9. 计算机网络-数据链路层-介质访问控制MAC子层

    2024-03-30 22:40:03       36 阅读
  10. VUE中直接播放海康威视RTSP/RTMP/ISC平台/NVR视频流

    2024-03-30 22:40:03       126 阅读