前言
1.扩大可点击区域
在移动端的时候,我们往往需要增加可点击区域,比如下面这个,本身比较小,那我们如何让其可点击区域变大呢?
常用做法是增加透明边框,但如果我们吧边框用了,我们还想增加边框样式怎么办,我们就可以借用box-shadow来模边框效果,代码如下:
1 | button { |
其中,默认背景会蔓延到边框的下层,所以我们需要使用background-clip控制背景裁剪区域,当然我们还可以使用伪元素来实现增加可点击区域:
1 | button:before { |
2.自定义复选框
我们都知道,默认的复选框很难使用样式修改,所以我们只能使用默认样式,但是默认样式不美观,所以我们不得不寻找一些新的点子解决这个问题,其中的一个思路就是使用label标签模拟复选框行为,然后将真正的复选框隐藏掉,代码实现如下:
1 | input[type="checkbox"] { |
详情查看这个demo
3.遮罩层
平时我们实现遮罩层往往都是使用一个div实现的,但是我们能不能不用页面元素实现呢,于是我们又想到了伪元素,但是伪元素不能相应用户点击事件,比如用户点击遮罩层消失的效果,其实我们还可以通过box-shadow方案实现这一效果,代码如下:
1 | .lightbox { |
这里的vmax指的是1vw和1vh中的较大者,而100vw则是指整个屏幕的可视宽度,所以我们的设置的值为50vmax,也就是此时阴影大小是50vw + 50vw +元素自身宽度。但是这个遮罩层不会阻止默认鼠标交互,也就是鼠标可以继续滚动页面,当页面可滚动时。
当然还有一个浏览器自带的模态框元素dialog但是目前似乎只有谷歌支持。
4.滚动条提示
在滚动的时候,当底部有内容时,则显示一个阴影部分,从而提示底部还有内容,代码如下:
1 | ul { |
详情可点这个demo。
交互式图片对比控件
假如我们要对比两张图片前后的异同,那会怎么实现呢,直接放上两张图片,这样似乎只能看到较大的区别的,一些细微的地方可能就很难捕捉到了,所以我们现在有以下的设计稿:
通过拖拽下三角可以显示之前与之后的图片对比。
这里我们借助于一个resize属性,这个属性不只是可以作用于textare,其他元素也是可以的,只要求它的overflow的属性值不是visible就可以,我们有以下HTML布局:
1 | <div class="image-slider"> |
css样式:
1 | .image-slider { |
效果如下:
我们是可以拖拽了,但是没有按钮提示用户拖拽的按钮提示,于是我们通过伪元素实现这种效果,css代码如下:
1 | .image-slider > div:before { |
最终实现了这种效果,详情可点这个demo。