CSS技巧。
:empty 区分空元素
兼容性::empty
1 | <div class="item">not empty</div> |
1 | /* 选择空元素 */ |
让空a标签显示href
1 | a:empty::after { |
:in-range和:out-of-range
用于在指定范围限制之内和之外设置输入样式。
See the Pen Untitled by ly023 (@ly023) on CodePen.
text-align-last对齐两端文本
兼容性:text-align-last
1 | li { |
改变文字书写顺序 direction与unicode-bidi
参考:https://www.cnblogs.com/dolphinX/p/4087816.html
1 | .reverse { |
英文换行连字符 hyphens: auto
See the Pen hyphens-英文换行连字符 by ly023 (@ly023) on CodePen.
文字竖排
writing-mode
1 | writing-mode: vertical-rl; /* 阅读的顺序是从右往左 */ |
text-combine-upright
兼容性:https://www.caniuse.com/mdn-css_properties_text-combine-upright
text-combine-upright: all
:将元素内的字符水平排列,使其在竖行中占据单个字符空间。
文字竖向,数字横向:
文本大小写 text-transform
所有主流浏览器都支持text-transform
属性。
单词首字母大写:
text-transform: capitalize
全大写:
text-transform: uppercase
全小写:
text-transform: lowercase
:placeholder-shown设置输入框显示placeholder时的样式
注意:元素有占位符时才生效,输入文本后样式还原。
See the Pen placeholder-shown-设置输入框展示placeholder时的样式 by ly023 (@ly023) on CodePen.
自适应宽度 width:min-content
元素的宽度根据子元素的最大固定宽度自适应
1 | .parent { |
控制滚动到边界时的表现 overscroll-behavior
overscroll-behavior
控制浏览器滚动到边界时的表现。
auto: 默认值
contain: 当一个元素滚动到边界时,不会再影响临近的滚动元素
none: 和
contain
一样,当一个元素滚动到边界时,不会再影响临近的滚动元素,滚动到边界的表现也会被阻止(例如 Android 炫光或 iOS 回弹)
contain
和none
的差异主要体现在移动端
可实现当子元素滚动到顶部或底部时,不影响父元素的滚动:
控制滚动锚定行为 overflow-anchor
滚动锚定(Scroll Anchoring):当前视区上方DOM元素高度变化时,浏览器自动改变滚动高度,从而保证视区内容不变。
overflow-anchor
:提供一种退出浏览器滚动锚定行为的方法,该行为会调整滚动位置以最大程度地减少内容偏移。
默认情况下,在任何支持滚动锚定行为的浏览器中都将其启用。
关闭滚动锚定行为:overflow-anchor: none
锚点平滑定位 scroll-behavior: smooth
1 | scroll-behavior: smooth; |
See the Pen 锚点平滑定位 (scroll-behavior: smooth) by ly023 (@ly023) on CodePen.
控制滚动停留位置 scroll-snap-type
See the Pen scroll-snap-type-滚动优化 by ly023 (@ly023) on CodePen.
带阴影三角形箭头 filter: drop-shadow(不规则形状绘制阴影)
1 | filter: drop-shadow(5px 5px 10px #000); |
See the Pen filter: drop-shadow实现带阴影三角形箭头 by ly023 (@ly023) on CodePen.
网站(全站)置灰(悼念模式)filter: grayscale()
1 | html { |
网站首屏置灰 mix-blend-mode: color + pointer-events: none
1 | html { |
See the Pen Gray Website By MixBlendMode by ly023 (@ly023) on CodePen.
简单的网页夜间暗模式 filter: invert(1)
1 | html { |
See the Pen filter: invert(1) by ly023 (@ly023) on CodePen.
适配深色模式 prefers-color-scheme
兼容性:prefers-color-scheme media query
1 | @media (prefers-color-scheme: dark) { |
See the Pen Untitled by ly023 (@ly023) on CodePen.
图片裁剪矩形镂空效果 outline
1 | <div class="box"> |
1 | .clipping-region { |
文字环绕shape-outside
定义了一个可以是非矩形的形状,相邻的内联内容应围绕该形状进行包装。
兼容性:CSS property: shape-outside
See the Pen shape-outside by ly023 (@ly023) on CodePen.
标题跨列column-span
多列布局中,通过给标题设置column-span: all
,使标题跨列展示:
1 | .title { |
See the Pen column-span 标题跨列展示 by ly023 (@ly023) on CodePen.
使用表情符号自定义光标
参考文章:Use custom Emoji as a cursor using CSS 😜.
在SVG
标签内添加表情符号,它将把表情符号渲染为光标指针:
1 | cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='48px' height='48px'><text y='50%' style='font-size: 24'>❄️</text></svg>") |
使用表情符号自定义favicon
所有现代浏览器都支持SVG格式的favicon,利用这点可以将任何Emoji转换为favicon。
SVG文件:
1 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"> |
使用:
1 | <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⛅️</text></svg>"> |