关闭

使用 JavaScript 实现分屏视觉效果

时间: 2017-11-13阅读: 3412标签: 效果

今天这篇文章就来讲讲使用JavaScript来实现这种分屏的视觉UI效果。现在在网站上这种分屏视觉效果应用的也非常广泛,比如 Corsair website

html结构

先把基础结构样式弄好,要实现这个效果,需要使用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的宽度设置为整个宽度的一半,得到如下图所示的效果:

JavaScript

现在整个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. */
.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之上。

移动handle

当在视图上移动鼠标的时候,通过监听鼠标事件可以获取鼠标的坐标值即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这篇文章整理而来,有删减,有疏漏或者理解不到位的地方,还请多多指教!

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/95

以轮播效果为案例谈如何写优质代码

作为程序员大家在写代码时谈的最多的就是代码的拓展性、复用性。本文就以大家熟悉的轮播效果为案例,讲一讲写优质代码的思路和实践。文章分三个步骤。第一步,实现基本功能

JavaScript实现许愿墙效果

初始化自动生成两个愿望签;输入框失去焦点或者按回车键,会生成愿望签;点击关闭会删除愿望签;可以拖动愿望签,并且不能拖出可视窗口

纯CSS实现两个球相交的粘粘效果

这是一个纯粹利用CSS所做出来的效果,这个效果说穿了就是一个图像处理的原理,做法跟Photoshop里头的几乎一模一样,只是一个用图层和色版来制作,一个则是用CSS(把div当成图层思考就好了)。

CSS3转换

改变元素在页面中位置,大小,角度以及形状的一种方式:2D转换:只在x轴和y轴上发生转换效果,3D转换:增加了z轴的转换效果

jQuery 效果方法summary

定义和用法slideDown() 方法通过使用滑动效果,显示隐藏的被选元素。(被选元素的高度发生变化),该效果适用于通过 jQuery 隐藏的元素,或在 CSS 中声明 display:none 的元素

css 遮照镂空效果

一:最简单最粗暴的方法!截图!二:利用css3的阴影效果。三:利用css的边框属性。四:最麻烦的一个,利用canvas的绘图功能。五:遮罩层加box

css制作从下往上逐渐显示的div

其中div1是整个容器,div2是需要从下往上显示的div。如果只是改变height高度的话,会导致div从上往下慢慢显示,所以并不能直接设置div2的高度来达成效果,此时我们需要一个遮罩mask来帮助div2达成想要的效果。

如何用 CSS Animations 实现滑动图片展现文字的效果

在这篇文章中,我希望能带领大家了解一下 CSS animation property ,以及详细地解释我的个人网站 中的一个效果:让文字在移动的物体后出现。如果你想要看最后的成果,这里有一个例子 。

css3 斜切角/斜边的实现方式

设计图含有斜切角的效果时,我们一般想到的方法是切出四个角为背景,然后用border连起来,这样就能显示出该效果了,那么直接使用css呢?下面就整理css做斜边的效果。

css3实现半圆和圆效果

在css2中,如果需要失效一些圆角或者半圆等等效果,一般是要通过ps等软件来处理的,在CSS3中,则不需要了,只需要通过border-radius就可以实现,大大方便了开发的效率。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!