css基本功

ops/2025/3/18 17:24:16/

为什么 ::first-letter 是伪元素?

::first-letter 的作用是选择并样式化元素的第一个字母,它创建了一个虚拟的元素来包裹这个字母,因此属于伪元素。

grid布局

案例一
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><title>CSS Grid布局完全指南</title><style>.code-example {background: #f4f4f4;padding: 15px;margin: 10px 0;border-radius: 5px;}.grid-visual {border: 2px solid #333;margin: 20px 0;padding: 10px;}.grid-item {background: #4CAF50;padding: 20px;border: 2px solid #fff;text-align: center;color: white;}</style>
</head><body><section><h2>实战示例</h2><h3>基本网格布局</h3><div class="grid-visual" style="display: grid;grid-template-columns: repeat(3, 1fr);gap: 10px;"><div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div><div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div></div><h3>复杂布局</h3><div class="grid-visual" style="display: grid;grid-template-columns: 200px 1fr;grid-template-rows: 100px 1fr 50px;grid-template-areas:'header header'// 同样是header 的格子会自动合并'sidebar main''footer footer';height: 400px;gap: 15px;"><div class="grid-item" style="grid-area: header">Header</div><div class="grid-item" style="grid-area: sidebar">Sidebar</div><div class="grid-item" style="grid-area: main">Main Content</div><div class="grid-item" style="grid-area: footer">Footer</div></div></section>
</body></html>

在这里插入图片描述

案例二
<!DOCTYPE html>
<html><head><style>.container {display: grid;grid-template-columns: repeat(3, 100px);/* 3列,每列100px */grid-template-rows: repeat(3, 100px);/* 3行,每行100px */gap: 10px;background: #eee;padding: 20px;}.item {background: #4CAF50;border: 2px solid #333;padding: 20px;font-family: Arial;color: white;display: flex;align-items: center;justify-content: center;}</style>
</head><body><div class="container"><div class="item item1">Item 1</div><div class="item item2">Item 2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div><div class="item">6</div></div>
</body></html>

在这里插入图片描述

案例三

在案例二的基础上加上grid-area的效果,注意细品

<!DOCTYPE html>
<html><head><style>.container {display: grid;grid-template-columns: repeat(3, 100px);/* 3列,每列100px */grid-template-rows: repeat(3, 100px);/* 3行,每行100px */gap: 10px;background: #eee;padding: 20px;}.item {background: #4CAF50;border: 2px solid #333;padding: 20px;font-family: Arial;color: white;display: flex;align-items: center;justify-content: center;}.item1 {grid-column: 1 / 3;/* 列从第1线到第3线(占据第1、2列) *//* 列范围 */grid-row: 1 / 2;/* 行从第1线到第2线(占据第1行) *//* 行范围 */background: #2196F3;}.item2 {grid-area: 2 / 2 / 4 / 4; /* 行开始/列开始/行结束/列结束 *//* 简写语法 */background: #FF5722;}</style>
</head><body><div class="container"><div class="item item1">Item 1</div><div class="item item2">Item 2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div><div class="item">6</div></div>
</body></html>

在这里插入图片描述

案例四

注意grid-auto-flow: row dense;这行的作用

<!DOCTYPE html>
<html><head><style>.container {display: grid;grid-template-columns: repeat(2, 100px);/* 显式列:2列 */grid-template-rows: repeat(1, 50px);/* 显式行:1行 */grid-auto-columns: 100px;/* 隐式列宽度 */grid-auto-rows: 50px;/* 隐式行高度 */grid-auto-flow: row dense;/* 自动排列方式 */gap: 10px;background: #eee;padding: 20px;}.item {background: #4CAF50;padding: 20px;border: 2px solid #333;color: white;display: flex;align-items: center;justify-content: center;}/* 特殊项目样式 */.item.wide {grid-column: span 2;}/* 横跨2列 */.item.tall {grid-row: span 2;}/* 竖跨2行 */</style>
</head><body><div class="container"><div class="item">1</div><div class="item wide">2(跨2列)</div><div class="item">3</div><div class="item tall">4(跨2行)</div><div class="item">5</div><div class="item">6</div></div>
</body></html>

在这里插入图片描述
如果没有grid-auto-flow: row dense;,是以下效果
在这里插入图片描述
在这里插入图片描述
row dense填充了行的空白

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

相关文章

C#-委托delegate

一.C#-委托delegate C#中委托即C中函数指针,通过delegate关键字可声明一个代理.代理可像指针一样作为参数传递和调用. <1.声明一个代理类型 class Test{public delegate string CreateNativeString(); }<2.创建代理变量 class Main{public Test.CreateNativeString poi…

本地部署Jina AI Reader:用Docker打造你的智能解析引擎

本地部署Jina AI Reader&#xff1a;用Docker打造你的智能解析引擎 &#x1f31f; 引言&#xff1a;为什么需要本地部署&#xff1f;&#x1f4cc; 场景应用图谱&#x1f527; 部署指南&#xff08;Linux环境&#xff09;1. 环境准备2. Docker部署3. 验证服务状态 &#x1f680…

前端如何实现生成excel文件,并下载

后端很忙没有实现配合&#xff0c;主要由前端来实现&#xff0c;需要点击下载模版生成一个excel并下载的功能&#xff0c; 这是格式 <a href"javascript:void(0)"click"downloadTemplate">下载模板</a> import * as XLSX from "xlsx&qu…

【存储中间件】Redis核心技术与实战(四):Redis高并发高可用(Redis集群介绍与搭建)

文章目录 Redis集群集群前置知识数据分布理论节点取余分区一致性哈希分区虚拟一致性哈希分区虚拟槽分区为什么槽的范围是0 &#xff5e;16383&#xff1f; Redis数据分区Redis 虚拟槽分区的特点集群功能限制 搭建集群节点配置集群创建创建集群随机主从节点指定主从节点创建集群…

Harmony NEXT开发之创建自定义组件

目录 自定义组件的基本用法 自定义组件的基本结构 成员函数/变量 自定义组件的参数规定 build()函数 自定义组件通用样式 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面…

基于 easyExcel 3.1.5依赖的包 实现动态表头 动态表格内容

1.需求&#xff1a;需要导出的EXCEL示例&#xff1a; 2.依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.5</version></dependency> 3.工具类&#xff1a; p…

ZooKeeper的五大核心作用及其在分布式系统中的关键价值

引言 在分布式系统的复杂架构中&#xff0c;协调多个节点的一致性、可靠性和高可用性始终是技术挑战的核心。​Apache ZooKeeper作为业界广泛采用的分布式协调服务&#xff0c;凭借其简洁的树形数据模型&#xff08;ZNode&#xff09;和高效的原子广播协议&#xff08;ZAB&…

【多线程】线程不安全问题

文章目录 多线程不安全的原因大的层面->多线程是随机调度的容易产生死锁 小的层面->内存不可见性引入volatile关键字 指令重排序不是原子性带来的隐患 synchronized锁的互斥性及作用可重入性——解决死锁 wait()和notify()两个突然迸发出的疑问 多线程不安全的原因 大的…