为什么选中复选框时图像不滑动? [英] why the images are not sliding when the checkbox is checked?

查看:15
本文介绍了为什么选中复选框时图像不滑动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用纯 css 制作图像滑块(带控件)所以,当我检查复选框时,图像没有滑动,所以代码有什么问题,谁能告诉我如何制作滑块(带有一个按钮之类的控件)左侧和右侧一个按钮用于滑动)仅使用纯 css.

.accordion{显示:弹性;宽度:100%;边框:3px 纯黄色;填充:6px;}.img 包装器{显示:弹性;宽度:510px;边框:3px纯黑色;//溢出:隐藏;}.img-容器{宽度:500px;边框:2px 纯品红色;}#toggle1:checked ~ .img-container .box{变换:翻译(0px);过渡:所有 300 毫秒缓动;}#toggle2:checked ~ .img-container .box{变换:翻译(-500px);过渡:所有 300 毫秒缓动;}#toggle3:checked ~ .img-container .box {变换:翻译(-1000px);过渡:所有 300 毫秒缓动;}

<html lang="zh-cn"><头><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale="><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"><title></title><身体><div class="accordion"><div class="img-wrapper"><div class="accordion-tab"><input type="checkbox" id="toggle1" class="toggle-button"><label for="toggle1"></label><div class="img-container"><img src="https://cdn.pixabay.com/photo/2019/12/16/17/13/berlin-4699765__340.jpg" alt=""class=.box>

<div class="accordion-tab"><input type="checkbox" id="toggle1" class="toggle-button"><label for="toggle1"></label><div class="img-container"><img src="https://cdn.pixabay.com/photo/2020/10/05/10/51/cat-5628953__340.jpg" alt="" class=.box>

<div class="accordion-tab"><input type="checkbox" id="toggle1" class="toggle-button"><label for="toggle1"></label><div class="img-container"><img src="https://cdn.pixabay.com/photo/2020/10/19/09/44/woman-5667299__340.jpg" alt="" class=.box>

</html>

解决方案

所以:您的所有输入都具有相同的 id 和相同的 for 标签.ID 应该是唯一的,就像你的人类一样.试着记住这一点.

你不应该使用类型checkbox,而应该使用radio.

在你的 html 中,在你的 img 中,你写了 class=".box" 而不是 class="box".

并且将img标签放在label标签之间,因为它指向for.

通过此修改可以正常工作.

.img-container{边框:2px纯黑色;填充:6px;宽度:1660px;}.crosel >img {边距:4px;}.crosel{边框:4px 纯品红色;宽度:517px;溢出:;显示:弹性;}#slide1:checked ~ .img-container .crousel .box{变换:翻译(0px);过渡:所有 300 毫秒缓动;}#slide2:checked ~ .img-container .crousel .box{变换:翻译(-500px);过渡:所有 300 毫秒缓动;}#slide3:checked ~ .img-container .crousel .box{变换:翻译(-1000px);过渡:所有 300 毫秒缓动;}

<html lang="zh-cn"><头><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale="><title></title><身体><div class="whole-slider"><input type="radio" id="slide1" name="img" 选中><input type="radio" id="slide2" name="img"><input type="radio" id="slide3" name="img"><div class="img-container"><div class="crousel"><label for="slide1"><img src="https://cdn.pixabay.com/photo/2019/12/16/17/13/berlin-4699765__340.jpg" alt="" class="box"><label for="slide2"><img src="https://cdn.pixabay.com/photo/2020/10/05/10/51/cat-5628953__340.jpg" alt="" class="box"><label for="slide3"><img src="https://cdn.pixabay.com/photo/2020/10/19/09/44/woman-5667299__340.jpg" alt="" class="box">

</html>

Mayur Birle

制作的仅演示 CSS

@import url('https://fonts.googleapis.com/css?family=Just+Another+Hand');正文,HTML {宽度:100%;高度:100%;边距:0;font-family: 'Just Another Hand',草书;溢出-X:隐藏;}.容器 {边距:0 自动;边距顶部:20px;位置:相对;宽度:70%;高度:0;填充底部:40%;用户选择:无;背景颜色:#1c1c1c;box-shadow: 0 11px 22px rgba(0, 0, 0, 0.2), 0 7px 7px rgba(0, 0, 0, 0.24);}.容器输入{显示:无;}.container .slide_img {位置:绝对;宽度:100%;高度:100%;z-索引:-1;}.container .slide_img img {宽度:继承;高度:继承;}.container .slide_img .prev, .container .slide_img .next {宽度:12%;高度:继承;位置:绝对;顶部:0;背景颜色:rgba(255, 82, 82, 0.2);z-索引:99;过渡:0.45s;光标:指针;文本对齐:居中;}.container .slide_img .next {右:0;}.container .slide_img .prev {左:0;}.container .slide_img .prev:hover, .container .slide_img .next:hover {过渡:0.3s;背景颜色:rgba(255, 82, 82, 0.8);}.container .slide_img .prev span, .container .slide_img .next span {位置:绝对;宽度:0px;高度:0px;边框:实心20px;顶部:50%;变换:translateY(-50%);}.container .slide_img .prev 跨度{边框颜色:透明 #fff 透明透明;正确:35%;}.container .slide_img .next span {边框颜色:透明透明透明#fff;左:35%;}.container #nav_slide {宽度:100%;底部:12%;高度:11px;位置:绝对;文本对齐:居中;z-索引:99;光标:默认;}.container #nav_slide .dots {顶部:-5px;宽度:18px;高度:18px;边距:0 3px;位置:相对;边界半径:100%;显示:内联块;背景颜色:rgba(0, 0, 0, 0.6);过渡:0.4s;光标:指针;}.container #nav_slide #dot1:hover {背景:#795548;}.container #nav_slide #dot2:hover {背景:#F44336;}.container #nav_slide #dot3:hover {背景:#2196F3;}.container #nav_slide #dot4:hover {背景:#4CAF50;}#i1:checked ~ #one, #i2:checked ~ #two, #i3:checked ~ #three, #i4:checked ~ #four {z-索引:9;动画:滚动 1 秒缓入缓出;}#i1:checked ~ #nav_slide #dot1 {背景:#795548;}#i2:checked ~ #nav_slide #dot2 {背景:#F44336;}#i3:checked ~ #nav_slide #dot3 {背景:#2196F3;}#i4:checked ~ #nav_slide #dot4 {背景:#4CAF50;}@关键帧滚动{0% {不透明度:0.4;}100% {不透明度:1;}}@media 屏幕和(最大宽度:685px){.容器 {边界:无;宽度:100%;高度:0;填充底部:55%;}.container .slide_img .prev, .container .slide_img .next {宽度:15%;}.container .slide_img .prev span, .container .slide_img .next span {边框:实心12px;}.container .slide_img .prev 跨度{边框颜色:透明 #fff 透明透明;}.container .slide_img .next span {边框颜色:透明透明透明#fff;}.container #nav_slide .dots {宽度:12px;高度:12px;}}.yt {边距:0 自动;边距顶部:30px;宽度:80px;高度:40px;边框半径:4px;文本对齐:居中;背景:#2196F3;box-shadow: 0 11px 22px rgba(0, 0, 0, 0.2), 0 7px 7px rgba(0, 0, 0, 0.24);过渡:0.4s;不透明度:0.4;}.yt {位置:相对;文字装饰:无;颜色:#fff;字体大小:23px;顶部:4px;}.yt:悬停{过渡:0.3s;框阴影:无;不透明度:0.8;}

<input type="radio" id="i1" name="images" 勾选/><input type="radio" id="i2" name="images"/><input type="radio" id="i3" name="images"/><input type="radio" id="i4" name="images"/><div class="slide_img" id="one"><img src="https://cdn.pixabay.com/photo/2019/12/16/17/13/berlin-4699765__340.jpg"><label class="prev" for="i4"><span></span></label><label class="next" for="i2"><span></span></label>

<div class="slide_img" id="two"><img src="https://preview.ibb.co/e5OShF/cropped_800_480_111290.jpg" ><label class="prev" for="i1"><span></span></label><label class="next" for="i3"><span></span></label>

<div class="slide_img" id="三"><img src="https://cdn.pixabay.com/photo/2020/10/05/10/51/cat-5628953__340.jpg"><label class="prev" for="i2"><span></span></label><label class="next" for="i4"><span></span></label>

<div class="slide_img" id="four"><img src="https://cdn.pixabay.com/photo/2020/10/19/09/44/woman-5667299__340.jpg"><label class="prev" for="i3"><span></span></label><label class="next" for="i1"><span></span></label>

<div id="nav_slide"><label for="i1" class="dots" id="dot1"></label><label for="i2" class="dots" id="dot2"></label><label for="i3" class="dots" id="dot3"></label><label for="i4" class="dots" id="dot4"></label>

I am trying to make image slider (with controls) with pure css So, when I am checking checkbox the images are not sliding so what's the problem with the code and can anybody tell how to make slider (with controls like one button on left and one button on right for sliding) only using pure css.

.accordion{
  display:flex;
  width:100%;
  border:3px solid yellow;
  padding:6px;
}
.img-wrapper{
 display:flex; 
  width:510px;
  border:3px solid black;
  //overflow:hidden;
}
.img-container{
  width:500px;
  border:2px solid magenta;
  
}

#toggle1:checked ~  .img-container .box{
  transform: translate(0px);
  transition: all 300ms ease;
}
#toggle2:checked ~  .img-container .box{
  transform: translate(-500px);
  transition: all 300ms ease;
}
#toggle3:checked ~ .img-container .box {
  transform: translate(-1000px);
  transition: all 300ms ease ;
}

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">


  <title></title>
</head>
<body>
  <div class="accordion">
    <div class="img-wrapper">
    <div class="accordion-tab">
      <input type="checkbox" id="toggle1" class="toggle-button">
      <label for="toggle1"></label>
      <div class="img-container">
      <img src="https://cdn.pixabay.com/photo/2019/12/16/17/13/berlin-4699765__340.jpg" alt="" class=.box>
        </div>
    </div>
        <div class="accordion-tab">
      <input type="checkbox" id="toggle1" class="toggle-button">
      <label for="toggle1"></label>
      <div class="img-container">
      <img src="https://cdn.pixabay.com/photo/2020/10/05/10/51/cat-5628953__340.jpg" alt="" class=.box>
        </div>
    </div>
        <div class="accordion-tab">
      <input type="checkbox" id="toggle1" class="toggle-button">
      <label for="toggle1"></label>
      <div class="img-container">
      <img src="https://cdn.pixabay.com/photo/2020/10/19/09/44/woman-5667299__340.jpg" alt="" class=.box>
        </div>
    </div>
      </div>
    
  </div>
</body>
</html>

解决方案

So: All your input are having same id and same for label. ID should be unique, as yours as human. try to remember that.

You should not use type checkbox but radio.

In your html, in your img, you wrote class=".box" instead of class="box".

And put img tag between label tag because it is pointing to for.

It will work fine with this modification.

.img-container{
  border:2px solid black;
  padding:6px;
  width:1660px;
}

.crousel >img  {
margin:4px;
}
.crousel{
  border:4px solid magenta;
  width:517px;
  overflow:;
  display:flex;
}

#slide1:checked ~ .img-container .crousel .box{
  
 transform: translate(0px);
  transition: all 300ms ease;
}
#slide2:checked ~ .img-container .crousel .box{
  
 transform: translate(-500px);
  transition: all 300ms ease;
}
#slide3:checked ~ .img-container .crousel .box{
  
 transform: translate(-1000px);
  transition: all 300ms ease;
}

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=">
  <title></title>
</head>
<body>
  <div class="whole-slider">
    <input type="radio" id="slide1" name="img" checked>
     <input type="radio" id="slide2" name="img">
     <input type="radio" id="slide3" name="img">
    
    <div class="img-container">
      <div class="crousel">
        <label for="slide1">
        <img src="https://cdn.pixabay.com/photo/2019/12/16/17/13/berlin-4699765__340.jpg" alt="" class="box">
        </label>
        
        <label for="slide2">
        <img src="https://cdn.pixabay.com/photo/2020/10/05/10/51/cat-5628953__340.jpg" alt="" class="box">
        </label>
        <label for="slide3"> <img src="https://cdn.pixabay.com/photo/2020/10/19/09/44/woman-5667299__340.jpg" alt="" class="box">
        </label>
      </div>
    </div>
    
  </div>
  
</body>
</html>

DEMO ONLY CSS made by Mayur Birle

@import url('https://fonts.googleapis.com/css?family=Just+Another+Hand');
body, html {
  width: 100%;
  height: 100%;
  margin: 0;
  font-family: 'Just Another Hand', cursive;
  overflow-X: hidden;
}
.container {
  margin: 0 auto;
  margin-top: 20px;
  position: relative;
  width: 70%;
  height: 0;
  padding-bottom: 40%;
  user-select: none;
  background-color: #1c1c1c;
  box-shadow: 0 11px 22px rgba(0, 0, 0, 0.2), 0 7px 7px rgba(0, 0, 0, 0.24);
}
.container input {
  display: none;
}
.container .slide_img {
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: -1;
}
.container .slide_img img {
  width: inherit;
  height: inherit;
}
.container .slide_img .prev, .container .slide_img .next {
  width: 12%;
  height: inherit;
  position: absolute;
  top: 0;
  background-color: rgba(255, 82, 82, 0.2);
  z-index: 99;
  transition: 0.45s;
  cursor: pointer;
  text-align: center;
}
.container .slide_img .next {
  right: 0;
}
.container .slide_img .prev {
  left: 0;
}
.container .slide_img .prev:hover, .container .slide_img .next:hover {
  transition: 0.3s;
  background-color: rgba(255, 82, 82, 0.8);
}
.container .slide_img .prev span, .container .slide_img .next span {
  position: absolute;
  width: 0px;
  height: 0px;
  border: solid 20px;
  top: 50%;
  transform: translateY(-50%);
}
.container .slide_img .prev span {
  border-color: transparent #fff transparent transparent;
  right: 35%;
}
.container .slide_img .next span {
  border-color: transparent transparent transparent #fff;
  left: 35%;
}
.container #nav_slide {
  width: 100%;
  bottom: 12%;
  height: 11px;
  position: absolute;
  text-align: center;
  z-index: 99;
  cursor: default;
}
.container #nav_slide .dots {
  top: -5px;
  width: 18px;
  height: 18px;
  margin: 0 3px;
  position: relative;
  border-radius: 100%;
  display: inline-block;
  background-color: rgba(0, 0, 0, 0.6);
  transition: 0.4s;
  cursor: pointer;
}
.container #nav_slide #dot1:hover {
  background: #795548;
}
.container #nav_slide #dot2:hover {
  background: #F44336;
}
.container #nav_slide #dot3:hover {
  background: #2196F3;
}
.container #nav_slide #dot4:hover {
  background: #4CAF50;
}
#i1:checked ~ #one, #i2:checked ~ #two, #i3:checked ~ #three, #i4:checked ~ #four {
  z-index: 9;
  animation: scroll 1s ease-in-out;
}
#i1:checked ~ #nav_slide #dot1 {
  background: #795548;
}
#i2:checked ~ #nav_slide #dot2 {
  background: #F44336;
}
#i3:checked ~ #nav_slide #dot3 {
  background: #2196F3;
}
#i4:checked ~ #nav_slide #dot4 {
  background: #4CAF50;
}
@keyframes scroll {
  0% {
    opacity: 0.4;
  }
  100% {
    opacity: 1;
  }
}
@media screen and (max-width: 685px) {
  .container {
    border: none;
    width: 100%;
    height: 0;
    padding-bottom: 55%;
  }
  .container .slide_img .prev, .container .slide_img .next {
    width: 15%;
  }
  .container .slide_img .prev span, .container .slide_img .next span {
    border: solid 12px;
  }
  .container .slide_img .prev span {
    border-color: transparent #fff transparent transparent;
  }
  .container .slide_img .next span {
    border-color: transparent transparent transparent #fff;
  }
  .container #nav_slide .dots {
    width: 12px;
    height: 12px;
  }
}
.yt {
  margin: 0 auto;
  margin-top: 30px;
  width: 80px;
  height: 40px;
  border-radius: 4px;
  text-align: center;
  background: #2196F3;
  box-shadow: 0 11px 22px rgba(0, 0, 0, 0.2), 0 7px 7px rgba(0, 0, 0, 0.24);
  transition: 0.4s;
  opacity: 0.4;
}
.yt a {
  position: relative;
  text-decoration: none;
  color: #fff;
  font-size: 23px;
  top: 4px;
}
.yt:hover {
  transition: 0.3s;
  box-shadow: none;
  opacity: 0.8;
}

<div class="container">
    

    <input type="radio" id="i1" name="images" checked/>
    <input type="radio" id="i2" name="images" />
    <input type="radio" id="i3" name="images" />
    <input type="radio" id="i4" name="images"  />
    
    <div class="slide_img" id="one">            
            
            <img src="https://cdn.pixabay.com/photo/2019/12/16/17/13/berlin-4699765__340.jpg">
            
                <label class="prev" for="i4"><span></span></label>
                <label class="next" for="i2"><span></span></label>  
        
    </div>
    
    <div class="slide_img" id="two">
        
            <img src="https://preview.ibb.co/e5OShF/cropped_800_480_111290.jpg " >
            
                <label class="prev" for="i1"><span></span></label>
                <label class="next" for="i3"><span></span></label>
        
    </div>
            
    <div class="slide_img" id="three">
            <img src="https://cdn.pixabay.com/photo/2020/10/05/10/51/cat-5628953__340.jpg"> 
            
                <label class="prev" for="i2"><span></span></label>
                <label class="next" for="i4"><span></span></label>
    </div>


    <div class="slide_img" id="four">
            <img src="https://cdn.pixabay.com/photo/2020/10/19/09/44/woman-5667299__340.jpg">   
            
                <label class="prev" for="i3"><span></span></label>
                <label class="next" for="i1"><span></span></label>

    </div>

    <div id="nav_slide">
        <label for="i1" class="dots" id="dot1"></label>
        <label for="i2" class="dots" id="dot2"></label>
        <label for="i3" class="dots" id="dot3"></label>
        <label for="i4" class="dots" id="dot4"></label>
    </div>
        
</div>

这篇关于为什么选中复选框时图像不滑动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆