Heim >Web-Frontend >HTML-Tutorial >input的宫格输入和shift多选_html/css_WEB-ITnose

input的宫格输入和shift多选_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-21 08:54:401218Durchsuche

input的宫格输入

在做项目的对外分享时,分享有两种:一种是公开的,一种是私密的。私密的需要提取码,需要提取码就需要输入框。正常的输入框是这样的:

不正常的输入框就是这样子的:

后面的这种方式在手机端比较常见的,譬如支付宝和微信支付的密码输入。

有两种实现方式,先说简单的。

简单的实现思路是设置一个等大的 input 框和 div ,然后通过设置 z-index ,将 input 置于 div 上面,同时将 input 框的 opacity 设置趋近于 0,所以 HTML 结构应该是类似酱紫的:

<input type="text" value='提取码' maxLength="6" autoComplete="off"/><div id='pwd'>    <span>宫格1</span>    <span>宫格2</span>    <span>宫格3</span>    <span>宫格4</span>    <span>宫格5</span>    <span>宫格6</span>    <span class='custom-cursor'></span></div>

CSS :

input {  position: absolute;  z-index: 10;  top: 0;  left: 50%;  transform: translateX(-50%);  opacity: 0.01;  height: 34px;  width: 232px;  box-sizing: border-box; }#pwd{    position: absolute;    top: 0;    left: 50%;    height: 34px;    width: 232px;    overflow: hidden;    color: #0d9aff;    box-sizing: border-box;    transform: translateX(-50%);  }  .custom-cursor{     position: absolute;     top: 5px;     left: 2px;     width: 1px;     height: 22px;     border: 1px solid black;     animation:mymove .3s infinite; } @keyframes mymove {    0%{        opacity: 0;    }    100%{        opacity: 1;    }}

因为 input 框是不可见的,所以要模拟一个光标,作为一个输入的提示。光标的偏移距离要根据输入自动去计算。

另一种实现方式比较复杂,不仅需要根据输入来计算 input 框自身的偏移距离,还需要计算所用字体的宽高,因为 input 框的偏移距离和所用的字体是相关的。部分在线编辑器就采用类似的方式来实现的,但取而代之的是 textarea 。

Shift多选

Shift 多选在文件管理器或资源管理器中是很常见的操作,OS X 和 Windows 对 shift 多选的实现方式也不尽相同。

在我看来,shift 多选的有两个比较难的点:一是怎么确定边界,二是怎么确定选择的方式。相对来说,后者比较容易实现。

确定边界的情况和操作比较复杂,如下图:

在我们自身的项目中,对 shift多选采取的是比较简单的实现方式,所以图示是针对我们自身的业务场景来实现的,不具遍普遍性,但可以提供参考的思路。

朋友分享了一份北京游的方案给我,在此,分享给你们:

链接: https://pan.sankuai.com/plink/m6C1r1Sf1BiE ,提取码:4E0BzJ

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn