Ryo Blog

〜WEB制作をスキルに〜

こんなことを説明しています!

  1. モーダルの作り方
  2. position: fixedと一緒に使ってはいけないプロパティ

解説動画

コードと解説

重要なポイント

position: fixed の親要素には transformプロパティを指定してはいけない!

こちらの CSS カスケーディングスタイルシート でそのように設定されている記述があります。

position: fixedを指定したいときは、親要素は基本的には関係ないので、タグをなるべく外側に出します。

そしてアニメーションをつけたいときは、a タグと id 指定してアニメーションを実装していきます。

以下の記事で aタグとidの関係を説明しているので、ご覧ください!

#タグを押したら切り替える

 

HTMLコード

<main>
    <div class="inner">
        <div class="wrap">
            <a href="#modal1" class="item">
                <img src='./img/img1.jpg' alt='画像' width='1000' height='500' loading='lazy'>
            </a>
            <a href="#modal2" class="item">
                <img src='./img/img2.jpg' alt='画像' width='1000' height='500' loading='lazy'>
            </a>
        </div>
        <div class="modal-bg" id="modal1"></div>
        <div class="modal-container">
            <img src='./img/img1.jpg' alt='画像' width='1000' height='500' loading='lazy'>
        </div>
        <div class="modal-bg" id="modal2"></div>
        <div class="modal-container">
            <img src='./img/img2.jpg' alt='画像' width='1000' height='500' loading='lazy'>
        </div>
    </div>
</main>

CSSコード

main {
    position: relative;
    &::after {
        content: '';
        position: absolute;
        z-index: -1;
        top: 0;
        left: 0;
        width: 100%;
        height: 50vh;
        background: rgba(0, 195, 255, 0.28);
    }
}
.inner {
    margin: auto;
    width: 100vw;
    height: 100vh;
    max-width: 1000px;
    position: relative;
}
.wrap {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    column-gap: 40px;
    width: 100%;
}
.item {
    flex: 1;
    display: block;
}
.modal-container {
    display: none;
    position: fixed;
    z-index: 100;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    padding: 40px;
    background: #fff;
    img {
        width: 1000px;
        height: auto;
    }
}
.modal-bg {
    display: none;
    position: fixed;
    z-index: 99;
    background: #000000c4;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
}

jQueryコード

$('.item').on('click', function () {
    $($(this).attr('href')).fadeIn(100);
    $($(this).attr('href')).next('.modal-container').fadeIn(100);
    return false;
});

$('.modal-bg').on('click', function () {
    $(this).fadeOut(100);
    $(this).next('.modal-container').fadeOut(100);
    return false;
});
記事一覧へ

About

りょー|29歳 フリーランス|LPコーディング、WordPressサイト構築、ディレクション、Shopify (Liquid編集) を中心に活動しております!

完全未経験からWEB業界に入り
デイトラで3ヶ月間学習
営業開始後4日→ゼロイチ達成
開業3ヶ月後→月収50万達成
その後平均月収50万 (最高月収120万円)

WEBで独立したい!未経験からでもフリーランスになりたい!そんな方々のためになるような情報をこのブログを通して発信します!

コンサルのお申し込みはこちら Ryo's Portfolio

私がWEB制作フリーランスとして独立するために学習したオンラインスクール「デイトラ」の詳細リンクはこちら↓↓

Products

Coming Soon