gpt4 book ai didi

css - 增量 "scroll"容器左/右单击纯 css

转载 作者:行者123 更新时间:2023-11-28 17:01:26 24 4
gpt4 key购买 nike

我正在尝试创建一个纯 CSS 解决方案,该解决方案将在单击 href 链接时向右或向左滚动一组元素。我有基本的工作原理,我可以在单击相应按钮时向右或向左滚动,但随后的单击只会在初始位置之间切换。我不能向左或向右递增多次。

请记住,目标是纯 CSS,因为我正在尝试呈现一个有效的 POC 或表明需要 javascript,因为这不能用纯 css 完成。

http://plnkr.co/edit/itGDeyE8sfXtEbhBlycJ?p=preview

HTML

  <head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>

<body>

<a id="left" href="#left">&lt;</a>
<a id="right" href="#right">&gt;</a>

<div class="f-slideshow">
<div class="items">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<span>6</span>
<span>7</span>
<span>8</span>
</div>
</div>

</body>

</html>

CSS

.f-slideshow{
position:relative;
max-width:100px;
overflow:hidden;
display:inline-block;
}

.f-slideshow .items{
display:inline-table;
overflow:hidden;
width:100%;
background:#999;
position:relative;
box-sizing: border-box;
-webkit-transition: -webkit-transform 0.6s ease-in-out;
transition: transform 0.6s ease-in-out;
}

.f-slideshow span{
margin:3px;
padding:5px;
background:#ddd;
border-radius:3px;
}

#right {
position: relative;
left: 125px;
}

#right:target ~ .f-slideshow .items{
transform: translateX( -50px );
}

#left:target ~ .f-slideshow .items{
transform: translateX( 0px );
}

最佳答案

为每个滚动位置创建新的 anchor :

HTML

<a class="pos" id="pos1"></a>
<a class="pos" id="pos2"></a>
<a class="pos" id="pos3"></a>
<a class="pos" id="pos4"></a>

CSS

#pos1:target ~ .f-slideshow .items {transform: translateX(    0px );}
#pos2:target ~ .f-slideshow .items {transform: translateX( -50px );}
#pos3:target ~ .f-slideshow .items {transform: translateX( -100px );}
#pos4:target ~ .f-slideshow .items {transform: translateX( -150px );}


为左右按钮使用多个 anchor ,但将它们的位置设置为绝对位置,这样一次只出现一个。

将它们指向每个“位置” anchor 。

对第一个左按钮和第一个右按钮使用 z-index: 1;:

HTML

<a class="left"  id="left1"  href="#pos1">&lt;</a>
<a class="left" id="left2" href="#pos2">&lt;</a>
<a class="left" id="left3" href="#pos3">&lt;</a>
<a class="right" id="right1" href="#pos2">&gt;</a>
<a class="right" id="right2" href="#pos3">&gt;</a>
<a class="right" id="right3" href="#pos4">&gt;</a>

CSS

.left, .right {
position: absolute;
}

.right {
left: 135px;
}

#left1, #right1 {
z-index: 1;
}

根据滚动位置更改适当的左键或右键的 z-index:

CSS

#pos1:target ~ #left1,  #pos1:target ~ #right1,
#pos2:target ~ #left1, #pos2:target ~ #right2,
#pos3:target ~ #left2, #pos3:target ~ #right3,
#pos4:target ~ #left3, #pos4:target ~ #right3 {
z-index: 1;
}

Plunker

关于css - 增量 "scroll"容器左/右单击纯 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31171901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com