1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 简单实现滑动门效果css或js+css

简单实现滑动门效果css或js+css

时间:2023-03-06 01:02:28

相关推荐

简单实现滑动门效果css或js+css

一、通过css实现

<style>

*{

padding:0;

margin:0;

}

//固定图片的宽度

img{

width:270px;

height:480px;

}

div.box{

margin:50pxauto0;

width:810px;

height:480px;

// 横向分布

display:flex;

// 设置划出隐藏

overflow:hidden;

border: 1pxsolid#555;

}

section{

width:90px;

box-shadow:-1px1px4px2pxrgba(0,0,0,0.3);

transition:all0.7s

}

//核心代码实现触碰到不是最后一个孩子的时候将其宽度变回原来的宽度

section:not(:last-child):hover{

width:270px;

}

</style>

<body>

<divclass="box">

<section><imgsrc="../1.jpg"alt=""></section>

<section><imgsrc="../2.jpg"alt=""></section>

<section><imgsrc="../3.jpg"alt=""></section>

<section><imgsrc="../5.jpg"alt=""></section>

<section><imgsrc="../6.jpg"alt=""></section>

<section><imgsrc="../7.jpg"alt=""></section>

<section><imgsrc="../8.jpg"alt=""></section>

</div>

</body>

​心得:由于css只能选择实现最后一个展现出被选中的效果所以就有相应的js来实现第一被选中的效果了见下文

通过js实现

<style>

*{

padding: 0;

margin: 0;

}

img{

width: 270px;

height: 480px;

}

div.box{

margin: 50px auto 0;

width: 810px;

height: 480px;

display: flex;

overflow: hidden;

border: 1px solid #555;

}

section{

width: 90px;

box-shadow: -1px 1px 4px 2px rgba(0,0,0,0.3);

// 设置动画

transition: all 0.7s

}

section.on{

width: 270px;

}

</style>

<body>

<div class="box" id="box">

<section class="on"><img src="../1.jpg" alt=""></section>

<section><img src="../2.jpg" alt=""></section>

<section><img src="../3.jpg" alt=""></section>

<section><img src="../5.jpg" alt=""></section>

<section><img src="../6.jpg" alt=""></section>

<section><img src="../7.jpg" alt=""></section>

<section><img src="../8.jpg" alt=""></section>

</div>

</body>

<script src="../框架/agent.js"></script>

<script>

let oBox = document.getElementById('box');

// 调用框架中事件代理函数

agent1('box','mouseover','section',function(){

clearCls('box','section','on');

this.className = 'on';

})

</script>

实现中间被选中有遮罩层效果的滑动门

<style>

*{

padding: 0;

margin: 0;

}

img{

width: 270px;

height: 480px;

opacity: 1;

}

div.box{

margin: 50px auto 0;

width: 810px;

height: 480px;

display: flex;

overflow: hidden;

border: 1px solid #555;

}

aside{

position: absolute;

top: 0;

left: 0;

width: 270px;

height: 480px;

background-color: #666;

opacity: 0.4;

}

section{

position: relative;

width: 90px;

box-shadow: -1px 1px 4px 2px rgba(0,0,0,0.3);

transition: all 0.7s;

background-color: #000;

}

section.on{

width: 270px;

}

section.on aside{

opacity: 0;

}

</style>

<body>

<div class="box" id="box">

<section><img src="../1.jpg" alt=""><aside></aside></section>

<section><img src="../2.jpg" alt=""><aside></aside></section>

<section><img src="../3.jpg" alt=""><aside></aside></section>

<section class="on"><img src="../5.jpg" alt=""><aside></aside></section>

<section><img src="../6.jpg" alt=""><aside></aside></section>

<section><img src="../7.jpg" alt=""><aside></aside></section>

<section><img src="../8.jpg" alt=""><aside></aside></section>

</div>

</body>

<script src="../框架/agent.js"></script>

<script>

let oBox = document.getElementById('box');

agent1('box','mouseover','section',function(){

clearCls('box','section','on');

this.className = 'on';

this.style.cssText =``

})

function agent1(parentId, eventType, label, fun) {

let oParent = document.getElementById(parentId);

oParent['on' + eventType] = function (ev) {

let e = ev || Event;

e.stopPropagation();

// 阻止 oParent 的冒泡

let child = e.target || e.srcElement;

let LABEL=label.toUpperCase()

// !重要

// child.nodeName是标签的名字 e.target事件所指向的目标

while (child.nodeName!==LABEL && child.nodeName!==oParent.nodeName) {

child=child.parentNode;

}

if (child.nodeName === LABEL) {

fun.call(child);

// 将方法绑定到child;

}

}

}

</script>

心得:aside做为遮罩层,当然我使用的方法是固定图片进行实现的,还有一种方法是通过设置背景来进行实现的,不管是哪一种方法都逃不了核心改变其宽度

/Wangbabaa/web.git

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。