前端学习(三)之CSS

news2024/9/24 5:23:46

一、什么是CSS

html定义网页的结构和信息(骨架血肉)
css定义网页的样式(衣服)
js定义用户和网页的交互逻辑(动作)

通过CSS,可以指定页面中各个元素的颜色、字体、大小、间距、边框、背景等样式,

从而实现更精美的页面设计。

二、CSS语法

选择器{

属性1:属性值1;

属性2:属性值2;

}

注意:这里声明的所有属性和值都以键值对的形式出现(用:而不是=)

三、三种导入方式

1、内联样式:利用元素标签中的style属性

2、内部样式表:在head中定义

3、外部样式表:单独放进一个CSS文件中,在head中链接这个文件

(好处:能在多个页面中重复使用相同的样式)

优先级:内联样式>内部样式表>外部样式表

注意:优先级高的会覆盖掉优先级低的样式

<!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS学习</title>
     <link rel="stylesheet" href="./css/style.css">
    
    <style>
        /* p标签选择器 */
        p{ 
            color: blue;
            font-style: 16px;
        }
        /* h2标签选择器 */
        h2{
            color: green;
        }
    </style>

</head>

<body>
  <h1 style="color:red">这是一个一级标题标签,使用内联样式</h1>
  <h2>这是一个二级标题,使用内部样式</h2>
  <h3>这是一个三级标题,使用外部样式</h3>
</body>

</html>

使用外部样式时:

1、先创建css文件

2、然后将链接添加到HTML文档的head中(link->href填写文件的相对路径即可)

四、选择器

 选择器的类型:

1、元素选择器:选择特定的元素标签

2、类选择器

3、ID选择器

4、通用选择器:表示对所有的元素进行一个选择

5、子元素选择器:选择直接位于父元素内部的子元素(嵌套)

6、后代选择器(包含选择器)

  注意:子代属于后代

优先级:id>类名>标签名

7、并集选择器(兄弟选择器):选择相邻的下一个标签

8、伪类选择器:选择元素的特定状态或位置,不仅仅是元素本身的属性

("伪类"的概念源自于它们不是真正的类(class),而是在选择器中表现得像类一样的特殊标记或状态)

可用于用户交互:比如鼠标悬停在一个元素上,是悬停状态

9、伪元素选择器:创建一个虚拟元素并且样式化他们,而不选择实际存在的元素

(伪元素选择器选择的是元素的虚拟部分或特定位置的内容,这些内容在HTML源码中不存在,是CSS创建的)

选择器类型使用格式
元素选择器元素标签{ }
类选择器.类名{ }
ID选择器#ID名{ }
通用选择器*{ }
子元素选择器父 > 子{ }
后代选择器祖 空格 后代{ }
兄弟选择器eg: h3 + p{ } 选择相邻的下一个p标签
伪类选择器标签名、类名或ID名 :选择条件 { } eg: #element:hover{}
伪元素选择器标签名、类名或ID名 ::选择条件 { }
css常见属性含义

background-color

字体背景颜色
font字体的复合属性

font-size

字体大小

font-weight

字体粗细

font-family

字体(楷体:'kaiti' )
line-height行高
   <!-- font复合属性 -->
   <h1 style="font:bolder 50px 'kaiti'">这是一个font复合属性示例</h1>
   <!-- 调整行高 -->
   <p style="line-height:40px">这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本这是一段长文本</p>
<!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS 学习2</title>
    <style>
        /* 元素选择器 */
        h2{
            color:aqua;
        }

        /* 类选择器:.类名 */
        .highlight{
            background-color: yellow;
        }

        /* ID选择器:#ID值 */
        #header{
            font-size: 35px;
        }

        /* 通用选择器:* */
        *{
            font-family: 'kaiti';
            font-weight: bolder; /* front-weight: 字体宽度 */
        }
        

        /* 子元素选择器:用元素名、类名、id名(id名>类名>标签名)都可以,只要能选择到要选的元素 */
        /* 将p换成.son就能发挥作用*/
        .father > .son{
         color:yellowgreen;
        }

        /* 后代选择器 */
        .father p{
            color:brown;
            front-size:larger;
        }

        /* 相邻元素选择器 */
        h3 + p{
           background-color: red;
        }

        /* 伪类选择器 */
        #element:hover{
            background-color: blueviolet;
        }
        /* 选中父元素中的第一个子元素: first-child
                        第n个子元素: nth-child(n)
                           链接状态: active */

        /* 伪元素选择器 ::after ::before表示在选中元素的之前或之后插入虚拟内容*/
    </style>
</head>

<body>
    <h1>不同类型的CSS选择器</h1>

    <h2>这是一个元素选择器示例</h2>

    <!-- h3.类名,按Tab键,立即生成h3标签结构 -->
    <h3 class="highlight"> 
        这是一个类选择器示例
    </h3>
   
    <!-- 同理,h4#id值,不写h4则默认是div-->
   <h4 id="header">
    这是一个ID选择器示例
   </h4>

   <div class="father">
    <p class="son">
        这是一个子元素选择器示例
    </p>
    <div>
       <p class="grandson"> <!-- 这里son和grandson算一个叔侄关系 -->
        这是一个后代选择器示例
       </p>
    </div>
   </div>
   
   <p>这是一个普通的p标签</p>
    <h3>
        这是一个相邻兄弟选择器示例
    </h3>
    <p>这是另一个p标签</p>

    <h3 id="element">
        这是一个伪类选择器示例
    </h3>

</body>

</html>

 五、块、行内、行内块元素

<!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>
      .block{
         background-color: aqua;
         width:200px;
         height:100px;
      }
      .inline{
         background-color: red;
      }

      
      .inline-block{
         width:100px; 
      }

      .span-inline-block{
         display:inline-block;
         background-color: blueviolet;
         width: 300px;
         height: 100px;
      }
    </style>
 </head>

 <body>
    <!-- 块级元素和行内块元素可以调整宽高,行内块元素仅设置宽度则按比例压缩 -->
     <!-- 一行可以有多个行内块元素,但不能有多个块级元素(独占一行) -->
      <!-- 行内元素的宽度和高度由所包含的内容决定 -->

     <!-- 块级元素 -->
      <div class="block">这是一个块级元素</div>
      <!-- 行内元素 -->
      <span class="inline">这是一个行内元素</span>
      <!-- 行内块元素 -->
       <img src="你的名字.jpg" alt="" class="inline-block"><br>

       <!-- display可以把块元素、行内元素转换成行内块元素 -->
        <div style="display:inline;background-color: blue;">这是一个转换成行内元素的div标签</div>
        <span class="span-inline-block">这是一个转换成行内块元素的span标签</span>
    </body>

 </html>

六、盒子模型

盒子模型是CSS中一种常用于布局的基本概念 ,描述了文档中的每个元素都可以被看成是一个矩形的盒子,其中包含了内容(content)、内边距(padding)、文本边框(border)、外边距(margin)。

盒子模型相关属性: 

属性名说明
内容盒子包含的实际内容(文本、图片等)
内边距(padding 复合属性)内容与盒子边界之间的空间
边框(border 复合属性)盒子的边界
外边距(margin 复合属性)盒子边界与其他元素之间的空间

 理解盒子模型,能更精确地控制元素在页面中的位置和大小

<!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>盒子模型</title>
    <style>
        .demo{
            background-color:blueviolet;
            display:inline-block;
            border: 5px solid yellowgreen;
            padding: 50px;
            margin:40px;
        }
        
        .border-demo{
            background-color: yellow;
            width:300px;
            height:200px;
            border-style: solid dashed dotted double;  /* 边框样式 */
            border-width: 10px 5px;   /* 边框宽度:上右下左顺时针顺序,缺失的会自动寻找对应的值 */
            border-color:aquamarine;
            /* 只想给单一的一个边框设置样式时,也可以用复合属性: border-left:15px solid brown; */
            /*  left right top bottom */
        }  
    </style>
</head>

<body>
    <div class="demo">B站搜索林丽丽</div>
    <div class="border-demo">这是一个边框示例</div>
</body>

</html>

七、浮动

 本质上,都是摆盒子

自适应布局:网页可以在手机端和电脑端访问,适应不同的设备

浮动:可以改变元素的默认排列顺序(比如:让多个块级元素在同一行内排列显示),让网页布局更加灵活多变

        浮动的元素:相互贴靠在一起,没有缝隙

        行内块元素:彼此之间有缝隙,不如浮动方便

浮动是相对父元素进行浮动的,只会在父元素的内部进行移动;占满一行之后,再去占下一行

浮动的三大特性:
1、脱标:脱离标准流

2、一行显示,顶部对齐

3、具备行内块元素的特性,但没有缝隙

注意:

子元素浮动,会使父元素出现坍塌(“不规则”)

最常用的清除浮动的方式:

(1)给父元素添加overflow:hidden

overflow: 溢出内容处理

设置父元素的 overflow`属性为 auto 或 hidden 会创建一个新的块格式化上下文(Block Formatting Context)。

这样,浮动元素会被完全包裹在父元素的边界内,从而解决浮动引起的高度塌陷问题。

overflow: auto 会自动处理溢出的内容,而 overflow: hidden 会隐藏溢出的部分。

相当于在不同的图层了

(2)伪元素清除法

    .father::after{

            content:"";

            display:table;

            clear:both;

        }

<!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: 150px; */
            border: 3px solid brown;
            /* overflow: hidden; */
        }
        /* 伪元素清除法 */
        .father::after{
            content:"";
            display:table;
            clear:both;
        }
        .left-son{
            width: 100px;
            height: 100px;
            background-color: yellowgreen;
            float: left;
        }
        .right-son{
            width: 100px;
            height: 100px;
            background-color: yellow;
            float: right;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="left-son">左浮动</div>
        <div class="left-son">左浮动</div>
        <div class="left-son">左浮动</div>
        <div class="left-son">左浮动</div>
        <div class="left-son">左浮动</div>
        <div class="left-son">左浮动</div>
        <div class="left-son">左浮动</div>
        <div class="right-son">右浮动</div>
        <div class="right-son">右浮动</div>
        <div class="right-son">右浮动</div>
        <div class="right-son">右浮动</div>
        <div class="right-son">右浮动</div>
        <div class="right-son">右浮动</div>
    </div>
    <p>这是一段文本这是一段文本这是一段文本</p>
</body>

</html>

八、定位

浮动:灵活,但不易控制(不能精准定位)

定位:可以精准定位,但不够灵活

通常,相对定位用于微调元素的位置,而绝对定位和固定定位用于创建更复杂的布局

绝对定位和固定定位的元素都脱离了正常的文档流,悬浮在最上层的某一位置,故下一行的元素会自动顶上来

绝对定位:相对于元素最近的已经定位的父级元素进行定位,若没有已经定位的父级元素,则相对于html标签定位

固定定位:相对于浏览器窗口进行定位,即使页面滚动,元素依然会保持在窗口的相同位置

<!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>
        .box1{
            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;
            left:120px;
            top:40px;
        }

        .box2{
            height: 350px;
            background-color: yellow;
            /* margin-bottom: 300px; */
        }
        .box-absolute{
            width: 100px;
            height: 100px;
            background-color: yellowgreen;
            position:absolute;
            left:120px;
        }

        .box-fixed{
            height: 100px;
            width: 100px;
            background-color: brown;
            position:fixed;
            right:0;     /* 与右边间距为0 */
            top:300px;
        
        }
    </style>
</head>

<body>
    <h1>相对定位</h1>
    <div class="box1">
        <div class="box-normal"></div>
        <div class="box-relative"></div>
        <div class="box-normal"></div>
    </div>

    <h1>绝对定位</h1>
    <div class="box2">
        <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>

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv8改进 | Neck | 注意力尺度序列融合的检测框架ASF-YOLO

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

spring boot(学习笔记第十四课)

spring boot(学习笔记第十四课) Spring Security的密码加密&#xff0c;基于数据库认证 学习内容&#xff1a; Spring Security的密码加密基于数据库认证 1. Spring Security的密码加密 如果用户的密码保存在数据库中是以明文保存&#xff0c;对于公司的安全将是灾难性的&…

SpringBoot中fastjson扩展: 自定义序列化和反序列化方法实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

安全防御---防火墙综合实验3

安全防御—防火墙综合实验3 一、实验拓扑图 二、实验要求 12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 13&#xff0c;办公区…

【软件配置】不使用ROS系统,不进行编译,纯python环境配置rosbag,从而解析.bag文件

【软件配置】不使用ROS系统&#xff0c;不进行编译&#xff0c;纯python环境配置rosbag&#xff0c;从而解析.bag文件 【anaconda】conda创建、查看、删除虚拟环境&#xff08;anaconda命令集&#xff09;_conda 创建环境-CSDN博客 【Windows配置三】Python3.6安装rosbag_ros…

4.基础知识-数据库技术基础

基础知识 一、数据库基本概念1、数据库系统基础知识2、三级模式-两级映像3、数据库设计4、数据模型&#xff1a;4.1 E-R模型★4.2 关系模型★ 5、关系代数 二、规范化和并发控制1、函数依赖2、键与约束3、范式★3.1 第一范式1NF实例3.2 第二范式2NF3.3 第三范式3NF3.4 BC范式BC…

鸿蒙智联:一统多设备,跨端融合新魔法

在当今科技飞速发展的时代&#xff0c;操作系统的优劣直接影响着用户的体验和设备的性能。而鸿蒙系统&#xff0c;宛如一颗璀璨的新星&#xff0c;凭借其卓越的跨端能力&#xff0c;为我们展现了一个全新的科技世界。 鸿蒙系统的最大魅力之一&#xff0c;就在于它能够实现一个系…

【嵌入式开发之数据结构】树的基本概念、逻辑结构和四种常用的遍历算法及实现

树&#xff08;Tree&#xff09;的定义及基本概念 树的定义 树(Tree)是个结点的有限集合T&#xff0c;它满足两个条件&#xff1a; 有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点&#xff1b;其余的节点分为个互不相交的有限合集&#xff0c;其中每一个集合又…

【无重叠空间】python刷题记录

润到贪心篇。 class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:#十行贪心大神if not intervals:return 0#按照第第二个元素进行排序&#xff0c;贪心思想&#xff0c;参考活动安排都是以结束时间进行排序的intervals.sort(keylambda x:…

分离式网络变压器的集成化设计替代传统网络变压器(网络隔离滤波器)尝试

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是应用了分离式网络变压器设计的的新型网络变压器&#xff08;网络隔离变压器&#xff09; 今天我们一起来看这款新型网络变压器&#xff0c;它就是应用分离式网络变压器集成到电路板上&#xff0c;加上外…

git协同开发与冲突解决

协同开发流程 基本的使用方法 # 1 多人开发同一个项目-张三&#xff1a;本地 版本库-李四&#xff1a;本地 版本库-我&#xff1a; 本地 版本库----远程仓库&#xff1a;本地版本库内容--》推送到远程仓库-----# 2 演示&#xff08;我是项目管理员&#xff09;-1 增加几个开发…

(二刷)代码随想录第21天|236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 递归三部曲&#xff1a; 1、确定参数和返回值&#xff1a; class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {} 2、确定中止条件&#xff1a; if (root null || root p || root q) { // 递归结…

lua 游戏架构 之 SceneLoad场景加载之 SceneBase (三)

谢谢大家关注一下啊我的微信 框架上 设计一个 基类 SceneLoad&#xff1a;BaseSceneLoad lua 游戏架构 之 SceneLoad场景加载&#xff08;一&#xff09;-CSDN博客https://blog.csdn.net/heyuchang666/article/details/140560014?spm1001.2014.3001.5501 设计多个 场景类&a…

无需业务改造,一套数据库满足 OLTP 和 OLAP,GaiaDB 发布并行查询能力

在企业中通常存在两类数据处理场景&#xff0c;一类是在线事务处理场景&#xff08;OLTP&#xff09;&#xff0c;例如交易系统&#xff0c;另一类是在线分析处理场景&#xff08;OLAP&#xff09;&#xff0c;例如业务报表。 OLTP 数据库擅长处理数据的增、删、改&#xff0c…

STM32测测速---编码电机读取速度的计算

1、首先先了解一下计算的公式 速度计算&#xff1a; 轮胎每转一圈的脉冲数取决于编码器的分辨率&#xff0c;可由下面公式进行计算&#xff1a; PPR是电机的线数 以GA25-370电机为例。 图片来源&#xff1a;第四节&#xff1a;STM32定时器&#xff08;4.JGA25-370霍尔编码器…

规范:前端工程代码规范

准备工作 前端工程化介绍 前端工程化是指将前端开发流程标准化、自动化和模块化的过程。以下是一些常见的步骤或配置&#xff1a; 代码版本控制&#xff1a;使用 Git 等版本控制系统来管理代码的变更和协作。 依赖管理&#xff1a;使用 npm 或 yarn 等包管理工具来管理项目依…

园区道路车辆智能管控视频解决方案,打造安全畅通的园区交通环境

一、背景需求分析 随着企业园区的快速发展和扩张&#xff0c;道路车辆管理成为了保障园区秩序、提升运营效率及确保员工安全的重要任务。针对这一需求&#xff0c;旭帆科技TSINGSEE青犀提出了一种企业园区道路车辆管控的解决方案&#xff0c;通过整合视频监控、智能识别等技术…

6.2 基础功能介绍

本节重点介绍 : 数据源操作新增一个数据源dashboard操作folder操作alerting操作用户和组操作 本节重点总结 : 数据源操作dashboard操作folder操作alerting操作用户和组操作

linux时间服务器——软件安装,配置时间服务器客户端 ,配置时间服务器服务端

1 、软件安装 # 设置当前时区 [rootlocalhost ~] # timedatectl set-timezone Asia/Shanghai [rootlocalhost ~] # yum install -y chrony [rootlocalhost ~] # systemctl enable --now chronyd [rootserver1 ~] # cat /etc/chrony.conf # 设置时间服务器的服务端名字 s…

ceph log内容解析

log内容构造 如osd的一条log 分别表示 时间戳 线程id 日志等级 子模块 内容实体 剖析源码实现 每条log都是由一个Entry构成 定义在src/log/entry.h中 Entry(short pr, short sub) :m_stamp(clock().now()), // 打印日志时的时间戳m_thread(pthread_self()), // 打印日志的线…