使用 JavaScript 实现分屏视觉效果

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

今天这篇文章就来讲讲使用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.阿里云: 本站目前使用的是阿里云主机,安全/可靠/稳定。点击领取2000元代金券、了解最新阿里云产品的各种优惠活动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各类产品的最新活动,优惠券领取点击进入

3.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

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

让网页变灰的实现_网站蒙灰CSS样式总汇

每次全国哀悼日,各大网站首页都变成了灰色,添加以下全局CSS样式,可以实现此效果:使用方法:这段代码可以变网页为黑白,将代码加到CSS最顶端就可以实现素装。

Css3实现背景毛玻璃效果

ios里毛玻璃效果的使用非常多,本文介绍一个实现div毛玻璃背景的方法;CSS3的Filter主要用在图像的特效处理上,默认值为none,还有以下备选项:

利用CSS变量实现炫酷的悬浮效果

最近,我从 Grover网站 上发现以一个好玩儿的悬停动画,这个动画是将鼠标移动到订阅按钮上移动光标,会跟随光标实现相应的彩色渐变。这个想法很简单,但是它能使这个按钮脱颖而出,人们一下子就注意到它了,增加了点击的概率。

background 实现四角选中框效果

background 上绑定的多项背景图实际为background-image 和 background-position;也就是图片和位置;linear-gradient 是一种特殊的image类型,之后禁止重复和background-size是设置每个点的宽高

CSS如何在页面加载时创建淡入效果?

想要使用CSS在页面加载上创建淡入效果,可以使用css的animation属性或transition属性在页面加载时创建淡入效果。下面就来通过示例来介绍一下。通过2个关键帧来定义CSS动画:一个不透明度设置为0,另一个不透明度设置为1。

一个简易的 LED 数字时钟Js实现方法

这个应该是已经有很多人做过的东西,我应该只是算手痒,想写一下,所以,花了点时间折腾了这个,顺便把 Dark Mode 的处理也加上了

css如何实现首字下沉效果?

在CSS中可以使用伪元素::first-letter来选中一段文本的首字,然后使用font-size属性设置首字大小,在通过float属性来将实现下沉效果。:first-letter 伪元素向文本的第一个字母添加特殊样式。

jQuery 效果方法summary

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

纯CSS3制作3d网红热词盒子

今天给大家分享的是CSS3制作的带3d效果的方块,上面简单整理了一下2019年的网红热词。这个DEMO用到了CSS3的3d变化技巧,做出来的效果还不错。请注意,该3d效果依赖transform-style: preserve-3d属性

Js实现动态轮播图效果

功能描述:1.鼠标经过 左右侧箭头显示,鼠标离开 箭头隐藏2.动态添加底部小圆圈并绑定单击事件,并且让小圆圈的点击事件和左右箭头点击事件同步3.拷贝第一张图片添加到ul最后可以实现动态添加图片

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

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广