媒体查询是 CSS 的一部分,可以根据设备的特性(如宽度、高度、分辨率等)应用不同的样式。
body {
font-size: 16px;
}
@media (max-width: 768px) {
body {
font-size: 14px;
}
}
@media (max-width: 480px) {
body {
font-size: 12px;
}
}
Flexbox 是一种一维布局模型,适用于需要在单个方向上(行或列)对齐元素的场景。
.container {
display: flex;
flex-wrap: wrap;
}
.item {
flex: 1 1 200px; /* 可增长、可缩小,基础宽度 200px */
}
CSS Grid 是一种二维布局模型,非常适合复杂的布局需求,可以在行和列中轻松对齐元素。
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 10px; /* 网格间距 */
}
.item {
background-color: #3498db;
padding: 20px;
}
使用百分比或视口单位(vw、vh)可以创建灵活的布局,适应不同屏幕尺寸。
.container {
width: 80%; /* 宽度为视口的 80% */
height: 50vh; /* 高度为视口高度的 50% */
}
使用响应式 CSS 框架(如 Bootstrap、Foundation 或 Bulma)可以快速构建响应式布局,这些框架内置了响应式的网格系统和组件。
左侧内容
右侧内容
box-shadow: [inset] offset-x offset-y color blur-radius spread-radius;
flex-wrap: nowrap | wrap | wrap-reverse;
CSS 的 flex
属性是 Flexbox 布局中的一个重要属性,它提供了一种简写方式来设置子元素(flex items)的多个属性。flex
属性包括三个部分:
flex: flex-grow flex-shrink flex-basis;
0
。表示项目在分配多余空间时的增长能力。1
。表示当空间不足时项目的缩小比例。auto
。表示项目在分配多余空间前的默认大小。
瀑布流效果
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
}
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 10px; /* 网格间距 */
padding: 10px;
}
.grid-item {
background-color: white;
border-radius: 5px;
overflow: hidden;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
.grid-item img {
width: 100%;
display: block;
}
HTML 结构:
.grid-item
的 .grid-container
容器来放置图片。CSS 样式:
display: grid;
创建一个网格布局。grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
使列数根据屏幕宽度自动调整,最小宽度为 200px。gap: 10px;
设置网格项之间的间距。.grid-item
的样式包括背景色、边框圆角和阴影,使其看起来更美观。
瀑布流效果 - Flexbox
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
}
.flex-container {
display: flex;
flex-wrap: wrap; /* 允许换行 */
justify-content: flex-start; /* 左对齐 */
gap: 10px; /* 间距 */
padding: 10px;
}
.flex-item {
background-color: white;
border-radius: 5px;
overflow: hidden;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
flex: 0 1 calc(33.333% - 10px); /* 设置每个项的宽度 (3列布局) */
}
.flex-item img {
width: 100%;
display: block;
}
HTML 结构:
.flex-item
的 .flex-container
容器来放置图片。CSS 样式:
display: flex;
创建一个 Flexbox 容器。flex-wrap: wrap;
允许子元素换行以适应容器宽度。justify-content: flex-start;
使元素左对齐。gap: 10px;
设置子元素之间的间距。.flex-item
使用 flex: 0 1 calc(33.333% - 10px);
设置每个项的宽度(3 列布局),并留出间距。conic-gradient
是 CSS 中用于创建圆锥渐变效果的属性。它根据角度渐变颜色,从一个中心点开始,沿着外圆锥表面展开,形成一个环绕的色带效果。这个属性常用于创建圆形的渐变背景,比如加载动画、进度条或任何需要圆形渐变效果的场合。
background-image: conic-gradient(color1, color2, ..., colorN);
以下是一个整合所有几何图形的完整示例:
CSS 几何图形
border-radius: 50%
来实现。conic-gradient
创建渐变扇形。
曲线运动示例
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
}
.container {
position: relative;
width: 300px;
height: 300px;
border: 2px dashed #3498db;
}
.moving-box {
position: absolute;
width: 50px;
height: 50px;
background-color: #e74c3c;
animation: move 3s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite; /* 贝塞尔曲线 */
}
@keyframes move {
0% {
transform: translate(0, 0);
}
50% {
transform: translate(150px, 100px); /* 曲线的最高点 */
}
100% {
transform: translate(300px, 0); /* 结束点 */
}
}
HTML 结构:
.container
和一个要移动的盒子 .moving-box
。CSS 样式:
position: relative;
在容器上设置相对定位,以便在其内部定位移动的盒子。@keyframes
定义动画,设置盒子的起始点、最高点和结束点。cubic-bezier(0.68, -0.55, 0.27, 1.55)
来控制动画的加速和减速,形成曲线运动效果。Base64 编码通过将每 3 个字节的二进制数据转换为 4 个可打印字符,来实现数据的表示。具体来说,Base64 使用 64 个字符来表示数据,包括:
A-Z
(26个)a-z
(26个)0-9
(10个)+
和 /
(2个)这样总共 64 个字符。Base64 编码还使用 =
字符来填充,以确保编码后的字符串长度是 4 的倍数。
Base64 编码的基本步骤如下:
000000
到 111111
,对应的字符从 A
到 /
。=
字符进行填充,以确保输出长度为 4 的倍数:
=
。=
。在 JavaScript 中,可以使用不同的前缀表示不同进制的数字:
0b
前缀,例如 0b1010
表示二进制的 10。0o
前缀,例如 0o12
表示八进制的 10。0x
前缀,例如 0xA
表示十六进制的 10。10
。// 十进制转二进制
let decimal = 10;
let binary = decimal.toString(2); // "1010"
// 十进制转八进制
let octal = decimal.toString(8); // "12"
// 十进制转十六进制
let hexadecimal = decimal.toString(16); // "a"
// 二进制转十进制
let binaryStr = "1010";
let decimalFromBinary = parseInt(binaryStr, 2); // 10
// 八进制转十进制
let octalStr = "12";
let decimalFromOctal = parseInt(octalStr, 8); // 10
// 十六进制转十进制
let hexadecimalStr = "a";
let decimalFromHexadecimal = parseInt(hexadecimalStr, 16); // 10
console.log(`Decimal: ${decimal}`);
console.log(`Binary: ${binary}`);
console.log(`Octal: ${octal}`);
console.log(`Hexadecimal: ${hexadecimal}`);
console.log(`Decimal from Binary: ${decimalFromBinary}`);
console.log(`Decimal from Octal: ${decimalFromOctal}`);
console.log(`Decimal from Hexadecimal: ${decimalFromHexadecimal}`);
你可以创建一些简单的函数来处理进制转换:
function decimalToBinary(decimal) {
return decimal.toString(2);
}
function decimalToOctal(decimal) {
return decimal.toString(8);
}
function decimalToHex(decimal) {
return decimal.toString(16);
}
function binaryToDecimal(binaryStr) {
return parseInt(binaryStr, 2);
}
function octalToDecimal(octalStr) {
return parseInt(octalStr, 8);
}
function hexadecimalToDecimal(hexStr) {
return parseInt(hexStr, 16);
}
// 示例
console.log(decimalToBinary(10)); // "1010"
console.log(decimalToOctal(10)); // "12"
console.log(decimalToHex(10)); // "a"
console.log(binaryToDecimal("1010")); // 10
console.log(octalToDecimal("12")); // 10
console.log(hexadecimalToDecimal("a")); // 10
协议是指在计算机网络中,通信双方为实现信息交换而约定的规则和约束。这些规则定义了数据格式、传输方式、错误处理、数据压缩等内容。网络协议确保不同设备和系统可以在网络中有效地通信。
TCP/IP(传输控制协议/互联网协议)是一组网络协议的集合,广泛用于互联网和其他计算机网络。TCP/IP 模型通常被分为四层,分别是:
三次握手用于建立 TCP 连接,确保客户端和服务器之间可以可靠地通信。其过程如下:
第一次握手:
seq = x
。第二次握手:
seq = y
,同时将客户端的序列号 x
作为确认号 ack = x + 1
。第三次握手:
ack = y + 1
。客户端状态 服务器状态
SYN_SEND --SYN--> SYN_RCVD
ESTABLISHED <---ACK---
四次挥手用于终止 TCP 连接,确保双方都能正常关闭连接。其过程如下:
第一次挥手:
第二次挥手:
第三次挥手:
第四次挥手:
客户端状态 服务器状态
FIN_WAIT_1 --FIN--> CLOSE_WAIT
FIN_WAIT_2 <---ACK---
TIME_WAIT <---FIN---
CLOSED <---ACK---
可靠协议能够确保数据在传输过程中不丢失,并按照正确的顺序到达目标。常见的可靠协议包括:
不可靠协议不保证数据的可靠传输,可能会丢失、重复或乱序。常见的不可靠协议包括:
TCP 通过多种机制确保数据的可靠交付,主要包括:
DNS 解析是将域名转换为 IP 地址的过程,通常包括以下步骤:
www.example.com
)。递归 DNS 服务器:
根 DNS 服务器:
.com
或 .org
)的权威 DNS 服务器的地址。顶级域 DNS 服务器:
.com
)。顶级域 DNS 服务器返回该域名的权威 DNS 服务器地址。权威 DNS 服务器:
返回 IP 地址:
建立连接:
DNS 优化的目的是提高域名解析的速度和效率,常见的优化方法包括:
CDN 的运作原理可以分为以下几个关键部分: