繁体   English   中英

CSS:使用radio:checked滑动图像(纯CSS滑块)

[英]CSS: Sliding an image with radio:checked (Pure CSS slider)

目标是仅使用CSS创建滑块。 对于此尝试,我尝试使用200px x 1500px的图像,该图像具有“ 3个部分”(彩色编码),绝对定位为Left:0,默认选中的单选按钮显示图像的前500px(幻灯片1),因为包装器为200x500隐藏溢出的像素。 通过标签“ slide2”检查单选按钮,将图像左移-500px,可以得到下一个500px(幻灯片2)。 暂时工作正常。 我遇到的问题是使图像滑动-1000px,从而显示了图像的最终500px(幻灯片3)。 看来,当我添加第三个单选输入和标签时,滑块断开,其他输入无任何作用。 实际上,第一个单选按钮css有时似乎毫无意义,因为在图像本身上设置过渡效果对于获得“ Slide 1”单选按钮所需的效果似乎是必要的。

链接到图像: http : //imgur.com/a/DCiI4

HTML:

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="default.css"/>
    </head>
<body>
    <div id="wrap">
        <input type="radio" id="slide1" name="radio" checked>
        <input type="radio" id="slide2" name="radio">
        <!--<input type="radio" id="slide3" name="radio">-->
        <img src="images/slides.jpg"/>
        <label for="slide1">slide1</label>
        <label for="slide2">slide2</label>
        <!--<label for="slide3">slide3</label>-->
    </div>
</body>
</html>

CSS:

html, body {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
}

#wrap {
    width: 500px;
    height: 200px;
    background: #000;
    color: #fff;
    position: relative;
    /*overflow: hidden;*/
}

img {
    position: absolute;
    top: 20;
    left: 0;
    transition: .5s ease-out;
    height: 200px;
    width: 1500px;
}

input[type="radio"] {
    display: none;
}

#slide1:checked + img {
    left: 0;
    transition: .5s ease-out;
}

#slide2:checked + img {
    left: -500px;
    transition: .5s ease-out;
}

/*#slide3:checked + img {
    left: -1500px;
    transition: .5s ease-out;
}*/

感谢帮助! 而且,如果有一种更简单的方法来制作带有CSS控件的滑块,我很想知道。 尝试了一些我在网上找到的示例,但没有一个看起来或动画出我想要的样子。

在这里-合并了您的一些CSS,使用第3张图片对其进行了扩展,并正在使用translateX()opacity增强幻灯片之间的过渡。

 img { position: absolute; top: 0; left: 0; transition: opacity .5s ease-out, transform .5s ease-out; transform: translateX(-100%); /* transform: translateX(-100%) rotate(-720deg); */ /* try this, it's nuts */ opacity: 0; } input[type="radio"] { display: none; } input:checked + img { transform: translateX(0); /* transform: translateX(0) rotate(0); */ /* try this with the commented line above */ opacity: 1; z-index: 1; } .controls { position: absolute; top: 0; left: 0; z-index: 2; } label { background: rgba(0,0,0,0.8); color: #fff; padding: .5em; margin: 0 1em 0 0; display: inline-block; cursor: pointer; } 
 <div id="wrap"> <input type="radio" id="slide1" name="radio" checked> <img src="http://kenwheeler.github.io/slick/img/fonz1.png" /> <input type="radio" id="slide2" name="radio"> <img src="http://www.star2.com/wp-content/uploads/2015/06/happy-days-770x470.jpg"> <input type="radio" id="slide3" name="radio"> <img src="https://timedotcom.files.wordpress.com/2016/08/henry-winkler.jpg?quality=85"> <div class="controls"> <label for="slide1">slide1</label> <label for="slide2">slide2</label> <label for="slide3">slide3</label> </div> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM