如何在SASS中从Web添加.ttf字体文件以在HAML中显示

rob*_*477 1 html sass

@font-face
  font-family: MyFont
  src: url(https://.../font_name.ttf?raw=true)

$font-main: 'MyFont' , sans-serif

.some_class
font-family: $font-main
Run Code Online (Sandbox Code Playgroud)

当我使用来自网络的MyFont时,没有任何效果.怎么做得好?

Syd*_*den 9

您无需添加a .ttf,只需@import在主.scss文件的顶部包含字体网址:

@import url('https://fonts.googleapis.com/css?family=Overpass');
Run Code Online (Sandbox Code Playgroud)

然后使用它:

//store it in variable first
$font-main: 'Overpass', sans-serif;
//to use it   
.selector {
   font-family: $font-main;
}
Run Code Online (Sandbox Code Playgroud)

这对浏览器兼容性最好.

编辑2:如果由于某种原因你还想加载.ttf文件,在顶部的sass文件中设置它的名称和路径:

@font-face {
   font-family: 'myFont';
   src: url("fonts/myFont.ttf") format("truetype");
}
Run Code Online (Sandbox Code Playgroud)

然后使用它:

$font-main: 'myFont', sans-serif;
.selector {
    font-family: $font-main;
}
Run Code Online (Sandbox Code Playgroud)

Demo Snippet 1 - 通过传统CSS加载字体:

@import url('https://fonts.googleapis.com/css?family=Overpass');
Run Code Online (Sandbox Code Playgroud)

@import url('https://fonts.googleapis.com/css?family=Overpass');
div {
  font-family: 'Overpass', sans-serif;
}
span {
  font-family: sans-serif;
}
Run Code Online (Sandbox Code Playgroud)
<div>Overpass font loaded</div>
<span>regular sans-serif</span>
Run Code Online (Sandbox Code Playgroud)

Demo Snippet 2 - 在<head></head>标签之间通过HTML加载字体:

<link href="https://fonts.googleapis.com/css?family=Overpass" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

div {
  font-family: 'Overpass', sans-serif;
}
span {
  font-family: sans-serif;
}
Run Code Online (Sandbox Code Playgroud)
<link href="https://fonts.googleapis.com/css?family=Overpass" rel="stylesheet">
<div>Overpass font loaded</div>
<span>regular sans-serif</span>
Run Code Online (Sandbox Code Playgroud)

演示字体取自此处