javascript - CSS - 带有图像渐变器的绝对和相对位置

标签 javascript css image css-position

我正在使用图像渐变程序,但我不了解绝对定位。如果屏幕调整大小时,我的图像会很好地褪色并按照我想要的方式调整大小。但我有两个问题。 Div#2 被图像遮盖了。我希望 div2 始终出现在图像 div 下方。另外,我在图像上有控制按钮。我要他们在中间。我认为使用 top:50% 会做到这一点,但事实并非如此。这是一个例子...

var slides = document.querySelectorAll('#slides .slide');
var currentSlide = 0;
var slideInterval = setInterval(nextSlide,5000);

function nextSlide(){goToSlide(currentSlide+1);}

function previousSlide(){goToSlide(currentSlide-1);}

function goToSlide(n){
    slides[currentSlide].className = 'slide';
    currentSlide = (n+slides.length)%slides.length;
    slides[currentSlide].className = 'slide showing';}

var next = document.getElementById('next');
var previous = document.getElementById('previous');

next.onclick = function(){nextSlide();};
previous.onclick = function(){previousSlide();};
#slides {position: relative}

.slide{ 
position: absolute;
left: 0px;
top: 0px;
width:100%;
height:auto;
min-height:300px;
object-fit:cover;
opacity: 0; 
box-sizing:border-box;
transition: opacity 2s;}


.showing{opacity: 1;}

.controls{
background: transparent;
color: #fff;
font-size: 30px;
cursor: pointer;
border: 1px solid #555;
width: 30px;
position: absolute;
}

.controls:hover{ opacity:.5}

.fadenext{right: 10px; top: 50%;}
.fadeprev{left:  10px; top: 50%;}
<br><br>
<div id="slides">
   <img src='https://www.panotools.org/dersch/Monp.JPG' class="slide showing">
   <img src='https://www.panotools.org/dersch/StBp.JPG'  class="slide">
 
   <button class="controls fadeprev" id="previous">&lt;</button>
   <button class="controls fadenext" id="next">&gt;</button>
</div>


<div style='margin-top:40px;border:1px solid red;width:200px;height:100px'>
This is Div # 2</div>

最佳答案

我已经修改了您的代码段以解决您的问题。

  • 添加 margin-top 而不是 top 将解决您的问题 控制。
  • Div 2 现在将始终保持在您的 slider 下方。

附言我移动了您的 div2 内联样式以使其保持整洁。

var slides = document.querySelectorAll('#slides .slide');
var currentSlide = 0;
var slideInterval = setInterval(nextSlide, 5000);

function nextSlide() {
  goToSlide(currentSlide + 1);
}

function previousSlide() {
  goToSlide(currentSlide - 1);
}

function goToSlide(n) {
  slides[currentSlide].className = 'slide';
  currentSlide = (n + slides.length) % slides.length;
  slides[currentSlide].className = 'slide showing';
}

var next = document.getElementById('next');
var previous = document.getElementById('previous');

next.onclick = function() {
  nextSlide();
};
previous.onclick = function() {
  previousSlide();
};
* {
  margin: 0;
  padding: 0;
}

#slides {
  position: relative
}

.slide {
  position: absolute;
  left: 0px;
  top: 0px;
  width: 100%;
  height: auto;
  min-height: 300px;
  object-fit: cover;
  opacity: 0;
  box-sizing: border-box;
  transition: opacity 2s;
}

.showing {
  opacity: 1;
}

.controls {
  background: transparent;
  color: #fff;
  font-size: 30px;
  cursor: pointer;
  border: 1px solid #555;
  width: 30px;
  position: absolute;
}

.controls:hover {
  opacity: .5
}

.fadenext {
  right: 10px;
  margin-top: 25%;
}

.fadeprev {
  left: 10px;
  margin-top: 25%;
}

.div2 {
  margin-top: 50%;
  border: 1px solid red;
  width: 200px;
  height: 100px;
}
<br><br>
<div id="slides">
  <img src='https://www.panotools.org/dersch/Monp.JPG' class="slide showing">
  <img src='https://www.panotools.org/dersch/StBp.JPG' class="slide">

  <button class="controls fadeprev" id="previous">&lt;</button>
  <button class="controls fadenext" id="next">&gt;</button>
</div>


<div class="div2">This is Div # 2</div>

关于javascript - CSS - 带有图像渐变器的绝对和相对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55796706/

相关文章:

javascript - 创建新图像时,image.width 返回 0

javascript - 使用angularjs在选择框中选择选项

javascript - 在 javascript/jquery 中将时间字符串转换为秒

javascript - JS Menu 保持菜单状态

image - Okami sumie风格渲染算法

html - 为什么缩小浏览器窗口后无法缩小宽度图像?

javascript - Node/JavaScript glob 文件/路径匹配语法、通配符等

javascript - 为什么在使用 ng-blur 时 ng-click 不起作用?

javascript - 从隐藏的所有内容开始

css - 使用相机插件后设置运行时背景图像 - ionic3