Scss mixins 可以响应吗

Posted

技术标签:

【中文标题】Scss mixins 可以响应吗【英文标题】:Can Scss mixins be responsive 【发布时间】:2013-04-28 08:26:22 【问题描述】:

在我的 css 中,我为不同的设备设置了不同的字体样式*:

例如

@media only screen and (min-width: 480px) and (max-width: 599px) 
t-heading 
font-size:14px;
 


@media only screen and (min-width: 600px) 
t-heading 
font-size:24px;
 

我想把它们变成一个 mixin,这样我就可以在其他样式中调用这些值,同时仍然保持它们的响应性。

例如

SCSS:

.front 
background: red;
@include t-heading; 

输出的 CSS:

   .front 
    background:red;
    

    @media only screen and (min-width: 480px) and (max-width: 599px) 
    .front 
    font-size:14px;
     

    
    @media only screen and (min-width: 600px) 

    .front 
    font-size:24px;
     
    

这在 SCSS 中可行吗?我曾尝试在媒体查询中包装 mixins,但它似乎不起作用。

*我只是以字体样式为例。

【问题讨论】:

【参考方案1】:

您希望 mixin 包含媒体查询,而不是相反:

@mixin t-heading 
    @media only screen and (min-width: 480px) and (max-width: 599px) 
        font-size:14px;
    

    @media only screen and (min-width: 600px) 
        font-size:24px;
     


.front 
    background: red;
    @include t-heading; 

输出:

.front 
  background: red;

@media only screen and (min-width: 480px) and (max-width: 599px) 
  .front 
    font-size: 14px;
  

@media only screen and (min-width: 600px) 
  .front 
    font-size: 24px;
  

理想情况下,您应该避免经常调用这种 mixin,因为要生成大量额外代码。如果代码是您想要重复的内容,您可能需要考虑使用@extend

%t-heading 
    @media only screen and (min-width: 480px) and (max-width: 599px) 
        font-size:14px;
    

    @media only screen and (min-width: 600px) 
        font-size:24px;
     


.front 
    background: red;
    @extend %t-heading; 


.back 
    @extend %t-heading;

输出:

@media only screen and (min-width: 480px) and (max-width: 599px) 
  .front, .back 
    font-size: 14px;
  

@media only screen and (min-width: 600px) 
  .front, .back 
    font-size: 24px;
  


.front 
  background: red;

【讨论】:

以上是关于Scss mixins 可以响应吗的主要内容,如果未能解决你的问题,请参考以下文章

javascript scss响应#css #scss #responsive #mixin

scss 响应纵横比Mixin

scss 响应式媒体查询Mixin

scss 响应线高度Mixin

scss mixin仅响应IE媒体查询

scss mixin响应