我有这段代码,它只使用html和css就可以制作一个非常甜蜜的 carousel .它在Chrome上运行得很好,但在Firefox上就不行了.有人能告诉我为什么吗?我不能点击其他单选按钮的标签,只能点击选中的按钮.

以下是一段代码片段:

* {
  margin: 10px;
  padding: 0px;
}

body {
  padding: 20px;
  background: #eee;
  user-select: none;
}

[type=radio] {
  display: none;
}

#slider {
  height: 55vw;
  position: relative;
  perspective: 1000px;
  transform-style: preserve-3d;
}

#slider label {
  margin: auto;
  width: 60%;
  height: 80%;
  border-radius: 40px;
  position: absolute;
  left: 0; right: 0;
  cursor: pointer;
  transition: transform 1.2s ease;
}


#s1:checked ~ #slide4, #s2:checked ~ #slide5,
#s3:checked ~ #slide1, #s4:checked ~ #slide2,
#s5:checked ~ #slide3 {
  box-shadow: 0 1px 4px 0 rgba(0,0,0,.37);
  transform: translate3d(-30%,0,-200px);
}

#s1:checked ~ #slide5, #s2:checked ~ #slide1,
#s3:checked ~ #slide2, #s4:checked ~ #slide3,
#s5:checked ~ #slide4 {
  box-shadow: 0 6px 10px 0 rgba(0,0,0,.3), 0 2px 2px 0 rgba(0,0,0,.2);
  transform: translate3d(-15%,0,-100px);
}

#s1:checked ~ #slide1, #s2:checked ~ #slide2,
#s3:checked ~ #slide3, #s4:checked ~ #slide4,
#s5:checked ~ #slide5 {
  box-shadow: 0 13px 25px 0 rgba(0,0,0,.3), 0 11px 7px 0 rgba(0,0,0,.19);
  transform: translate3d(0,0,0);
}

#s1:checked ~ #slide2, #s2:checked ~ #slide3,
#s3:checked ~ #slide4, #s4:checked ~ #slide5,
#s5:checked ~ #slide1 {
  box-shadow: 0 6px 10px 0 rgba(0,0,0,.3), 0 2px 2px 0 rgba(0,0,0,.2);
  transform: translate3d(15%,0,-100px);
}

#s1:checked ~ #slide3, #s2:checked ~ #slide4,
#s3:checked ~ #slide5, #s4:checked ~ #slide1,
#s5:checked ~ #slide2 {
  box-shadow: 0 1px 4px 0 rgba(0,0,0,.37);
  transform: translate3d(30%,0,-200px);
}

#slide1 { background: #00BCD4 }
#slide2 { background: #4CAF50 }
#slide3 { background: #CDDC39 }
#slide4 { background: #FFC107 }
#slide5 { background: #FF5722 }
<section id="slider"> 
      <input type="radio" name="slider" id="s1"> 
      <input type="radio" name="slider" id="s2"> 
      <input type="radio" name="slider" id="s3"checked> 
      <input type="radio" name="slider" id="s4"> 
      <input type="radio" name="slider" id="s5"> 

      <label for="s1" id="slide1"></label>
      <label for="s2" id="slide2"></label> 
      <label for="s3" id="slide3"></label> 
      <label for="s4" id="slide4"></label> 
      <label for="s5" id="slide5"></label> 
      </section>

我认为这与Firefox中的CSS兼容性有关,但我真的不确定.我对html/css非常陌生,因此如果有任何帮助,我将不胜感激:)

推荐答案

这是因为宽度而不是label将宽度赋予#slider

* {
  margin: 10px;
  padding: 0px;
}

body {
  padding: 20px;
  background: #eee;
  user-select: none;
}

[type=radio] {
  display: none;
}

#slider {
  height: 55vw;
  position: relative;
  perspective: 1000px;
  transform-style: preserve-3d;
  width: 60%;
  margin: 0 auto;
}

#slider label {
  margin: auto;
  height: 80%;
  border-radius: 40px;
  position: absolute;
  left: 0;
  right: 0;
  cursor: pointer;
  transition: transform 1.2s ease;
}

#s1:checked~#slide4,
#s2:checked~#slide5,
#s3:checked~#slide1,
#s4:checked~#slide2,
#s5:checked~#slide3 {
  box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .37);
  transform: translate3d(-30%, 0, -200px);
}

#s1:checked~#slide5,
#s2:checked~#slide1,
#s3:checked~#slide2,
#s4:checked~#slide3,
#s5:checked~#slide4 {
  box-shadow: 0 6px 10px 0 rgba(0, 0, 0, .3), 0 2px 2px 0 rgba(0, 0, 0, .2);
  transform: translate3d(-15%, 0, -100px);
}

#s1:checked~#slide1,
#s2:checked~#slide2,
#s3:checked~#slide3,
#s4:checked~#slide4,
#s5:checked~#slide5 {
  box-shadow: 0 13px 25px 0 rgba(0, 0, 0, .3), 0 11px 7px 0 rgba(0, 0, 0, .19);
  transform: translate3d(0, 0, 0);
}

#s1:checked~#slide2,
#s2:checked~#slide3,
#s3:checked~#slide4,
#s4:checked~#slide5,
#s5:checked~#slide1 {
  box-shadow: 0 6px 10px 0 rgba(0, 0, 0, .3), 0 2px 2px 0 rgba(0, 0, 0, .2);
  transform: translate3d(15%, 0, -100px);
}

#s1:checked~#slide3,
#s2:checked~#slide4,
#s3:checked~#slide5,
#s4:checked~#slide1,
#s5:checked~#slide2 {
  box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .37);
  transform: translate3d(30%, 0, -200px);
}

#slide1 {
  background: #00BCD4
}

#slide2 {
  background: #4CAF50
}

#slide3 {
  background: #CDDC39
}

#slide4 {
  background: #FFC107
}

#slide5 {
  background: #FF5722
}
<section id="slider">
  <input type="radio" name="slider" id="s1">
  <input type="radio" name="slider" id="s2">
  <input type="radio" name="slider" id="s3" checked>
  <input type="radio" name="slider" id="s4">
  <input type="radio" name="slider" id="s5">

  <label for="s1" id="slide1"></label>
  <label for="s2" id="slide2"></label>
  <label for="s3" id="slide3"></label>
  <label for="s4" id="slide4"></label>
  <label for="s5" id="slide5"></label>
</section>

Html相关问答推荐

Xpath:提取标签之间的文本,但一旦出现嵌入标签就停止

如何使用bslb设置可导航页面侧边栏的样式

如何在html和css中创建动态调整大小的表元素

如何在垂直堆叠的表格中调整人造列的大小?

使用`<;use>;`与`<;img>;`时呈现的SVG大小不同

如何创建嵌套的动态表单元素

与窗高匹配的响应式正方形网格

如何删除FONT创建的文本下方的空格

Tailwind CSS 忽略我的元素的填充

如何在 Bootstrap 5 中将两个导航栏元素放在末尾?

视频重新加载而不是在 Swift 中暂停 WKWebView

在 flexbox 中使用 spacer 是否有效

第 117 行的块标记无效:endblock,应为empty或endfor.您是否忘记注册或加载此标签?

如何将自定义图像插入 Shiny plot header?

如何并排放置
的定义列表,但如果
变长,
会向下移动?

如何创建带有偏移边框线的双色边框?

弹出窗口溢出溢出:自动,我不明白为什么

为什么将 p 元素的垂直边距设置为 1 px 会出现滚动条?

水平滚动框不显示所有元素

更改包含图标高度的 div