CodeGym /课程 /Frontend SELF ZH /媒体查询中的变量

媒体查询中的变量

Frontend SELF ZH
第 31 级 , 课程 3
可用

4.1 基本概念

CSS 变量和媒体查询是创建自适应网页设计的强大工具,可以自动适应不同屏幕尺寸和设备。变量允许集中管理样式,而媒体查询允许根据条件(如屏幕宽度)更改这些样式。

基本概念

  • CSS 变量:允许设置可以在整个 CSS 代码中重复使用的值。它们可以在不同的上下文中(如媒体查询中)更改,这使得它们对响应式设计特别有用。
  • 媒体查询:允许根据设备的特性(如屏幕宽度或高度)应用 CSS 样式。这允许根据不同设备调整网页的外观和行为。

在媒体查询中使用变量

可以在媒体查询中使用 CSS 变量来根据条件更改样式值。这允许创建更加灵活且易于维护的自适应设计。

媒体查询中使用变量的示例:

CSS
    
      :root {
        --main-bg-color: #f0f0f0;
        --main-text-color: #333;
        --primary-color: #3498db;
        --font-size: 16px;
      }

      body {
        background-color: var(--main-bg-color);
        color: var(--main-text-color);
        font-size: var(--font-size);
      }

      a {
        color: var(--primary-color);
      }

      @media (max-width: 600px) {
        :root {
          --main-bg-color: #e0e0e0;
          --font-size: 14px;
        }
      }

      @media (min-width: 601px) and (max-width: 1200px) {
        :root {
          --main-bg-color: #d0d0d0;
          --font-size: 15px;
        }
      }

      @media (min-width: 1201px) {
        :root {
          --main-bg-color: #f0f0f0;
          --font-size: 16px;
        }
      }
    
  
HTML
    
      <body>
        <p>This is a paragraph with a link to <a href="#">Example.com</a>.</p>
      </body>
    
  

解释:

在这个例子中,变量的值根据屏幕宽度变化:

  • 对于宽度不超过600px的屏幕,背景颜色变为更深的阴影,字体大小减小。
  • 对于宽度在601px到1200px之间的屏幕,背景变为中间色调,字体大小略增大。
  • 对于宽度超过1200px的屏幕,应用原始变量值。

4.2 媒体查询中变量的例子

例子 1: 响应式的内边距和字体大小

CSS
    
      :root {
        --padding: 20px;
        --font-size: 16px;
      }

      .container {
        padding: var(--padding);
        font-size: var(--font-size);
      }

      @media (max-width: 600px) {
        :root {
          --padding: 10px;
          --font-size: 14px;
        }
      }

      @media (min-width: 601px) and (max-width: 1200px) {
        :root {
          --padding: 15px;
          --font-size: 15px;
        }
      }

      @media (min-width: 1201px) {
        :root {
          --padding: 20px;
          --font-size: 16px;
        }
      }
    
  
HTML
    
      <div class="container">
        <p>This is a responsive container with adaptive padding and font size.</p>
      </div>
    
  

解释:

  • 在这个例子中,.container 的内边距和字体大小根据屏幕宽度变化

例子 2: 使用变量和媒体查询进行网站主题化

CSS
    
      :root {
        --bg-color: #ffffff;
        --text-color: #000000;
        --link-color: #3498db;
      }

      body {
        background-color: var(--bg-color);
        color: var(--text-color);
      }

      a {
        color: var(--link-color);
      }

      @media (prefers-color-scheme: dark) {
        :root {
          --bg-color: #000000;
          --text-color: #ffffff;
          --link-color: #9b59b6;
        }
      }
    
  
HTML
    
      <body>
        <p>This text and link will adapt to the user's preferred color scheme. Visit <a href="#">Example.com</a>.</p>
      </body>
    
  

解释:

  • 在这个例子中,网站的颜色方案根据用户的偏好更改(prefers-color-scheme: dark)。 当切换明暗主题时,背景颜色、文本和链接颜色会自动变化。

4.3 响应式网格

使用变量和媒体查询创建响应式网格的例子:

CSS
    
      :root {
        --columns: 1fr;
        --gap: 10px;
      }

      .grid-container {
        display: grid;
        grid-template-columns: var(--columns);
        gap: var(--gap);
      }

      @media (min-width: 600px) {
        :root {
          --columns: 1fr 1fr;
        }
      }

      @media (min-width: 900px) {
        :root {
          --columns: 1fr 1fr 1fr;
        }
      }
    
  
HTML
    
      <div class="grid-container">
        <div>Item 1</div>
        <div>Item 2</div>
        <div>Item 3</div>
        <div>Item 4</div>
      </div>
    
  

解释:

  • 在这个例子中,使用的是响应式网格,根据屏幕宽度改变列数。 窄屏(600px 以下)有一列,中屏(600px 到 900px 之间)有两列, 宽屏(900px 以上)有三列
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION