- Published on
总结一些不常用的css 有一些存在兼容问题
- Authors
- Name
- lcorz
css变量
主要浏览器已经都支持
声明变量的时候,变量名前面要加两根连词线(--)。
// 全局声明
:root{
--main-color: #4d4e53;
--main-bg: rgb(255, 255, 255);
--logo-border-color: rebeccapurple;
}
// 局部声明
body {
--foo: #7F583F;
--bar: #F7EFD2;
}
var()函数用于读取变量
a {
color: var(--foo);
text-decoration-color: var(--bar);
}
var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。第二个参数不处理内部的逗号或空格,都视作参数的一部分。var()函数还可以用在变量的声明。
color: var(--foo, #7F583F);
font-family: var(--font-stack, "Roboto", "Helvetica");
:root {
--primary-color: red;
--logo-text: var(--primary-color);
}
JavaScript 操作 CSS 变量的写法如下。
// 设置变量
document.body.style.setProperty('--primary', '#7F583F');
// 读取变量
document.body.style.getPropertyValue('--primary').trim();
// '#7F583F'
// 删除变量
document.body.style.removeProperty('--primary');
计算函数
减号、加号运算符首尾必须要有空格
.selector {
width: calc(100% / 3 * 2 - 5px + 10px)
}
禁用鼠标事件、移动端禁止图片长按保存功能
/* PC、移动端都禁止点击事件 */
.no-events {
pointer-events: none
}
/* 移动端禁止长按呼出菜单 似乎仅适用于ios*/
.no-callout {
-webkit-touch-callout: none
}
补充一点pointer-events: none
的使用就是用来穿透遮罩选择底部元素pointer-events穿透
移动端禁止用户长按文字选择功能
.unselect {
-webkit-touch-callout:none;
-webkit-user-select:none;
-khtml-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none
}
移动端重置某些样式
-webkit-appearance:none
常用于IOS下移除原生样式
input[type=button]{
-webkit-appearance:none;
outline:none
}
修改input placeholder 样式
::-webkit-input-placeholder { /* Chrome/Opera/Safari */
color: pink;
}
::-moz-placeholder { /* Firefox 19+ */
color: pink;
}
:-ms-input-placeholder { /* IE 10+ */
color: pink;
}
:-moz-placeholder { /* Firefox 18- */
color: pink;
文字渐变
.text-gradient {
background-image: -webkit-gradient(linear, 0 0, 0 bottom, from(rgb(63, 52, 219)), to(rgb(233, 86, 86)));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent
}
文字使用背景图
.text{
background-image: url('');
background-size: cover;
-webkit-background-clip: text;
color: transparent
}
多行省略
.hide-text-n {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: n;
overflow: hidden
}
移动端顺畅滚动
.scroll-touch {
-webkit-overflow-scrolling: touch
}
吸顶操作(好东西倒是好东西,兼容性不咋地)
.sticky {
position: -webkit-sticky;
position: sticky;
top: 50px; // 可以通过top控制位置
}
硬件加速(使用gpu加速 而不是使用浏览器软件渲染引擎)
尽量避免使用left和top制作动画尽量用transform
.cube {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0)
}
锚点平滑过渡(支持度也不咋地)
smooth允许滚动时采用平滑过渡,而不直接翻到相应位置
body {
scroll-behavior: smooth;
}
改变input光标颜色(兼容还凑合)
.input {
caret-color: red
}
倒影
方向: above | below | left | right
间隔 遮罩
div {
-webkit-box-reflect: below 0 -webkit-linear-gradient(top, rgba(250, 250, 250, 0), rgba(250, 250, 250, 0.3))
}
filter
blur(px) 给图像设置高斯模糊
brightness(%) 亮度
contrast(%) 对比度
grayscale(%) 灰度图像
sepia(%) 转褐色
等等等... 可自行查阅
overscroll-behavior
overscroll-behavior属性允许用户在到达内容的顶部或底部时覆盖浏览器的默认行为 —— 溢出滚动行为。
- auto - 默认。元素的滚动会传播给祖先元素。
- contain - 阻止滚动链接。滚动不会传播给祖先,但会显示元素内的原生效果。例如,Android 上的炫光效果或 iOS 上的回弹效果,当用户触摸滚动边界时会通知用户。
- none - 和 contain 一样,但它也可以防止节点本身的滚动效果。
object-fit
类似background-size
object-fit: fill; // 填满
object-fit: contain;
object-fit: cover;
object-fit: none;
object-fit: scale-down; // contain none 取小的那个
object-position
类似background-position
backface-visibility
hidden 不可见 visible 可见
div{
backface-visibility:hidden;
-webkit-backface-visibility:hidden; /* Chrome 和 Safari */
-moz-backface-visibility:hidden; /* Firefox */
-ms-backface-visibility:hidden; /* Internet Explorer */
}