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>

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/502306.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot实现社区团购系统项目【项目源码+论文说明】

基于springboot实现社区团购系统演示 摘要 本课题是根据用户的需要以及网络的优势建立的一个社区团购系统&#xff0c;来满足用户团购的需求。 本社区团购系统应用Java技术&#xff0c;MYSQL数据库存储数据&#xff0c;基于Spring Boot框架开发。在网站的整个开发过程中&…

水泊梁山108小酒坛之呼保义宋江

宋江【绰号呼保义、及时雨】字公明&#xff0c;是古典名著《水浒传》中的角色。原为山东郓城县押司&#xff0c;他和晁盖互通往来的事被阎婆惜发现&#xff0c;因此怒杀阎婆惜&#xff0c;逃回家隐藏。后前往清风寨投靠花荣&#xff0c;却被清风寨观灯时遭知寨刘高之妻陷害入狱…

LeetCode算法——数组篇

对刷过的算法进行总结&#xff0c;所用解法都是最符合我个人逻辑的&#xff0c;以后再刷的话就看这篇帖子了 # 代码随想录——数组理论基础 首先要知道数组在内存中的存储方式&#xff0c;这样才能真正理解数组相关的面试题 数组是存放在连续内存空间上的相同类型数据的集合 …

基于java+springcloud的分布式架构网上商城

开发语言&#xff1a;Java 框架&#xff1a;springcloud JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mave…

Gradle连接超时问题connect time out

出现这样的问题不要慌张&#xff0c;可能是你配置gradle的问题一步一步来解决就完事了 1. 出现这样的问题首先我们先检查配置 首先我们先看到的标出来的地址可以看到&#xff0c;我们需要下载的是这个链接里面的压缩包数据&#xff0c;查看版本以及这个链接是不是错误的 2. 第…

springboot核心注解示例详解

文章简介 本文主要介绍springboot框架学习和工作中常用的核心注解&#xff0c;对注解进行了清晰地分类&#xff0c;配以简易代码和易懂的解释&#xff0c;能够让你掌握每个核心注解的用法&#xff0c;并可以迁移到学习和工作中加以使用。本文注解偏向于实用性。 springboot一…

2013年认证杯SPSSPRO杯数学建模B题(第一阶段)流行音乐发展简史全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 B题 流行音乐发展简史 原题再现&#xff1a; 随着互联网的发展&#xff0c;流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好&#xff0c;自动推荐并播放其它音乐。由于每个人喜好…

武汉星起航:助力跨境电商新手,打造高质量亚马逊产品评价新策略

在今日全球化与数字化浪潮的推动下&#xff0c;跨境电商已成为推动国际贸易发展的新动力。然而&#xff0c;随着市场竞争的日益激烈&#xff0c;如何让自己的产品在亚马逊平台上脱颖而出&#xff0c;成为了众多跨境电商新手面临的重要问题。武汉星起航电子商务有限公司&#xf…

Qt源码调试步骤记录

1.源码&#xff1a; 两种方式&#xff0c;要么安装qt时选择source&#xff0c;要么从官网下载源码&#xff0c;然后在qt creator中设置路径。二选一即可。我选的第二种。 1.1.第一种&#xff0c;安装时选择source&#xff1a; 1.2.第二种&#xff0c;下载源码设置路径&#x…

MySQL数据库(一)

文章目录 1.MySQL8.0安装配置1.安装教程2.启动方法3.启动注意事项4.Navicat使用5.Navicat演示 2.MySQL数据库基本介绍1.三层结构2.SQL语句分类 3.MySQL数据库基本操作1.创建数据库2.不区分大小写的校对规则3.查看、删除数据库4.备份和恢复数据库1.备份数据库db01和db02&#xf…

C++多线程:线程的创建、join、detach、joinable方法(二)

1、线程的开始与结束 程序运行起来&#xff0c;生成一个进程&#xff0c;该进程所持有的主线程开始自动运行&#xff0c;main主线程运行完所有的代码从main函数中返回表示整个进程运行完毕&#xff0c;标志着主线程和进程的死亡&#xff0c;等待操作系统回收资源&#xff0c;因…

简单了解策略模式

什么是策略模式&#xff1f; 策略模式提供生成某一种产品的不同方式 Strategy策略类定义了某个各种算法的公共方法&#xff0c;不同的算法类通过继承Strategy策略类&#xff0c;实现自己的算法 Context的作用是减少客户端和Strategy策略类之间的耦合&#xff0c;客户端只需要…

ubuntu 连接 校园网

​ 认证修改为 Protected EAP(PEAP) CA 证书 勾选 No CA certificate is required 输入用户名和密码 连接成功 ​

【火猫TV】西甲:巴萨中后场大洗牌,两位新人或被放弃!

巴萨本赛季已经来到了最关键的时刻,联赛中他们要想办法缩小与皇马的差距,欧冠联赛则要和大巴黎争夺四强名额。不过球队在转会市场上的操作非常频繁,在转会资金有限的情况下,他们已经准备了多套引援策略,其中对于中后场的打造可能会成为今夏的工作重心。比如后防核心阿劳霍就被多…

二维码门楼牌管理应用平台建设:智能匹配与高效管理

文章目录 前言一、二维码门楼牌管理应用平台的意义二、地址坐标校验的重要性三、对外采数据匹配校验的实现方式四、智能匹配与人工审核的结合五、二维码门楼牌管理应用平台的前景展望 前言 随着城市化进程的加速&#xff0c;门楼牌管理成为城市治理中不可或缺的一环。传统的门…

java电话号码的字母组合(力扣Leetcode17)

电话号码的字母组合 力扣原题链接 问题描述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 示例 1&#xff1a;…

HarmonyOS 应用开发之启动/停止本地PageAbility

启动本地PageAbility PageAbility相关的能力通过featureAbility提供&#xff0c;启动本地Ability通过featureAbility中的startAbility接口实现。 表1 featureAbility接口说明 接口名接口描述startAbility(parameter: StartAbilityParameter)启动Ability。startAbilityForRes…

GPT提示词分享 —— 智能域名生成器

提示词&#x1f447; 我希望你能充当一个聪明的域名生成器。我将告诉你我的公司或想法是什么&#xff0c;你将根据我的提示回复我一份域名备选清单。你只需回复域名列表&#xff0c;而不是其他。域名应该是最多 7-8 个字母&#xff0c;应该简短但独特&#xff0c;可以是朗朗上口…

【物联网项目】基于ESP8266的家庭灯光与火情智能监测系统——文末完整工程资料源码

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

STM32H743驱动SSD1309(5)

接前一篇文章&#xff1a;STM32H743驱动SSD1309&#xff08;4&#xff09; 三、命令说明 10. 设置BANK0的对比度控制&#xff08;81h&#xff09; 此命令设置显示器的对比度设置。该芯片具有从00h到FFh的256个对比度阶跃。segment输出电流随着对比度阶跃值的增加而增加。 示例…