您的位置:

提升网页字体风格的技巧:使用多种font families CSS

在设计网页时,正确选择字体风格是十分重要的。字体不仅能够给用户带来视觉享受,还能够影响网站的整体风格。在这方面,CSS提供了许多字体样式选项,其中font families CSS是最基本的之一。本文将从多个方面笼统介绍font families CSS的使用技巧。

一、字体风格的分类

在利用font families CSS来设置字体风格前,需要先了解字体风格的分类。

最简单的方式就是将字体分为衬线字体和无衬线字体。衬线字体指的是相对粗细、往外突出的部分,比如宋体、黑体、楷体等;无衬线字体则指的是无论在哪个部分都是一样的粗细的字体风格,比如微软雅黑、Arial、Helvetica等等。

此外,还有手写字体、艺术字体等各种不同的字体风格。

二、使用系统默认字体族

当用户没有选择字体时,CSS会默认使用浏览器中的默认字体族。不同浏览器的默认字体族有所不同,

font-family
属性可让你设置字体族,其中第一个字体名失效,会尝试下一个字体名,直到找到一个可以使用的字体为止。

    body {
      font-family: Arial, Helvetica, sans-serif; 
    }

此处设置了字体族为Arial,如果这款字体不在用户电脑上,浏览器会尝试用Helvetica,如果还是不行,浏览器将会表现无衬线字体族。

三、使用Google Fonts

对于大多数网页设计师来说,使用Google Fonts库是最常见的选择,这使得所有的字体都在同一服务器上,可以大幅提高打开网站的速度。

首先,你需要在Google Fonts上选定目标产品的字体。当你选定字体之后,Google Fonts会提供链接和CSS样式供你使用。

在你要使用的每个字体的引入宣告中,链接关系应包含在标签中作为外部文件来读取文本文件。像这样:

    <link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet'>

你也可以一次选入多个字体:

    <link href='https://fonts.googleapis.com/css?family=Open+Sans|Roboto' rel='stylesheet'>

接下来,在CSS文本文件中插入以下文本,以设置字体:

    body {
        font-family: 'Open Sans', monospace;
    }

在CSS文件的末尾处使用的monospace是一个后备字体,如果Open Sans无法使用,就会使用monospace。

四、在字体组中使用具体的字体族

通过使用字体组,可以在浏览器中提供更多的选择。字体组由一组备用字体族指标组成,因此如果不可用,字体亲属可以转向另一种字体。

字体族名与字体族之间用逗号分隔。而在名字中带有空格的字体族必须被引号固定。

    body {
      font-family: "Times New Roman", Times, serif;
    }

你可以将任何数量的字体族名添加到列表中,允许浏览器从中选择一个可以用的字体族。

五、总结

以上是几个提升网页字体风格的技巧,可以提高用户使用体验、色彩搭配和美观程度。在CSS中选择正确的font families,可以让网站字体更美观、更吸引人,从而提高网站的整体质量和用户使用体验。

提升网页字体风格的技巧:使用多种font families

2023-05-12
when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${item.id} [in template "article/detail/index.ftl" at line 48, column 106] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:481) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:401) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:370) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:104) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:371) at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:321) at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271) at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244) at freemarker.core.Environment.visitIteratorBlock(Environment.java:645) at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94) at freemarker.core.Environment.visit(Environment.java:335) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.process(Environment.java:314) at freemarker.template.Template.process(Template.java:383) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:332) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:266) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:220) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:181) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1431) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1167) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at com.software.filter.HttpSpiderIdentifyFilter.doFilter(HttpSpiderIdentifyFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at java.base/java.lang.VirtualThread.run(VirtualThread.java:309)