前端三剑客之CSS

1. CSS 简介

1) CSS 简述

CSS,即层叠样式表(英文全称:Cascading Style Sheets),是一种专门用于修饰 HTML 文档呈现样式的计算机语言。它的功能不仅限于静态美化网页,还能与各类脚本语言配合,实现对网页元素样式的动态格式化。

借助 CSS,开发者可以对网页元素的位置进行像素级的精准排版控制,支持几乎所有字体和字号样式的设置,同时具备对网页对象及模型样式的编辑能力,让网页呈现更丰富、更符合设计需求的视觉效果。

2) 为什么需要 CSS 样式表

CSS 的核心价值在于实现内容与样式的分离

  • HTML 专注于构建网页的结构和承载内容(相当于网页的 “骨架”);
  • CSS 则负责网页外观的渲染(相当于为 “骨架” 穿上华丽的 “衣服”)。

CSS 的主要特性包括:

  1. 实现内容与表现的分离,让结构设计与视觉设计各司其职;
  2. 保证网页表现风格的统一性,且便于集中修改样式;
  3. 提供丰富的样式选项,使页面布局更具灵活性和创意;
  4. 减少网页代码冗余,提升页面加载速度,节省网络带宽;
  5. 采用独立于页面的 CSS 文件,更利于搜索引擎抓取和收录网页内容;
  6. 由浏览器直接解释执行,无需额外的编译过程;
  7. 语法不区分大小写,降低了书写时的格式约束。

2. CSS语法

1)属性:属性值;
2)选择器{属性:属性值}

3. CSS引入方式

1)内联方式(行内样式)---- 只对当前元素生效

        利用html的style属性
        语法:
<开始标签 style="css属性:属性值;"></结束标签>
<div style="width:200px;height:200px;background-color: yellow;">这是一个盒子
</div>

2)内部方式

        利用html的style标签
        语法:
                style标签位于head标签里面
<head><style>选择器{属性:属性值}</style>
</head>

3)外部方式

        利用html的link标签
        语法:
<head><link rel="stylesheet" href="css文件的路径">
</head>
一个.css文件可以被多个html文件引入
一个html文件可以引入多个css文件

4)引入方式的优先级

        内联方式>内部方式(外部方式)
        内部方式和外部方式优先级相同,写在后面的生效。

4,CSS基础选择器

1,标签选择器(元素选择器):

用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定同意的CSS样式。
语法:
标签名{ 属性1:属性值; 属性2:属性值;、 ...... }p { color: pink; }

2,类选择器:

单独选一个或者某几个标签,可以使用类选择器。
语法:
.类名{ 属性1:属性值1; ...... }这是html文件 <div class="box"> 这是一个盒子 </div> 这是css文件 .box{ color: pink; }
多类名使用方式:
(1)在标签class属性中写多个类名。
(2)多个类名中间必须用空格分开。
<div class="red font20">亚瑟</div>
多类名的使用场景:
(1)可以把一些标签元素相同的样式(共同的部分)放到一个类里面。

3,id选择器:

id选择器可以为标有特定id的HTML元素指定特定的样式。
HTML元素以id属性来设置id选择器,CSS中id选择器以”#“来定义。
id选择器只能被一个标签调用(只能调用一次)
语法:
#id名{ 属性:属性值1; ... }将id为nav元素中的内容设置为红色。 #nav{ color:red; }

4,通配符选择器:

在CSS中,通配符选择器使用”*“定义,它表示选取页面中所有元素(标签)。
语法:
*{ 属性:属性值1; ... }
通配符选择器不需要调用,自动就能给所有元素使用样式。

5,属性选择器:

可以为拥有指定属性的HTML元素设置样式,而不仅限于class和id属性。

[class]{ color:red; } 
[clsss='box']{ color:yellow; } 
<!-- 有div标签的同时要class='box' --> 
div[class='box']{ color:green; }

6,关系选择器:

1,子代选择器 > (仅限儿子)

选择器1>选择器2 {}

2,后代选择器 空格 (包含所有后代:儿子,孙子等)

选择器1 选择器2 {}

3,相邻兄弟选择器 + (只限后面兄弟 下同)

选择器1+选择器2 {}

4,通用兄弟选择器 ~

选择器1~ 选择器2 {}

5,伪元素选择器

        在元素前面或者元素后面插入一个不存在的元素(伪元素)

::before{content:"";} 在某个元素的前面::after{content:"";} 在某个元素的后面

6,伪类选择器 

1,:link 点击之前(只适用于a)

a:link{ color:pink; }

2,:visited 点击之后(只适用于a)

a:visited{ color:orange; }

3,:hover 鼠标悬停(适用于所有元素)

.box:hover{ color:pink; }

4,:active 鼠标按下(适用于所有元素)

.box:active{ color:pink; }

5,:checked 选中状态

6,:focus 焦点状态

7,:first-child 选择器

8,:last-child 选择器

9,:nth-child() 选择器 (number|odd|even|倍数)

10,:first-of-type() 选择器

11,:last-of-type() 选择器

12,:nth-of-type() 选择器 (number|odd|even|倍数)

13,:not() 除了......

/* 排除了class='aa' 和class='bb'*/
li:not(.aa):not(.bb){ ... }

7,盒子模型(Box Model)

1,概念

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用于设计和布局时使用。
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距(margin),边框(border),填充(padding),和实际内容(content)。
盒模型允许我们在其他元素和周围元素边框之间的空间放置元素。
  • 宽度、高度:盒子本身具有宽度(width)和高度(height)
  • 内边距:盒子里面的内容到盒子边框之间的距离即内边距(padding)
  • 边框:盒子本身有边框(border)。
  • 外边距:盒子边框外和其他盒子之间,还有外边距(margin)

2,盒模型分类

1,标准盒模型(w3c盒模型)------ 浏览器默认

内容区域(content)
width:; 元素的宽度(只包含内容的宽度)
height:; 元素的高度(只包含内容的高度)
块级元素默认宽度为100%,行内元素默认宽度由内容撑开。
块级元素和行内元素默认高度都由内容撑开。
块级元素可以设置宽高,行内元素设置宽高不生效。
<div class="box">块级元素</div> <div class="box">块级元素</div> <span class="box">行内元素</span> <span class="box">行内元素</span>
<style> .box { width: 200px; height: 200px; background-color: pink; } </style>
内边距(Padding)
定义:
padding(填充)是一个简写属性,定义元素边框与元素内容之间的空间,即上下左右的内边距。
可能的值:
1)定义一个固定的填充(像素,pt,em,等)
2)使用百分比值定义一个填充
单边内边距属性:
可以指定不同侧面不同的填充:
<style> .box { <!--简写--> padding:value; 四周 padding:value value; 上下 左右 padding:value value value;上 左右 下 padding:value value value value;上 右 下 左 <!--单个属性--> padding-top: 25px; padding-bottom: 25px; padding-left: 25px; padding-right: 25px; } </style>
注意:当简写属性和单个属性同时存在,单个属性要写在简写属性后边。
边框(border)
属性:
border-style:; 必须属性,边框的样式,默认是3px。
取值:
solid 实线
dashed 虚线
dotted 点线
double 双实线
none 不显示
border-color:; 边框的颜色
border-width:; 边框的宽度
简写:border:width style color; 没有特定顺序,默认顺序。
div{ background-color: pink; width: 200px; height: 200px; border-style: solid; border-width: 10px; border-color: blue; <!--boder:10px solid blue 四周的边框--> }
外边距(Margin)
定义:
margin(外边距)属性定义元素周围的空间。
取值:
(1)Auto
(2)定义一个固定的margin
(3)定义一个使用百分比的边距
应用:
1)块级元素水平居中
margin:0 auto;
注意:
1)垂直方向上外边距合并问题
垂直方向上外边距相撞上,取较大值。
div{ <!--简写--> margin:value; 四周 margin:value value; 上下 左右 margin:value value value;上 左右 下 margin:value value value value;上 右 下 左 <!--单个属性--> margin-top: 100px; margin-bottom: 100px; margin-left: 50px; margin-right: 50px; }

2,怪异盒模型(IE盒模型)

在该模式下,浏览器的width属性不是内容的宽度,而是内容、内边距和边框的宽度的总和;即在怪异模式下的盒模型,盒子的(content)宽度+内边距(padding)宽度+边框(border)宽度=我们设置的width(height也是如此),盒子总宽度/高度=width/height+margin。
<!-- 盒模型转换 --> box-sizing:content-box; 默认值 标准盒模型 box-sizing:border-box; 怪异盒模型

3,弹性盒模型(伸缩盒模型)(flexbox)

主要用于移动端布局
目的是:设置子元素排列,对齐和分配剩余空白空间。
名词:
父元素----弹性容器
子元素----弹性项目
主轴----默认为x轴
侧轴----默认为y轴
父元素上的属性:
1,开启弹性盒模型 ------ display属性
display:flex; 开启弹性盒
display:flex; 属性设置后子元素默认水平排列
2,设置子元素的排列方式(设置弹性盒的方向)flex-direction属性
flex-direction属性指定了弹性子元素在父容器中的位置。
flex-direction:row|row-reverse|column|column-reverse
row:横向从左到右排列(左对齐),默认的排列方式
row-reverse:反转横向排列(右对齐),从后往前排,最后一项排在最前面。
column:纵向排列
column-reverse:反转纵向排列,从后往前排,最后一样排在最上面。
3,设置子元素在主轴的对齐方式
默认主轴为x轴,侧轴为y轴;当子元素垂直排列时,y轴为主轴,x轴为侧轴。
justify-content:;
flex-start 默认值 弹性盒的开始
flex-end 弹性盒的结束
center 居中
space-between 在子元素之间平均分配父元素剩余的空间
space-around 在子元素四周分配父元素剩余的空间,两端是中间的一半
4,设置子元素在侧轴的对齐方式
align-items:;
flex-start 默认值 弹性盒的开始
flex-end 弹性盒的结束
center 居中
2,子元素上的属性
flex-grow:number;
子元素占父元素剩余空间的比例。

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

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

相关文章

力扣25.7.11每日一题——无需开会的工作日

Description 这题类似合并区间&#xff0c;题意你们都能看懂吧…… Solution 这道题就需要用到合并区间的方法。 答案等于 daysdaysdays 减「有会议安排的天数」。 对左端点进行排序&#xff0c;计算有会议安排的天数&#xff0c;累加每个区间的长度&#xff0c;即为有会议…

每日一SQL 【销售分析 III】

文章目录问题案例执行顺序使用分组解决问题 案例 执行顺序 SQL 语句的执行顺序&#xff08;核心步骤&#xff09; 同一层级的select查询内部, 别名在整个 SELECT 计算完成前不生效 使用分组解决 select distinct s.product_id, Product.product_name from Sales sleft join …

轻轻松松带你进行-负载均衡LVS实战

8. LVS部署命令介绍 8.1 LVS软件相关信息 1.程序包&#xff1a;ipvsadm 2.Unit File: ipvsadm.service 3.主程序&#xff1a;/usr/sbin/ipvsadm 4.规则保存工具&#xff1a;/usr/sbin/ipvsadm-save 5.规则重载工具&#xff1a;/usr/sbin/ipvsadm-restore 6.配置文件&#xff1a…

C#.NET 集合框架详解

简介 C# 集合框架是处理数据集合的核心组件&#xff0c;位于 System.Collections 和 System.Collections.Generic 命名空间。它提供了多种数据结构来高效存储和操作数据。 集合框架概览 System.Collections (非泛型老版) └─ System.Collections.Generic (泛…

网络劫持对用户隐私安全的影响:一场无形的数据窃取危机

在互联网时代&#xff0c;网络劫持如同一把“隐形镰刀”&#xff0c;悄然威胁着用户的隐私安全。当我们在浏览网页、使用社交媒体或进行在线交易时&#xff0c;看似正常的网络连接背后&#xff0c;可能正暗藏着数据被窃取的风险。网络劫持通过多种技术手段干预用户与服务器的正…

使用 Helm 下载 Milvus 安装包(Chart)指南

目录 &#x1f4e6; 使用 Helm 下载 Milvus 安装包&#xff08;Chart&#xff09;指南 &#x1f6e0; 环境准备 &#x1f680; 第一步&#xff1a;添加 Milvus Helm 仓库 &#x1f50d; 第二步&#xff1a;查看可用版本 &#x1f4e5; 第三步&#xff1a;下载指定版本的 C…

EXTI 外部中断

目录 STM32中断 NVIC 中断控制器 NVIC优先级分组 EXTI 外部中断 AFIO 复用IO口 外部中断/事件控制器&#xff08;EXTI&#xff09;框图 STM32中断 在STM32微控制器中&#xff0c;共有68个可屏蔽中断通道&#xff0c;涵盖了多个外设&#xff0c;如外部中断&#xff08;EXT…

WebApplicationType.REACTIVE 的webSocket

通用请求体类 Data ApiModel("websocket请求消息") public class WebSocketRequest<T> implements Serializable {private static final long serialVersionUID 1L;/*** 参考&#xff1a;com.mcmcnet.gacne.basic.service.common.pojo.enumeration.screen.AiB…

降本增效!自动化UI测试平台TestComplete并行测试亮点

在跨平台自动化测试中&#xff0c;企业常面临设备投入高、串行测试耗时长、测试覆盖率难以兼顾的困境。自动化UI测试平台TestComplete的并行测试引擎提供了有效的解决方案&#xff1a;通过云端海量设备池与CI/CD深度集成&#xff0c;实现多平台、多浏览器并行测试&#xff0c;显…

云、实时、时序数据库混合应用:医疗数据管理的革新与展望(上)

云、实时、时序数据库混合应用:医疗数据管理的革新与展望 1、引言 1.1 研究背景与意义 在信息技术飞速发展的当下,医疗行业正经历着深刻的数字化转型。这一转型不仅是技术层面的革新,更是关乎医疗体系未来发展方向的深刻变革。从医疗服务的提供方式,到医疗管理的模式,再…

代码随想录算法训练营十六天|二叉树part06

LeetCode 530 二叉搜索树的最小绝对差 题目链接&#xff1a;530. 二叉搜索树的最小绝对差 - 力扣&#xff08;LeetCode&#xff09; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差…

自增主键为什么不是连续的?

前言 如果一个线程回滚&#xff0c;例如唯一键冲突的情况回滚时&#xff0c;回滚了sql语句&#xff0c;但是并没有把自增的值也-1。那么就会导致下一条插入的数据自增id出现了跳跃。 自增主键为什么不是连续的&#xff1f;前言执行时机为什么自增主键不是连续的为什么不回滚自…

OpenCV图像基本操作:读取、显示与保存

在图像处理项目中&#xff0c;图像的 读取&#xff08;imread&#xff09;、显示&#xff08;imshow&#xff09; 和 保存&#xff08;imwrite&#xff09; 是最基础也是最常用的三个操作。本文将详细介绍这三个函数的功能、用法和注意事项&#xff0c;并提供一个完整示例供读者…

.NET控制台应用程序中防止程序立即退出

在VB.NET控制台应用程序中防止程序立即退出&#xff0c;主要有以下几种常用方法&#xff0c;根据需求选择适合的方案&#xff1a; 方法1&#xff1a;等待用户输入&#xff08;推荐&#xff09; Module Module1Sub Main()Console.WriteLine("程序开始运行...") 这里是…

Vue3 + Three.js 极速入门:打造你的第一个3D可视化项目

文章目录前言一、环境准备1.1 创建Vue3项目1.2 安装Three.js二、Three.js核心概念速览三、实战&#xff1a;创建旋转立方体3.1 组件化初始化四、核心代码解析4.1 Vue3响应式整合技巧4.2 性能优化要点五、进阶功能扩展5.1 数据驱动控制5.2 加载3D模型六、常见问题解决七、资源推…

【设计模式】享元模式(轻量级模式) 单纯享元模式和复合享元模式

享元模式&#xff08;Flyweight Pattern&#xff09;详解一、享元模式简介 享元模式&#xff08;Flyweight Pattern&#xff09; 是一种 结构型设计模式&#xff08;对象结构型模式&#xff09;&#xff0c;它通过共享技术实现相同或相似对象的重用&#xff0c;以减少内存占用和…

驱动开发_2.字符设备驱动

目录1. 什么是字符设备2. 设备号2.1 设备号概念2.2 通过设备号dev分别获取主、次设备号的宏函数2.3 主设备号的申请静态申请动态分配2.4 注销设备号3. 字符设备3.1 注册字符设备3.2 注销字符设备3.3 应用程序和驱动程序的关系3.4 file_opertaions结构体3.5 class_create3.6 创建…

直播推流技术底层逻辑详解与私有化实现方案-以rmtp rtc hls为例-优雅草卓伊凡

直播推流技术底层逻辑详解与私有化实现方案-以rmtp rtc hls为例-优雅草卓伊凡由于我们的甲方客户要开始为我们项目产品上加入私有化的直播&#xff0c;这块不得不又捡起来曾经我们做直播推流的事情了&#xff0c;其实私有化直播一直并不是一件容易的事情&#xff0c;现在大部分…

一文读懂现代卷积神经网络—深度卷积神经网络(AlexNet)

目录 深度卷积神经网络&#xff08;AlexNet&#xff09;是什么&#xff1f; 一、AlexNet 的核心创新 1. 深度架构 2. ReLU 激活函数 3. 数据增强 4. Dropout 正则化 5. GPU 并行计算 6. 局部响应归一化&#xff08;LRN&#xff09; 二、AlexNet 的网络结构 三、AlexN…

JVM 垃圾收集算法全面解析

1. 引言1.1 为什么需要垃圾收集&#xff1f;在Java应用中&#xff0c;垃圾收集&#xff08;Garbage Collection&#xff0c;GC&#xff09;是一个至关重要的机制&#xff0c;它使得开发者不需要手动管理内存。与传统的语言&#xff08;如C或C&#xff09;不同&#xff0c;Java通…