【覚書】target=”_blank”にrel=”noopener”を追加する

target=”_blank” の箇所に自動的に rel=”noopener” を追加します。
※IE11は”forEach”はサポート対象外です。

Javascript/jQuery
var noOpener = document.querySelectorAll('a');
noOpener.forEach(function (e) {
  if (e.hasAttribute('target') === false) {
    return;
  }
  if (e.getAttribute('target') !== '_blank') {
    return;
  }
  e.setAttribute('rel', 'noopener');
});

【覚書】swiper-slideがひとつだったらセンターに表示させる

swiper-slideが複数の時はデフォルト( 左寄せ )、ひとつの時のみセンター表示にしたい。

≪前提として以下のオプションを設定≫
slidesPerView: “auto”,
spaceBetween: 20,
※ Swiper 4.5.0 使用

Swiper
Swiper demo

HTML(Swiper / Multiple Slides Per View
<div class="swiper-container">
   <div class="swiper-wrapper">
      <div class="swiper-slide"><img src="..." alt="..."></div>
      <div class="swiper-slide"><img src="..." alt="..."></div>
      <div class="swiper-slide"><img src="..." alt="..."></div>
      <div class="swiper-slide"><img src="..." alt="..."></div>
      <div class="swiper-slide"><img src="..." alt="..."></div>
    </div>
   <div class="swiper-pagination"></div>
</div>
<div class="swiper-container">
   <div class="swiper-wrapper">
      <div class="swiper-slide"><img src="..." alt="..."></div>
    </div>
   <div class="swiper-pagination"></div>
</div>
Javascript/jQuery
$( function () {
  $(".swiper-wrapper").each(function() {
    var swiperSlide = $(this).find('.swiper-slide');
    if(swiperSlide.length == 1) {
      $(this).addClass('justify-content-center');
      swiperSlide.addClass('mr-0');
    }
  });
});
CSS
.swiper-slide {
  width: 280px;
}
.swiper-slide img {
  max-width: 100%;
  height: auto;
}
.justify-content-center {
  -webkit-box-pack: center !important;
  -ms-flex-pack: center !important;
  justify-content: center !important;
}
.mr-0 {
  margin-right: 0 !important;
}
swiper-slideがひとつだったらセンターに

beakpointでの処理【matchMedia()とquerySelectorAll()】

前回は matchMedia()とquerySelector() を使っての覚書でしたが、
今回は、matchMedia()とquerySelectorAll() を使っての覚書。
※ querySelector() はページ内の最初の要素ひとつだけですが、 querySelectorAll() はページ内の該当する全ての要素を返します。

以下は、trunk8.jsを使用して、min-width: 768px 時には2行(class名:lines2を追加 /lines3を削除 )、でなければ3行表示 (class名:lines3を追加/lines2を削除) にする例です。
※IE11は”forEach”はサポート対象外です。

Javascript/jQuery
const trunkLines = document.querySelectorAll('.trunk');
const mediaQueryList = matchMedia('(min-width: 768px)');
mediaQueryList.addListener(onMediaQueryChange);
function onMediaQueryChange (mediaQueryList) {
  if (mediaQueryList.matches === true) {
    trunkLines.forEach((elem) => {
      elem.classList.add('lines2');
      elem.classList.remove('lines3');
    });
  } else {
    trunkLines.forEach((elem) => {
      elem.classList.add('lines3');
      elem.classList.remove('lines2');
    });
  }
}
//ページ表示時に実行しておく
onMediaQueryChange(mediaQueryList);
// trunk8 lines
$( function () {
  $('.lines2').trunk8({ lines: 2 });
  $('.lines3').trunk8({ lines: 3 });
});
HTML
<p class="trunk">親譲りの無鉄砲で小供の時から損ばかりしている。小学校に居る時分学校の二階から飛び降りて一週間ほど腰を抜かした事がある。なぜそんな無闇をしたと聞く人があるかも知れぬ。別段深い理由でもない。</p>
<p class="trunk">小使に負ぶさって帰って来た時、おやじが大きな眼をして二階ぐらいから飛び降りて腰を抜かす奴があるかと云ったから、この次は抜かさずに飛んで見せますと答えた。</p>
<p class="trunk">querySelectorAll() はページ内の 該当する要素を全てを返しますので、複数あっても全て返してくれます。querySelector()は最初のひとつだけしか返しません。</p>
CSS
.trunk {
  display: block;
  word-break: break-all;
  width: 300px;
}
複数の要素には querySelectorAll()
複数の要素には querySelectorAll()