CSSフレックスボックスで画像の上に色分けした透過カラーを重ねる方法

@ハクト 2023-06-21 11:22:00に投稿

今回はCSSのフレックスボックスを利用し、横並びにした要素に透過カラーを入れ、背景画像に重ねて表示する方法について解説します。

「color」や「background-color」プロパティに「rgba」関数を使用すると簡単に透過カラーを設定できます。

各要素を横並びにする

「.container」クラスに「display: flex;」を指定し、各要素を横並びにします。

<div class="container">
    <h1>フレックスボックスで色分け</h1>
    <div class="bg-box">R</div>
    <div class="bg-box">G</div>
    <div class="bg-box">B</div>
</div>

 

.container {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100vw; 
    height: 100vh;
    background-image: url(...);
    background-size: cover;
    background-position: center;    
}

要素を重ねる

「h1」要素に「position: absolute;」を指定し、文字を重ねます。「.bg-box」クラスの幅と高さを100%にし、「display:flex;」を指定して文字を上下左右中央揃えに。

.container{...}
h1 {
    position: absolute;
    font-size: 30px;
    color: white;
    text-shadow: 0 0 10px #333;
}

.bg-box {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
    width: 100%;
    font-size: 180px;
    font-weight: bold;
    font-style: italic;
}

テキストと背景を色分けして透過させる

「.bg-box」に「:nth-of-type(n)」擬似クラスを指定。rgba関数で左から赤、緑、青を透過させた文字色と背景を設定しました。

.container{...}
h1{...}
.bg-box{...}

.bg-box:nth-of-type(1) {
    color: rgba(255, 0, 0, .2);
    background-color: rgba(255, 0, 0, .1);
}

.bg-box:nth-of-type(2) {
    color: rgba(0, 255, 0, .2);
    background-color: rgba(0, 255, 0, .1);
}

.bg-box:nth-of-type(3) {
    color: rgba(0, 0, 255, .2);
    background-color: rgba(0, 0, 255, .1);
}

全てのコード

コードを表示

<div class="pic-container pic-background">
    <h1>フレックスボックスで色分け</h1>
    <div class="bg-box">R</div>
    <div class="bg-box">G</div>
    <div class="bg-box">B</div>
</div>
.pic-background {
    background-image: var(--pic-image-data, none);
    background-size: cover;
    background-position: center;
}

.pic-container {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100vw;
    height: 100vh;
    box-sizing: border-box;
}

h1 {
    position: absolute;
    font-size: 30px;
    color: white;
    text-shadow: 0 0 10px #333;
}

.bg-box {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
    width: 100%;
    font-size: 180px;
    font-weight: bold;
    font-style: italic;
}

.bg-box:nth-of-type(1) {
    color: rgba(255, 0, 0, .2);
    background-color: rgba(255, 0, 0, .1);
}

.bg-box:nth-of-type(2) {
    color: rgba(0, 255, 0, .2);
    background-color: rgba(0, 255, 0, .1);
}

.bg-box:nth-of-type(3) {
    color: rgba(0, 0, 255, .2);
    background-color: rgba(0, 0, 255, .1);
}

@ハクト

サービス作り・デザイン好き。70年代生まれのWEBエンジニア。WEBパーツをCSSでカスタマイズしてコピペできるサービスを運営中「Pa-tu」。実装したWEBパーツやツールを利用してWEB情報やライフハックを発信してます。

Twitter