【问题标题】:Targeting next Image that is inside a col class定位 col 类中的下一个图像
【发布时间】:2018-07-24 17:17:05
【问题描述】:
<div class="container bg-custom-blue">
  <h2 class="text-center pt-5 pb-4">The Responsive Gallery</h2>
  <div class="row">
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/waiter.jpg" alt="Waiter serving food">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/romantic.jpg" alt="A couple enjoying a romantic dinner at our restaurant">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/nibbles.jpg" alt="Tasty nibbles to share">
    </div>


    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/pasta-rucola-salad.jpg" alt="Fresh pasta with rucola">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/fish.jpg" alt="Fresh fillet of fish">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/fish.jpg" alt="One of our large selection of cakes we serve">
    </div>

    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/chill.jpg" alt="Friends enjoying wine">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/beef.jpg" alt="Argentinian beef fillet">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/nibbles.jpg" alt="Waiter serving food">
    </div>

我正在尝试构建一个带有箭头的图片库,以便您可以按下下一个箭头并显示下一个图片(就像所有基本滑块一样)。因为我刚刚学习了一些引导程序的基础知识,所以我决定在这个项目中使用引导程序,但是,我不得不将每个图像放在一个单独的 col 类中(如果这不是一个好方法,请通知我)。因为当我在事件监听器中使用this.nextElementSibling 时,每个图像都嵌套在另一个col 类中,所以我得到null 作为返回。请问有什么方法可以定位下一张图片吗?

【问题讨论】:

  • 无需从头创建,bootstrap 支持:getbootstrap.com/docs/4.0/components/carousel
  • 感谢@AdamH,但这并不是我所需要的。我正在尝试建立一个画廊,当您单击图像时,它会以更大的尺寸显示,并且用户还可以导航到下一张和上一张图像。我知道有插件可以做到这一点,但我的目的是练习。

标签: javascript twitter-bootstrap dom target


【解决方案1】:

您可以为此使用 jQuery,因为您已经将它用于引导程序

$(this).parent().siblings().find("img")  

你可以使用Javascript也可以关注

this.parentElement.nextElementSibling.children[0];

children[0] 表示第一个子元素

【讨论】:

  • 谢谢 有没有办法使用 vanilla js 做到这一点?
【解决方案2】:

您可以使用document.querySelectorAll 并通过索引访问您的节点。

小例子

const items = document.querySelectorAll('.row .col-12'); // all .col-12 notes inside .row
let currentIndex = 0; // current item index

// refresh icons and set border color
const refreshItems = () => {
  items.forEach((item, index) => {
    item.style.border = `1px solid ${index === currentIndex ? '#f00' : '#0f0'}`;
  });
}

// init
refreshItems();

// simple call by index
// items[5].style.border = '1px solid #0f0';

// Add click event to .prev button and increase current index 1
document.querySelector('.next').addEventListener('click', () => {
  currentIndex += 1;
  refreshItems();
});

// Add event to .prev button and decrease current index by 1
document.querySelector('.prev').addEventListener('click', () => {
  currentIndex -= 1;
  refreshItems();
})
<button class="next">next</button>
<button class="prev">prev</button>
<div class="container bg-custom-blue">
  <h2 class="text-center pt-5 pb-4">The Responsive Gallery</h2>
  <div class="row">
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/waiter.jpg" alt="Waiter serving food">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/romantic.jpg" alt="A couple enjoying a romantic dinner at our restaurant">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/nibbles.jpg" alt="Tasty nibbles to share">
    </div>


    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/pasta-rucola-salad.jpg" alt="Fresh pasta with rucola">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/fish.jpg" alt="Fresh fillet of fish">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/fish.jpg" alt="One of our large selection of cakes we serve">
    </div>

    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/chill.jpg" alt="Friends enjoying wine">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/beef.jpg" alt="Argentinian beef fillet">
    </div>
    <div class="col-12 col-md-6 col-xl-4 p-2">
      <img class="img-fluid" src="images/nibbles.jpg" alt="Waiter serving food">
    </div>
  </div>
</div>

最后,添加变换、过渡、溢出和索引检查,你的滑块就准备好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-04
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多