选用合适的鼠标光标

css3提供了一大批内建光标(cursor)
其中某些光标很突出,因为只需要花费极少的代码,就可以迅速地提升大量网页应用的可用性。
比如禁用(not-allowed),比如,公共触摸屏中隐藏光标,可以直接使用cursor:none搞定,而不需要额外的透明图片。

扩大可点击区域

将点击区域(热区)向外扩张可以提升可用性。

cursor: pointer;
border: 20px solid transparent; /*使用透明边框增大热区面积,但box-shadow和outline并不能*/ background-clip: padding-box; /*阻止背景扩大到边框下面*/ box-shadow: 0 0 0 1px rgba(0,0,0,.5) inset; /*模拟原有边框*/ 

自定义复选框

思路:使用与复选框绑定的label的伪元素模拟一个勾选框,可以自定义其样式,将原来的复选框隐藏。这种方式被称为“复选框hack”。

<input type="checkbox" id="awesome" disabled="true" checked="true">
<label for="awesome">Awesome</label> #awesome + label::before{ content: '\a0'; /*不换行空格*/ display: inline-block; vertical-align: .2em; width: .8em; height: .8em; margin-right: .2em; border-radius: .2em; background: silver; /*text-indent: .15em;*/ line-height: .65; } 

添加选中的样式:

#awesome:checked + label::before{ content: '\2713'; /*不换行空格*/ background: yellowgreen; } 

隐藏原来的复选框:

#awesome{position: absolute;clip: rect(0,0,0,0); /*clip只应用在已定位的元素上*/ } 

还可以添加聚焦的样式:

#awesome:focus + label::before{ box-shadow: 0 0 .1em .1em #58a; }

禁用样式:

#awesome:disabled + label::before{ background: gray; box-shadow: none; color: #333; }

开关式按钮

各种需要保持状态的UI组件,比如模态对话框、下拉菜单、标签页、跑马灯等,都可以使用上面的“复选框hack”的思路模拟,只不过开关式按钮不需要伪元素,直接把label设置为按钮的样式就可以了。

#switch{position: absolute;clip: rect(0,0,0,0); } #switch + label { font-size: 1.5em; display: inline-block; padding: .3em .5em; background: #ccc; background-image: www.97yingyuan.org linear-gradient(#ddd, #bbb); border: 1px solid rgba(0,0,0,.2); border-radius: .2em; box-shadow: 0 1px white inset; text-align: center; text-shadow: 0 1px 1px white; } #switch:checked + label{ box-shadow: .05em .1em .2em rgba(0,0,0, .6) inset; border-color: rgba(0,0,0,.3); background: #bbb; }

通过阴影来弱化背景

增加一层半透明遮罩把后面的一切整体调暗,来凸显某个特定的UI元素。

方案一:
增加一个额外的HTML元素用于遮挡背景:

.overlay{position:fixed;top: 0; bottom: 0; right: 0; left:0; background: rgba(0,0,0,.8); } .lightbox{ position: absolute; z-index: 1; } 

这个方法稳定可靠,但需要增加一个额外的元素。

方案二:
使用伪元素。

body.dimmed::before{position:fixed; top: 0; bottom: 0; right: 0; left:0; background: rgba(0,0,0,.8); }

这个方法移植性不好,<body>的伪元素可能被其他需要占用了。

或者,可以把遮罩交给要凸显的元素的伪元素来实现,伪元素设置z-index:-1;
但是,这样不能保证遮罩出现在这个元素后面,还是这个元素的父元素或祖先元素后面。
另外,伪元素无法绑定独立的JavaScript事件处理函数。

方案三:
使用box-shadow模拟遮罩。

box-shadow: 0 0 0 50vmax rgba(0,0,0,.8); 

这里的扩张半径用了vmax这个单位。首先,一个固定值无法满足不同屏幕大小的情况。然后只能用视口单位来解决。1vmax相当于1vw和1vh两者中的较大值。100vw等于整个视口的宽度,100vh相当于视口的高度。
这个方案有两个严重的问题:

  • 遮罩层的尺寸和视口有关,当我们滚动页面时,遮罩层就露出来了,除非给它加上position:absolute;。所以要么页面不需要滚动,97影院要么加固定定位。

  • box-shadow不能捕获指针事件,而且也不能阻止鼠标和其他组件交互,只能在视觉上引导注意力。

方案四:
使用<dialog>元素及其::backdrop伪元素

dialog::backdrop{background: rgba(0,0,0,.8); }

但是目前这个元素支持度不高。。

通过模糊来弱化背景

为了达到“景深效果”,也就是当我们的实现聚焦在较近的物体上时,远处的背景就是虚的,我们可以用之前的毛玻璃效果,但是要模糊掉除了凸显元素之外的其他所有元素,不能将虚化滤镜放在<body>元素上,因为,这样,要凸显的元素也被模糊掉了。这时,我们需要一个<mian>元素包裹住页面上除了弹出框之外的所有内容元素。当弹出一个对话框时,就给这个元素加一个类,来应用模糊滤镜。

main{transition: filter 1s;
}
main.de-emphasized{ filter: blur(5px) contrast(.8) brightness(.8); } dialog{ box-shadow: 0 0 0 50vmax rgba(0,0,0, .2);/*回退方案*/ } 

滚动提示

要实现滚动元素时,容器上下有淡淡的阴影提示,如:

ul{overflow: auto;width: 10em; height: 8em; padding: .3em .5em; border: 1px solid silver; margin-right: -15px; background: linear-gradient(white 30%, rgba(255,255,255,0)), /*上面遮罩层*/ radial-gradient(at top, rgba(0,0,0, .3), transparent 70%),/*上面阴影层*/ linear-gradient(rgba(255,255,255,0) 30%, white),/*下面遮罩层*/ radial-gradient(at bottom, rgba(0,0,0, .3), transparent 70%);/*下面阴影层*/ background-attachment: local, scroll, local, scroll; /*遮罩层设为local,阴影层默认值*/ background-size: 100% 50px, 100% 15px,100% 50px, 100% 15px; background-repeat: no-repeat; background-position: top, top, bottom, bottom; } 

background-attachment的一个新属性local,会随内容滚动,当滑到最顶端时,上面的遮罩层遮住阴影层,滑到最底端时,下面的遮罩层遮住阴影层;在中间时,两个阴影层不会被遮住。

转载于:https://www.cnblogs.com/xinshijue6080/p/7868546.html

css揭秘笔记——用户体验相关推荐

  1. 《破茧成蝶》读书笔记---用户体验

    用户体验首先是要解决用户的某个实际问题,其次是让问题更容易解决,最后是给用户留下深刻的印象,让他在整个过程中产生美好的体验. 用户体验设计首先应该是理性的(解决具体问题),其次才是感性的(设计的美观度 ...

  2. css揭秘笔记——背景与边框

    背景与边框 半透明边框 知识点 background-clip: [border-box] |[padding-box] | [content-box];hsla(<色相>, <饱和 ...

  3. css 左边阴影_css揭秘-用户体验

    选用合适的鼠标光标 难题 鼠标指针的用途不仅在于显示鼠标在屏幕上的位置,还可以告诉用户当前可以执行什么动作.这在桌面应用程序中是十分普遍的用户体验实践,但在网页应用中却往往被忽视. 解决方案 css3 ...

  4. 《CSS揭秘》读书笔记

    摘要 <CSS揭秘>主要是介绍了使用CSS的技巧,通过47个案例来灵活的使用CSS进行实现,同时在实现过程中注重CSS代码的灵活性与健壮性.通过阅读这本书有利于我们编写高质量的CSS代码以 ...

  5. CSS 揭秘-阅读笔记:(Ch5-Ch6)

    CSS 揭秘 阅读笔记:(Ch5-Ch6) CSS 揭秘 阅读笔记:(Ch5-Ch6) Ch5 字体排印 5.20 连字符断行 5.21 插入换行 5.22 文本行的斑马条纹 5.23 调整tab 的 ...

  6. 《CSS揭秘》笔记(一)

    前言 我们在现代 CSS 中所面临的挑战已经不在于如何绕过这些转瞬即逝的浏览器 bug.如今的挑战是,在保证 DRY ① .可维护.灵活性.轻量级并且尽可能符合标准的前提下,把我们手中的这些CSS特性 ...

  7. css 揭秘-读书笔记

    css 揭秘 [希]Lea verou 著 css 魔法 译 该书涵盖7大主题,47个css技巧,是css进阶必备书籍,开阔思路,探寻更优雅的解决方案.这本书完全用css渲染出的html写成的(布局. ...

  8. 职场笔记[0702]:用户体验和创业

    职场笔记[0702]:用户体验和创业 "需要说明,用户体验不是震撼性创新,而是把1000个细节做好的关照.就是说,重点并不在于创造一些前所未有的功能,而是把一些此前未被注意的使用障碍消除.. ...

  9. html表ge模板_16款用户体验优秀的HTML CSS价格表格模板 附演示及下载

    网友热度 159,461 ℃ - 4条评论 如果我们在访问某些产品销售类网站的时候,看到产品的价目展示用户体验,很大程度上会影响我们的购买需求,所以说我们在自己.客户的网站价目表格展示的时候,用上特有 ...

最新文章

  1. 数据科学家成长指南(下)
  2. SAP MRKO Error - For document type RE, an entry is required in field Reference -
  3. 创业公司Starry拟推1G网速的无线宽带服务
  4. Qt Charts基本组成
  5. pytorch:一维线性回归(二)
  6. mysql多实例复制,Mysql实例使用Rotate Master实现MySQL 多主复制的实现方法
  7. 如何做好内容策划并完成一篇合格的深度文?
  8. 图片服务 - thumbor可用的探测器
  9. python读取坐标文本文件_使用python读取txt坐标文件生成挖空矿山_探矿批量
  10. Android学习笔记09:Paint及Canvas的简单应用
  11. validate参数校验和数据回显
  12. 各国程序员薪资水平,看完我想静静。。。
  13. Python 树表查找_千树万树梨花开,忽如一夜春风来(二叉排序树、平衡二叉树)
  14. window上装python,pip
  15. adc网络语什么意思_王者荣耀游戏术语解释 ADC是什么意思
  16. 详解后端工程师必看学习路线图(含初、中、高阶)
  17. BUPT OJ143 Triangle
  18. python遍历文件夹下文件 批量重命名
  19. Cadence快速画原理图封装(适合复杂器件)
  20. 粉丝福利 | 秒 get 支付宝同款扫码组件

热门文章

  1. 利用Proceesson在线绘制流程图实例演练!流程图的要点和注意事项说明
  2. C# 学习笔记(7) 进程
  3. freeRtos学习笔(3)临界区管理
  4. delphi面向对象(1)
  5. Sonya and Queries CodeForces - 714C
  6. CSDN如何自动生成目录
  7. Python进阶05 循环设计
  8. SSD算法 模板 匹配
  9. boxfilter 函数
  10. opencv Remap 图像的映射