今天这篇文章就来讲讲使用JavaScript来实现这种分屏的视觉UI效果。现在在网站上这种分屏视觉效果应用的也非常广泛,比如 Corsair website。
先把基础结构样式弄好,要实现这个效果,需要使用div来构建两个panel。第一个赋予bottom类,另外一个为top类。然后使用一个类名为splitview来包裹起来。
<div class="splitview">
<div class="panel bottom">
<div class="content">
</div>
</div>
<div class="panel top">
<div class="content">
</div>
</div>
</div>
内容区域即content可以放任何东西,图片文字等等。
然后在splitview结构外面,再添加一个div类名为handle,用来加强表示分屏的视觉效果。
<div class="handle"></div>
首先来写两个panel的样式,要实现这个效果需要用到绝对定位,所以要确保类名为top的panel在另外一个panel的上面。还有一点是为了可以自适应设备屏幕的大小,这里使用vw这个单位。
/* Panels. */
.splitview {
position: relative;
width: 100%;
min-height: 45vw;
overflow: hidden;
}
.panel {
position: absolute;
width: 100vw;
min-height: 45vw;
overflow: hidden;
}
为了区分两个panel,分别给两个panel赋予不同的背景颜色。确保top的z-index的值比另外一个panel大,就可以确保top这个panel在另外一个的上面。
.bottom {
background-color: rgb(44, 44, 44);
z-index: 1;
}
.top {
background-color: rgb(77, 69, 173);
z-index: 2;
}
要实现上面所说的分屏的效果,需要把一个panel的宽度设置为整个宽度的一半,得到如下图所示的效果:
现在整个UI效果已经完成,接下来就是使用JavaScript来实现分屏的交互效果。先定义一个函数,当DOM加载完之后才执行:
document.addEventListener('DOMContentLoaded', function() {
});
接下来先定义一些需要操作的基本变量,比如panel,handel等。
var parent = document.querySelector('.splitview'),
topPanel = parent.querySelector('.top'),
handle = parent.querySelector('.handle'),
handle是用来加强分屏的视觉表现的。
/* Handle. */
.handle {
height: 100%;
position: absolute;
display: block;
background-color: rgb(253, 171, 0);
width: 5px;
top: 0;
left: 50%;
z-index: 3;
}
为了加强分屏的视觉表现,这里handle是一个5px宽的黄色线条,高度和内容区域的高度一样,z-index是3保证它在两个panel之上。
当在视图上移动鼠标的时候,通过监听鼠标事件可以获取鼠标的坐标值即event.clientX,比如left等值。然后把值赋值给handle的left,这样就可以使handle随着鼠标的移动而移动。
parent.addEventListener('mousemove', function(event) {
// Move the handle.
handle.style.left = event.clientX + 'px';
});
同样为了实现跟随鼠标移动的分屏效果,还需要动态的改变panel的值,把panel的宽度实时根据鼠标移动的坐标值来改变即panel的宽度等于鼠标移动的值event.clientX。
parent.addEventListener('mousemove', function(event) {
// Move the handle.
handle.style.left = event.clientX + 'px';
// Adjust the top panel width.
topPanel.style.width = event.clientX + 'px';
});
一个简单的分屏视觉效果就完成了。你还可以通过样式来改变视觉的呈现,比如这里我通过css中的transform来使分屏呈现一个斜切的视觉效果,详细的代码可以去这里查看,demo地址。
本文主要是从How to Create a Split-Screen Slider With JavaScript这篇文章整理而来,有删减,有疏漏或者理解不到位的地方,还请多多指教!
虽然webkit具有遮罩的能力(webkit mask),不过webkit虽然强大,但在跨浏览器上总是它的罩门,况且在性能上也是往往会造成困扰(这也是为什么chrome要这么吃资源了),因此撇开webkit不谈,我们该用什么方法,才可以做出水波纹的效果呢?
一个box中,点击其中的任意位置,会有烟花从正下方升起到点击处,并燃放出一圈圆形的烟花。代码如下:首先是布局以及样式:只给一个盒子的布局,燃放的烟花以及绽放的小烟花都是中js代码中创建。
文字选中效果,这个可能很少有人注意过。在默认状态先一般选中的文本颜色是白字蓝底的,不过可以通过CSS进行设置。::selection定义元素上的伪选择器,以便在选定元素时设置其中文本的样式。
定义和用法slideDown() 方法通过使用滑动效果,显示隐藏的被选元素。(被选元素的高度发生变化),该效果适用于通过 jQuery 隐藏的元素,或在 CSS 中声明 display:none 的元素
页面旋转使用css3的rorateY(180deg) 实现页面的翻转,使用backface-visibility 实现正面元素翻转之后背面不可见,显示出反面的元素,demo:<div><div>反面的内容</div><div>正面的内容</div></div>
我们使用<input type=\\\\\\\"checkbox\\\\\\\">标签来实现这个效果。checkbox的选中、未选中的特性,刚好对应开关的打开、关闭;on:打开 off:关闭;开始画出off、on状态的草图
前提先了解数学算法:求遮罩层mask宽度,大图、大图显示区、小图、遮罩层;小图是大图等比缩放的,遮罩层是大图显示区缩放的,小图/大图 = 遮罩层/大图显示区,遮罩层 = 大图显示区*(小图/大图);
原理:先截一张相同位置的图片,创建一个遮罩层,然后把图片定位在相应的位置上。优点:原理简单;兼容性好,可以兼容到IE6、IE7;可以同时实现镂空多个。
问题描述:在只使用一个标签的情况下实现左边竖线。使用border;使用伪元素来实现;内/外阴影;drop-shadow;渐变 linearGradient
组件使用less,请确保已安装loader,本组件为放大镜组件,传参列表为:width: 必传,设置放大镜的宽高(正方形),放大区域等同,放大倍数为2倍,picList:必传,传入图片列表
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!