javascript动态网页

1.     效果图                               

源码和动态效果视频均在百度网盘上

链接:https://pan.baidu.com/s/1WqBroCwTKDb0vBpCjuH8UQ 
提取码:1314

解析:

一.网页架构

 总共5个图像区域:

<div class="cont"> 网页容器
    <!--手风琴的大盒子-->
    <div class="cont__inner"> //图像区域容器 内含5个图像区域 这里只体现一个区域
        <!--图片 文字 按钮部分-->
        <div class="el">
            <!--图片 文字 按钮部分-->
            <div class="el__overflow"><!--包含inner-->
            <div class="el__inner">
            <!--主体图片和遮罩层部分-->
            <div class="el__bg">
                <div class="before"></div>
                <div class="after"></div>
            </div>
            <!--图片中间文字内容部分-->
            <div class="el__preview-cont">
                <h2 class="el__heading">Section1</h2>
            </div>
                <!--图片放大后的标题和关闭按钮部分-->
            <div class="el__content">
                <div
                        class="el__text">Whatever</div>
                <div class="el__close-btn"></div>
            </div>
            </div>
            </div>
            <!--底部的数字部分-->
            <div class="el__index">
                <div class="el__index-back">1</div>
                <div class="el__index-front">
                    <div class="el__index-overlay" data-index="1">1</div>
                </div>
            </div>
        </div>
</div>

二.CSS样式

1.利用透明度的变换实现高亮 其中用到了hover before after选择器

  

.el__bg:after
{
    content:'';
    z-index:1;
    position:absolute;
    left:0;
    top:0;
    width:100%;
    height:100%;
    background:rgba(0,0,0,0.3); /*增加一个黑色背景*/
    opacity:1;
    -webkit-transition:opacity 0.5s;
    transition:opacity 0.5s;
}
.cont__inner:hover .el__bg:after
{
    opacity:1;/*使得全部的遮罩层显示出来*/
}
.el:hover .el__bg:after{
    opacity:0;/*遮罩层就是那个黑色的*/
}

2.创建一个鼠标点击后的新类s--active

3.其中若要实现效果图中点击图片后放大然后覆盖其它页面的功能

则利用translate3d来进行坐标的移动和图片宽度的放大

.el.s--active
{
    z-index:1;
    width:100%;
    -webkit-transform:translate3d(0,0,0);
    transform:translate3d(0,0,0);
    transition:transform 0.6s,width 0.7s 0.7s,z-index 0s;
}

4.利用transition实现过渡效果

三.javascript实现交互

1.实现点击图片后的放大显示

2.实现点击关闭按钮后的图像还原

var $cont = document.querySelector(".cont"); //获取对象
var $elsArr=
    [].slice.call(document.querySelectorAll(".el"));//向点击后的区域添加s--active
    $elsArr.forEach(function($el)
    {
        $el.addEventListener("click",function()
        {
            if(this.classList.contains("s--active")){return;}
            $cont.classList.add("s--el-active");
            this.classList.add("s--active");
        });
    });
var $closeBtnsArr = [].slice.call(document.querySelectorAll('.el__close-btn'));

// 点击关闭按钮时触发的事件
$closeBtnsArr.forEach(function ($btn) {
    $btn.addEventListener('click', function (e) {
        e.stopPropagation(); // 防止事件冒泡
        $cont.classList.remove('s--el-active'); // 关闭放大模块时给 .cont 类元素移除 s--el-active 类
        document.querySelector('.el.s--active').classList.remove('s--active'); // 找到 .el 类中包含 s--active 类的元素,并把 s--active 移除
    });
});

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值