SASS 如何帮助我开发响应式网页设计?

2024-03-26

我使用 CSS 进行设计已有多年,但我现在才刚刚学习如何使用 SASS。这是一个非常初学者的问题,所以请耐心等待。

我开始研究 SASS 的原因是因为我想开发响应式网页设计,但希望有一种更好的方法来实现它,而不是为每个屏幕尺寸手动制作不同的样式表。

我相信原则上,像 SASS 这样的 CSS 预处理器应该可以帮助解决这个问题......但目前我不明白如何解决。

如果我有一个带有 id 的 div#squishable,在大屏幕上我希望它的宽度为 1000 像素,在小屏幕上宽度为 100 像素,但在这两种情况下都是红色背景,我想我会这样做:

$color = red;

#squishable {
    backgorundcolor: $color;
}

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

    #squishable {
        width:100px;
    }
}

@media only screen
and (min-width : 1824px) {
    #squishable {
        width:1000px;
    }
}

然而,我不确定这种方法比仅使用 CSS 有多大优势。也许举个例子,它太简单了。但是,无论如何,我不知道我会用 SASS 做什么不同的事情来使响应式网页设计的编码变得更容易。这就是全部内容了吗?

有人可以帮助我克服这个概念障碍,并让我知道如何利用 SASS 来创建响应式元素吗?希望有一个类似于我上面的简单例子?


您绝对可以进一步改进您的工作流程!

使用SASS@mixin, @include, @content和定期的variables您可以设置一个环境,在其中“内联”创建媒体查询,或者如果愿意,也可以在常规选择器内部创建。


这是我的媒体查询混合:

(不用介意愚蠢的变量名和占位符断点)

// Breakpoints
$mq-tiny:   5em;
$mq-small:  10em;
$mq-medium: 15em;
$mq-large:  20em;
$mq-huge:   25em;
$mq-crazy:  30em;

@mixin mq($size, $direction: min-width, $media-type: only all) {
  @if      $size == tiny   { @media #{$media-type} and (#{$direction}: $mq-tiny)   { @content; } }
  @else if $size == small  { @media #{$media-type} and (#{$direction}: $mq-small)  { @content; } }
  @else if $size == medium { @media #{$media-type} and (#{$direction}: $mq-medium) { @content; } }
  @else if $size == large  { @media #{$media-type} and (#{$direction}: $mq-large)  { @content; } }
  @else if $size == huge   { @media #{$media-type} and (#{$direction}: $mq-huge)   { @content; } }
  @else if $size == crazy  { @media #{$media-type} and (#{$direction}: $mq-crazy)  { @content; } }
  @else                    { @media #{$media-type} and (#{$direction}: $size)      { @content; } }
}

这是如何使用它的示例:

SCSS:

.selector {
  width: 100px;

  @include mq(large) {
    width: 1000px;
  }
}

CSS 输出:

.selector {
  width: 100px
}

@media only all and (min-width: 20em) {
  .selector {
    width: 1000px
  }
}

请注意,您不需要使用宽度变量名称。你可以通过1000px代替large如果你想。

您可能还注意到了中的可选参数@mixin; $direction and $media-type。这些参数默认为min-width and only all分别,但如果你通过它们@include它们只会针对该特定元素而改变。

带有其他参数的示例:

SCSS:

.selector {
  @include mq(1000px, min-height) {
    width: 100px;
  }
}

CSS 输出:

@media only all and (min-height: 1000px) {
  .selector {
    width: 100px
  }
}

希望这可以帮助!

Edit: 这是一支笔 http://codepen.io/Mest/pen/mAhxv?editors=110如果你想玩玩它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SASS 如何帮助我开发响应式网页设计? 的相关文章

随机推荐

  • TinyXML:将文档保存为 char * 或字符串

    我尝试使用 TinyXML 从内存中读取和保存 而不是仅读取文件并将其保存到磁盘 看来文档的解析函数可以加载一个char 但是当我完成后 我需要将文档保存到 char 中 有人知道这件事吗 编辑 打印和流媒体功能不是我想要的 它们以可视格式
  • 如何检查传递的迭代器是否是随机访问迭代器?

    我有以下代码 它执行一些迭代器算术 template
  • Damas-Hindley-Milner 类型推理算法实现

    我正在寻找有关知名人士的信息Damas Hindley Milner 算法 https en wikipedia org wiki Hindley E2 80 93Milner type system为函数式语言进行类型推断 尤其是有关实现
  • npm 错误!错误:EPERM:不允许操作,取消链接

    操作系统 Windows 10 npm 版本 6 9 0 节点版本 12 4 0 我正在开发一个博览会应用程序 我想在我的 expo 应用程序上安装所有软件包 npm install 但是 发生了错误 17254 error Operati
  • Firestore 查询成本

    在Firestore上 我有一个社交应用程序 它将每个用户存储为文档 并根据一定距离内的用户进行查询 例如 如果用户启动了该应用程序 并且 50 英里内有 1 000 个用户 那么我是否需要为下载附近所有配置文件的 1000 次读取付费 如
  • 为什么此批处理脚本中的 FOR /f 循环评估空行?

    我正在尝试编写一个批处理脚本 该脚本获取 除其他外 计算机拥有的所有磁盘驱动器的列表 基本代码如下所示 REM Build the list of disk drives to monitor SETLOCAL enabledelayede
  • 如何将自定义对象传递到不同片段中的列表?

    所以我有我的MainActivity其中有一个BottomNavigationView 其中有 3 个不同的选项卡 当我单击它们时 它们会将我重定向到 3 个不同的片段 In FragmentA我有一个RecyclerView对于项目 每个
  • Java 线程 Random.nextLong() 返回相同的数字

    我正在使用一个 OAuth 库 它调用 new Random nextLong 来生成随机数 但它在异步调用上生成相同的随机数 我已将其范围缩小到线程 Random nextLong 以便经常返回相同的确切数字 有谁知道这是否是 Java
  • 将 OpenPGP 签名添加到已签名的文档中? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我们想要实现一个需要多人对文档进行数字签名的工作流程 如果我自己的钥匙串中有多个秘密密钥 我可以做一些简单的事情 gpg sign u userid1
  • 函数不接受 1 个参数 C++

    我的代码有问题 因为我无法弄清楚为什么会收到错误 这是代码 using namespace std void presentValue bool stringChar bool stringVal double futureValConv
  • 如何在 Makefile.am 中指定我想要 C++0x?

    目前我的项目有以下简单的树 Makefile am configure ac README src main cpp src Makefile am bin 我正在尝试遵循以下教程 http www gnu org software aut
  • window.onload = init(); 和有什么区别和 window.onload = init;

    根据我收集的信息 前者将函数返回语句的实际值分配给 onload 属性 而后者分配实际函数 并将在窗口加载后运行 但我还是不确定 感谢任何可以详细说明的人 window onload init 将 onload 事件分配给任何returne
  • 如何在sparkR中创建一个新的DataFrame

    在sparkR中我有data作为数据框 我可以附加一个条目data像这样 newdata lt filter data data column 1 我怎样才能附加多个 假设我想附加向量中的所有元素list lt c 1 6 10 11 14
  • 唯一的表单令牌禁用用户的多任务处理

    如果我想保护我的网站和用户免受跨站伪造 CSRF 攻击 我可以生成一个唯一的令牌 token md5 time rand on 每一页有一个形式 令牌在隐藏的输入字段中提交echo
  • 在Excel 2007中,为什么拖动手动水平分页会导致之前的自动分页变为手动分页?

    在过去的几天里 我一直在编写一些 Excel 2007 VBA 代码 用于管理复杂工作表中的分页符 经过多次挫折后 我刚刚解决了一个让我发疯的 跳页符 问题 并且我做出了以下发现 这让我想到了一个问题 为什么 在分页视图中 使用鼠标拖动ma
  • 如何使用 C# 执行 powershell 脚本并设置执行策略?

    我尝试结合 stackoverflow 中的两个答案 first https stackoverflow com questions 527513 execute powershell script from c sharp with co
  • HMLocation 事件示例

    我正在我的 HMHome 中实现 HMLotinEvent 我正在尝试下面的代码 但我没有得到的一件事是我不知道如何执行功能 例如如果我离开家必须关闭所有灯 我没有找到任何与操作集相关的方法 如果我错了 请纠正我 要求 我想关闭所有配件 以
  • iPad3 高分辨率视网膜显示问题

    我正在使用 Xcode 4 2 iOS SDK 5 0 为 iPad3 Retina Display 开发一个应用程序 我正在使用以下代码片段来检测视网膜 高分辨率 显示 if UIScreen mainScreen respondsToS
  • 没有函数体的函数是什么意思?

    我正在阅读打包的代码time 然后我想知道如何func After d Duration lt chan Time作品 我发现代码如下 func After d Duration lt chan Time return NewTimer d
  • SASS 如何帮助我开发响应式网页设计?

    我使用 CSS 进行设计已有多年 但我现在才刚刚学习如何使用 SASS 这是一个非常初学者的问题 所以请耐心等待 我开始研究 SASS 的原因是因为我想开发响应式网页设计 但希望有一种更好的方法来实现它 而不是为每个屏幕尺寸手动制作不同的样