pointer-events
把值设置为none可以让元素不捕获事件,可以理解为让他看得见摸不着
源:应用举例及扩展
currentColor
是color属性的值,border: 1px solid currentColor; 继承自color
user-select
禁止选择文本
1 ::selection { user-select: none; }
selection
可设置文字被选择时的样式
1
2 ::selection { background: #FE6E66;color: #FFF;}
::-moz-selection { }
image-set
在不同设备像素比的屏幕下,自动加载2倍,3倍图
1
2
3 div { background-image: image-set( url(test@2x.png) 2x,
url(test@3x.png) 3x );
}
object-fit
解决img图片变形问题, cover自适应裁剪,contain全包容
backdrop-filter
它可以实现 filter 的绝大多数效果,但仅对背景生效。background-color: rgba(255, 255, 255, 0.5);-webkit-backdrop-filter: blur(10px);
mix-blend-mode
实现photoshop里的各种图层叠加效果
text-transform
属性控制文本的大小写。uppercase,lowercase,capitalize
font-family
在 iOS 和 macOS 的 Safari 和 web view 中使用系统默认 UI 字体。/ 如果要兼容 10.10 请使用 -apple-system-font。/
1 .class{ font-family: -apple-system; }
backface-visibility
属性定义当元素不面向屏幕时是否可见。如果在旋转元素不希望看到其背面时,该属性很有用。
1 .class{ -webkit-backface-visibility: hidden; }
clip-path
clip-path inset图片剪裁
源:clip-path路径剪裁遮罩属性简介
contain
属性允许开发者声明当前元素和它的内容尽可能的独立于其他部分的 Dom 树。
源:5个你可能不知道的CSS属性
direction:ltr | rtl
检索或设置文本流的方向。
-webkit-font-smoothing
让页面里的字体变清晰
calc
百分数可以-分辨率。
在用easy Less时自动转换时会将calc内的表达式计算,解决方案如下片断二
1
2 *{width: calc(100% - 90px) } //片断一,正常情况
*{width: calc(~"100% - 90px")} // 片断二,easy less时
关于如何去掉手机浏览器都会给网页的onclick事件一个点击效果
1 | *{-webkit-tap-highlight-color:rgba(0,0,0,0);} |
现在很多for Mobile的HTML5网页内都有快速滚动和回弹的效果,看上去和原生app的效率都有得一拼。
1 | div{ -webkit-overflow-scrolling: touch;} |
去掉手机浏览器上表单的内阴影
1 | input[type="button"],textarea { -webkit-appearance: none;} |
从左边飘过来的css代码
1 | aside { |
超过多行时自动加省略号
1 | .whitespace2{ |
百分比失效
border-radius百分比失效
Android2.3.x
设置一个较大值,解决方案:border-radius:9999px
css的line-height属性会有2px的上移
placeholder属性设置的文字向上偏移的厉害 Android 机型,小于12px时更明显。
解决方案:line-height:normal,效果不太好,用padding撑也不太好,如果哪个大神有高招,还请指点一下
counter
perspective透视,视角
perspective这玩意是做3D效果的,但为甚我做demo楞没看出perspective加上去有任何3D。拜读过 张鑫旭 的博文后才了解perspective是透视(学美术,建筑的肯定懂,不懂得我也解释的不专业,个人理解为景深)。既然perspective是透视,从理解上说就应该用在场景样式上,场景有了透视元素就能做3D特效了。
perspective在Z轴上,而perspective是设置Z轴的长度。在css3中只有设置了perspective的值元素才会有Z轴,perspective为none元素则没有Z轴(就是2D元素)。
- rotateZ:div围绕Z轴旋转,以div中心点为轴心旋转
- rotateX:div围绕X轴旋转,以div横向中轴为轴心前后翻转
- rotateY:div围绕Y轴旋转,以div纵向中轴为轴心左右翻转
1 | <nav> |
1 | body { |
input[range]自定义样式
美化滑动控件,需要完成以下的五个步骤:
- 去除系统默认的样式;
- 给滑动轨道(track)添加样式;
- 给滑块(thumb)添加样式;
- 根据滑块所在位置填充进度条;
- 实现多浏览器兼容。
如果想要实现填充进度条的效果,在IE 9以上的浏览器中可以使用 ::-ms-fill-lower
和 ::-ms-fill-upper
来自定义进度条;在Firefox浏览器中则可以通过 ::-moz-range-progress
来自定义;而Chrome浏览器中不支持直接设置进度条,而达到填充的效果,所以首先针对Chrome浏览器来实现整个流程。
1 | input[type=range] { |
如果要兼容Firefox浏览器,只需要把上述css代码中的 ::-webkit-slider-runnable-track
替换为 ::-moz-range-track
,就可以完成对轨道的美化了;
把css代码中的 ::-webkit-slider-thumb
替换为 ::-moz-range-thumb
,这是对滑块的样式进行改造;
而如果是要填充进度条就很简单了,不需要调用js了; 只需要新增如下的css代码即可
1 | input[type=range]::-moz-range-progress { |
如果要想兼容IE 9以上版本的浏览器,对上述css代码要修改的地方稍微多了一些,下面先将针对IE 9+的css代码贴出来
1 | input[type=range] { |
参考:自定义(滑动条)input[type=”range”]样式
CSS Grid 布局完全指南
CSS Grid 布局是 CSS 中最强大的布局系统。与 flexbox 的一维布局系统不同,CSS Grid 布局是一个二维布局系统,也就意味着它可以同时处理列和行。通过将 CSS 规则应用于 父元素 (成为 Grid Container 网格容器)和其 子元素(成为 Grid Items 网格项),你就可以轻松使用 Grid(网格) 布局。
参考:CSS Grid 布局完全指南 写给自己看的display: grid布局教程
css 渐变生成加号减号三角
1 | .tri { |
参考:CSS3 linear-gradient线性渐变实现虚线等简单实用图形
css 去掉google自动填充的黄色背景
1 | input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill { |
css :focus-within
元素自身或者它的某个后代匹配:focus伪类1
2
3div:focus-within {
background: cyan;
}
文字渐变色
IE不支持,需要容器为行内(块)元素
1 | label { |
边框渐变色
1 | div { |
filter: hue-rotate
色调旋转滤镜实现按钮颜色更改
1 | button { |
参考:CSS filter:hue-rotate色调旋转滤镜实现按钮批量生产
scroll-behavior:smooth
scroll-behavior:smooth
写在滚动容器元素上,可以让容器(非鼠标手势触发)的滚动变得平滑。
1 | // 等同于 |
如果我们的网页已经通过CSS设置了
scroll-behavior:smooth
声明,则我们直接执行target.scrollIntoView()
方法就会有平滑滚动,无需再额外设置behavior
参数。
CSS scroll-behavior和JS scrollIntoView让页面滚动平滑
单位尺寸
- vw (viewport width) - 浏览器窗口宽度的1%。
- vh (viewport height) - 同上,只不过用来描述高度。
- vmin and vmax 设置介于vh和vw之间的最大最小值。
@Supports
检测某些设定是否被浏览器所支持,并非所有的浏览器都支持它,但是你仍然可以使用它作为基本的检测手段1
2
3
4
5
6
7
8
9
10
11
12
13@supports (display: flex) {
div { display: flex; }
}
/*You can check prefixes*/
@supports (display: -webkit-flex) or (display: -moz-flex) or (display: flex) {
section {
display: -webkit-flex;
display: -moz-flex;
display: flex;
float: none;
}
}