RGBA — Alpha channel as a separate class

后端 未结 1 530
梦如初夏
梦如初夏 2020-12-21 06:14

Let\'s say we have a list of classes storing background colors.

.bgr-red //background-color: rgb(255, 0, 0);
.bgr-green //background-color: rgb(0, 0 , 255);
         


        
相关标签:
1条回答
  • 2020-12-21 06:27

    Use CSS variables:

    .bgr-red {
      background-color: rgba(255, 0, 0, var(--a, 1));
    }
    
    .bgr-green {
      background-color: rgba(0, 0, 255, var(--a, 1));
    }
    
    .bgr-blue {
      background-color: rgba(0, 128, 0, var(--a, 1));
    }
    
    .alpha-90 {
      --a: 0.9;
    }
    
    .alpha-70 {
      --a: 0.7;
    }
    
    .alpha-10 {
      --a: 0.1;
    }
    <div class="bgr-red">...</div>
    
    <div class="bgr-red alpha-70">...</div>
    
    <div class="bgr-red alpha-10">...</div>

    And for better support you can consider pseudo element to create the background layer and adjust opacity:

    div {
      position: relative;
      z-index: 0;
    }
    
    div::before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      z-index: -1;
    }
    
    .bgr-red::before {
      background-color: rgb(255, 0, 0);
    }
    
    .bgr-green::before {
      background-color: rgb(0, 0, 255);
    }
    
    .bgr-blue::before {
      background-color: rgb(0, 128, 0);
    }
    
    .alpha-90::before {
      opacity: 0.9;
    }
    
    .alpha-70::before {
      opacity: 0.7;
    }
    
    .alpha-10::before {
      opacity: 0.1;
    }
    <div class="bgr-red">...</div>
    
    <div class="bgr-red alpha-70">...</div>
    
    <div class="bgr-red alpha-10">...</div>

    0 讨论(0)
提交回复
热议问题