Html 如何根据媒体查询更改scss变量
我在一个基于Html 如何根据媒体查询更改scss变量,html,css,sass,Html,Css,Sass,我在一个基于scss的网页上工作,遇到了一个问题。我有以下scss功能将我的字体px单位转换为rem @function rem($size) { $remSize: $size / $base-size; @return #{$remSize}rem; } 在上述功能中,$base size是静态的,它保持为16,但我想在针对移动设备时将base size更改为12,以减少整个项目中更改字体大小的冗余。是否有任何方法可以使$base size动态,以便根据屏幕分辨率更改值。任何帮助都将不
scss
的网页上工作,遇到了一个问题。我有以下scss
功能将我的字体px
单位转换为rem
@function rem($size) {
$remSize: $size / $base-size;
@return #{$remSize}rem;
}
在上述功能中,
$base size
是静态的,它保持为16
,但我想在针对移动设备时将base size
更改为12
,以减少整个项目中更改字体大小的冗余。是否有任何方法可以使$base size
动态,以便根据屏幕分辨率更改值。任何帮助都将不胜感激 据我所知,这是不可能的。$base size
变量填充一次,媒体查询在客户端进行
您可以尝试使用新的基本大小变量和值为每个媒体查询编写新函数
变量:
$base-size: 16px;
$base-size-small: 12x;
编辑:出于同样的原因,下面的函数不起作用
职能:
@function rem($size) {
$remSize: $size / $base-size;
@return #{$remSize}rem;
}
@media only screen and (max-width : 768px) {
@function rem($size) {
$remSize: $size / $base-size-small;
@return #{$remSize}rem;
}
}
这可能有很多解决方法,这取决于您可以处理的复杂程度
在不了解项目细节的情况下,这可能是一种解决方案-如果我正确理解您如何使用您的功能:
$base-size: 16px;
@function rem($size, $screen: desktop) {
$remSize: null;
@if ($screen == desktop) {
$remSize: ($size / $base-size) * 16/16;
}
@if ($screen == mobile) {
$remSize: ($size / $base-size) * 12/16;
}
@else {
$remSize: $size / $base-size;
}
@return #{$remSize}rem;
}
.some-text {
font-size: rem(24px); /* = 1.5rem */
}
@media (max-width: 480px) {
.some-text {
font-size: rem(24px, mobile); /* = 1.125rem */
}
}
通过将$screen
参数添加到rem()
函数,您可以在桌面和移动设备之间切换基本大小,而无需更改静态变量
此示例默认为desktop
,并在媒体查询中使用max with
,但也可以默认为mobile
,您可以使用minwidth
进行区分。我找不到此解决方案
因为媒体查询在运行阶段工作。Sass在编译阶段工作
因此,我将html的字体大小设置为62.5%(10px)
然后用rem稍微容易一点
html {
font-size: 62.5%; // 10px;
}
@media screen and (min-width: 769px) {
html {
font-size: 125%; // 20px;
}
}
.example {
padding: 0.5rem; // 5px => 10px
}
更具体地说,我不希望在我的函数中传递任何额外的参数,相反,我的函数应该能够根据媒体屏幕返回基本大小。例如,我的body基本字体大小是16px
,这是另一种字体大小在rem上工作的基础。如果我将body基本字体大小更改为12,则其余的字体大小都会更改它的rem值基于它。。