全目录
本系列文章,主要是围绕css3属性,实现我们常见的各种效果,这些效果都是我们实战开发中经常可以用到的效果:
- css揭秘实战技巧- 背景与边框 [一]
- css揭秘实战技巧- 形状 [二]
- css揭秘实战技巧 - 视觉效果[三]
- css揭秘实战技巧 - 字体排印[四]
- css揭秘实战技巧 - 用户体验[五]
- css揭秘实战技巧 - 结构与布局[六]
- css揭秘实战技巧 - 过渡与动画[七]
前言
- 选用合适的鼠标光标
- 扩大点击区域
- 通过阴影来弱化背景
- 通过模糊来弱化背景
- 滚动提示
一:选用合适的鼠标光标
平时开发中,我们经常会这是鼠标光标的效果,那最长设置的就是cursor:pointer;表示可点击的,那么其实还有其他一些我们不常用,但却非常有用的光标效果:
- pointer: 可点击
- not-allowed: 不允许点击
- context-menu:表示元素有上下文菜单
- move: 表示元素可以移动的时候
- help: 有帮助信息的时候
- copy: 比如:某一按钮点击会将文案复制到其他地方或者剪切板的效果,就可以设置为copy
- none: 不显示鼠标光标(某些不希望用户操作的时候,该效果是可以使用的)
以下是所有光标的效果:我们只需要记住上面这些常用的效果即可。 css2.1内置光标效果:


二:扩大可点击区域
这也是我们平时做页面的时候,可以优化的一点,尽可能的扩大可点击区域,这样用户更容易到底可点击的区域。
例如下图:我们不要只给➕ 设置点击 事件,而是给整个圆圈区域设置点击事件。

三:通过阴影来弱化背景
首先,我们来看一下效果:

方案一:阴影部分用一层div包括,并且设置透明度,
/* 用于遮挡背景 */ position: fixed;
.overlay {
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,.8);
}
/* 需要吸引用户注意的元素 */
.lightbox {
position: absolute; z-index: 1;
/* [其余样式] */
}
方案二:用伪元素代替 外层的div
.lightbox::before {
position: fixed; top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
background: rgba(0,0,0,.8);
}
缺点:伪元素无法绑定独立的javascript事件处理的回调函数。
方案三:采用box-shadow
box-shadow: 0 0 0 999px rgba(0,0,0,.8); //此时阴影半径必须设置的足够大
或者
box-shadow: 0 0 0 50vmax rgba(0,0,0,.8); //将阴影半径设置为视口的宽高。
缺点:阴影也无法绑定独立的javascript事件处理的回调函数。
方案四:采用dialog的backdrop属性
//设置dialog元素的::backdrop伪元素,
dialog::backdrop {
background: rgba(0, 0, 0, .8);
}
确定:浏览器的兼容性有限
四:通过模糊来弱化背景
首先,来看一下我们想要实现的效果:

代码如下:
<main>Bacon Ipsum dolor sit amet...</main>
<dialog>
O HAI, I'm a dialog. Click on me to dismiss.
</dialog>
main{
filter: blur(3px) contrast(.8) brightness(.8);
}
五:滚动提示
首先,我们看一下效果:

代码如下:
ul {
overflow: auto;
width: 20em;
height: 12em;
padding: .3em .5em;
border: 1px solid silver;
background: linear-gradient(white, white) 0 0 / 100% 50px,
radial-gradient(at top, rgba(0,0,0,.2), transparent 70%) 0 0/ 100% 15px,
linear-gradient(to top, white, white) bottom/ 100% 50px,
radial-gradient(at bottom, rgba(0,0,0,.2), transparent 70%) bottom/ 100% 15px;
background-repeat: no-repeat;
background-attachment: local, scroll, local, scroll;
}