CSS揭秘学习笔记

2020/7/14 CSS

🌙 CSS揭秘学习笔记

🌙 一、序言

🌙 1.工具函数

原文:

function $$(selector, context) {
	context = context || document;
	var elements = context.querySelectorAll(selector);
	return Array.prototype.slice.call(elements);
}
1
2
3
4
5

ES6:

function $$(selector, context=document) {
    if(!context.querySelectorAll) throw new Error(`${context} does not have 'querySelectorAll' methods in its prototype`);
    return Array.from(context.querySelectorAll(selector));
}
1
2
3
4

🌙 2.规范文档

„ + CSS 背景与边框 (opens new window)

„ + 选择符 (opens new window)

„ + 可缩放矢量图形(SVG) (opens new window)

„ + CSS 语法 (opens new window)

„ + CSS 层叠与继承 (opens new window)

„ + CSS 颜色 (opens new window)

„ + 选择符 (opens new window)

„ + CSS 背景与边框 (opens new window)

„ + CSS 值与单位 (opens new window)

„ + CSS 文本排版 (opens new window)

„ + CSS 文本装饰效果 (opens new window)

„ + CSS 字体 (opens new window)

„ + CSS 基本 UI 特性 (opens new window)

„ + CSS 变形 (opens new window)

„ + 图像混合效果 (opens new window)

„ + 滤镜效果 (opens new window)

„ + CSS 遮罩 (opens new window)

„ + CSS 伸缩盒布局 (opens new window)

„ + CSS 网格布局 (opens new window)

🌙 二、背景与边框

🌙 1.半透明边框

See the Pen CSS3-半透明边框 by Keekuun (@keekuun) on CodePen.

🌙 2.多重边框

See the Pen CSS3-多重边框 by Keekuun (@keekuun) on CodePen.

🌙 3.背景定位

See the Pen CSS3-背景定位 by Keekuun (@keekuun) on CodePen.

🌙 4.边框内圆角

See the Pen CSS3-边框内圆角 by Keekuun (@keekuun) on CodePen.

🌙 5.条纹背景

See the Pen CSS3-条纹背景 by Keekuun (@keekuun) on CodePen.

🌙 6.网格背景

See the Pen CSS3-网格背景 by Keekuun (@keekuun) on CodePen.

https://bennettfeely.com/gradients/

🌙 7.伪随机背景

See the Pen CSS3-伪随机背景 by Keekuun (@keekuun) on CodePen.

🌙 8.图像边框

See the Pen CSS3-图像边框 by Keekuun (@keekuun) on CodePen.

🌙 三、各种形状

🌙 1.自适应椭圆

See the Pen CSS3-自适应椭圆 by Keekuun (@keekuun) on CodePen.

🌙 2.平行四边形

See the Pen CSS3-平行四边形 by Keekuun (@keekuun) on CodePen.

🌙 3.菱形图片

See the Pen CSS3-菱形图片 by Keekuun (@keekuun) on CodePen.

🌙 4.切角效果

See the Pen CSS3-切角效果 by Keekuun (@keekuun) on CodePen.

🌙 5.梯形标签页

See the Pen CSS3-梯形标签页 by Keekuun (@keekuun) on CodePen.

外圆角选项卡 (opens new window)

🌙 6.简单的饼图

See the Pen CSS3-简单的饼图 by Keekuun (@keekuun) on CodePen.

SVG:

See the Pen CSS3-简单的饼图(SVG) by Keekuun (@keekuun) on CodePen.

🌙 四、视觉效果

CSS创意与视觉表现 (opens new window)

🌙 1. 单侧投影

See the Pen CSS3-单侧投影 by Keekuun (@keekuun) on CodePen.

🌙 2.不规则投影(滤镜)

See the Pen CSS3-不规则投影(滤镜) by Keekuun (@keekuun) on CodePen.

🌙 3.染色效果

🌙 4.毛玻璃效果(filter:blur)

See the Pen CSS3-毛玻璃效果(filter:blur) by Keekuun (@keekuun) on CodePen.

🌙 5.折角效果

See the Pen CSS3-折角效果 by Keekuun (@keekuun) on CodePen.

🌙 五、字体排版

🌙 1.连字符断行

See the Pen CSS3-连字符断行 by Keekuun (@keekuun) on CodePen.

🌙 2. 插入换行

See the Pen CSS3-插入换行 by Keekuun (@keekuun) on CodePen.

🌙 3.文本行的斑马条纹

See the Pen CSS3-文本行的斑马条纹 by Keekuun (@keekuun) on CodePen.

🌙 4.调整tab的宽度

See the Pen CSS3-调整Tab的宽度 by Keekuun (@keekuun) on CodePen.

🌙 5.连字

See the Pen CSS3-连字 by Keekuun (@keekuun) on CodePen.

🌙 6.华丽的&符号

See the Pen CSS3-华丽的&符号 by Keekuun (@keekuun) on CodePen.

🌙 7.自定义下划线

See the Pen CSS3-自定义下划线 by Keekuun (@keekuun) on CodePen.

🌙 8.现实中的文字效果

See the Pen CSS3-现实中的文字效果 by Keekuun (@keekuun) on CodePen.

🌙 9.环形文字

See the Pen CSS3-环形文字 by Keekuun (@keekuun) on CodePen.

🌙 六、用户体验

🌙 1.选择合适的鼠标光标

// 提示禁用状态
:disabled, [disabled], [aria-disabled="true"] {
	cursor: not-allowed;
}

// 隐藏鼠标光标
video {
	cursor: url('transparent.gif');
	cursor: none;
}
1
2
3
4
5
6
7
8
9
10

🌙 2.扩大可点击区域

button {
    position: relative;
    /* [其余样式] */
}
// 向外扩张了10px
button::before {
	content: '';
	position: absolute;
	top: -10px; 
    right: -10px;
	bottom: -10px; 
    left: -10px;
}
1
2
3
4
5
6
7
8
9
10
11
12
13

🌙 3.自定义复选框

See the Pen CSS3-自定义复选框 by Keekuun (@keekuun) on CodePen.

🌙 4.通过阴影来弱化背景

See the Pen CSS3-通过阴影来弱化背景 by Keekuun (@keekuun) on CodePen.

🌙 5.通过模糊来弱化背景

See the Pen CSS3-通过模糊来弱化背景 by Keekuun (@keekuun) on CodePen.

🌙 6.滚动提示

https://www.zhangxinxu.com/wordpress/2019/06/better-css-scroll-indicator/

  • 简单效果

See the Pen CSS3-滚动提示 by Keekuun (@keekuun) on CodePen.

  • 背景渐变效果

See the Pen CSS3-滚动提示(背景渐变) by Keekuun (@keekuun) on CodePen.

  • 滚动条效果

See the Pen CSS3-滚动提示(滚动条) by Keekuun (@keekuun) on CodePen.

🌙 7.交互式的图片对比控件

See the Pen CSS3-图片对比(纯CSS控件) by Keekuun (@keekuun) on CodePen.

See the Pen CSS3-图片对比(range控件) by Keekuun (@keekuun) on CodePen.

🌙 七、结构和布局

🌙 1.自适应内部元素

See the Pen CSS3-自适应内部元素 by Keekuun (@keekuun) on CodePen.

🌙 2.精确控制表格列宽

See the Pen CSS3-精确控制表格列宽 by Keekuun (@keekuun) on CodePen.

🌙 3.根据兄弟元素的数量设置样式

See the Pen CSS3-根据兄弟元素的数量设置样式 by Keekuun (@keekuun) on CodePen.

See the Pen CSS3-根据兄弟元素的数量设置样式(二) by Keekuun (@keekuun) on CodePen.

🌙 4.满幅的背景、定宽的内容

See the Pen CSS3-满幅的背景、定宽的内容 by Keekuun (@keekuun) on CodePen.

🌙 5.水平垂直居中

https://www.jianshu.com/p/c78fa42e6e78

  • 基于绝对定位的解决方案
main {
    position: absolute;
    top: 50%;
    left:50%;
    margin-top: -5em;  // height的一半
    margin-left: -3em; // width的一半
    width: 6em;
    height: 10em;
}
1
2
3
4
5
6
7
8
9
main {
    position: absolute;
    top: calc(50% - 5em);
    left:calc(50% - 3em);
    width: 6em;
    height: 10em;
}
1
2
3
4
5
6
7
main {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}
1
2
3
4
5
6
  • 基于视口(模态框的定位方式)
main {
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -3em; /* 6/2 = 3 */
	margin-left: -9em; /* 18/2 = 9 */
	width: 18em;
	height: 6em;
}
1
2
3
4
5
6
7
8
9
main {
	width: 18em;
	padding: 1em 1.5em;
	margin: 50vh auto 0;
	transform: translateY(-50%);
}
1
2
3
4
5
6
  • 基于 Flexbox
body {
	display: flex;
	min-height: 100vh;
	margin: 0;
}
main {
	margin: auto;
}
1
2
3
4
5
6
7
8
main {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 18em;
	height: 10em;
}
1
2
3
4
5
6
7

🌙 6.紧贴底部的页角

See the Pen CSS3-紧贴底部的页角(粘连定位) by Keekuun (@keekuun) on CodePen.

🌙 八、过渡与动画

🌙 1.缓动效果

  • 弹跳动画

See the Pen CSS3-紧贴底部的页角(粘连定位) by Keekuun (@keekuun) on CodePen.

  • 弹性过渡

See the Pen CSS3-动画-缓动效果-弹性过渡 by Keekuun (@keekuun) on CodePen.

🌙 2.逐帧效果

See the Pen CSS3-动画-逐帧动画-loading by Keekuun (@keekuun) on CodePen.

🌙 3.闪动效果

See the Pen CSS3-动画-闪烁效果 by Keekuun (@keekuun) on CodePen.

🌙 4.打字动画

See the Pen CSS3-动画-打字效果 by Keekuun (@keekuun) on CodePen.

🌙 5.状态平滑的动画

See the Pen CSS3-动画-状态平滑 by Keekuun (@keekuun) on CodePen.

🌙 6.沿环形路径平移的动画

See the Pen CSS3动画-圆形转动1 by Keekuun (@keekuun) on CodePen.

See the Pen CSS3-动画-圆形转动2 by Keekuun (@keekuun) on CodePen.

“ transform-origin 只是一个语法糖而已。实际上你总是可以用translate() 来代替它。” ——Aryeh Gregor

每个 transform-origin 都是可以被两个translate() 模拟出来的。比如,下面两段代码实际上是等效的:

div {
    transform: rotate(30deg);
	transform-origin: 200px 300px;
}

div {
    transform: translate(200px, 300px) rotate(30deg) translate(-200px, -300px);
    transform-origin: 0 0;
}
1
2
3
4
5
6
7
8
9

一行 CSS 代码的魅力 (opens new window)