您的位置:

如何在网站中使用CSS

一、CSS 是什么?

CSS 意为层叠样式表 (Cascading Style Sheets),是一种标记语言,用来描述 HTML 或 XML(包括整个页面以及其中元素的样式)。一份 CSS 文件可以控制整站的样式,让您不必为每个页面重复编写 HTML 标签。

举个例子,下面是一个简单的 HTML 文件:

    
        <!DOCTYPE HTML>
        <html>
        <head>
            <title>网站标题</title>
        </head>
        <body>
            <h1>一级标题</h1>
            <p>文字内容文字内容文字内容文字内容文字内容</p>
            <img src="image.jpg" alt="图片">
        </body>
        </html>
    

现在,假如您想对这个页面中的文字和图片做一些简单的样式设计,您就可以使用 CSS 把页面更好看。下面是一个使用 CSS 的新版本 HTML 文件。

    
        <!DOCTYPE HTML>
        <html>
        <head>
            <title>网站标题</title>
            <style>
            h1 {
                text-align: center;
                font-size: 2em;
                color: #333;
                margin: 0;
                padding: 1em 0;
            }
            p {
                font-size: 1.2em;
                line-height: 1.5;
                margin: 0;
            }
            img {
                max-width: 100%;
            }
            </style>
        </head>
        <body>
            <h1>一级标题</h1>
            <p>文字内容文字内容文字内容文字内容文字内容</p>
            <img src="image.jpg" alt="图片">
        </body>
        </html>
    

在新版本中,我们添加了一个 style 标签(位于 head 元素内),然后定义了三个 CSS 规则,分别将 h1 元素、p 元素和 img 元素的样式设置为:横向居中、字体大小、字体颜色、上下外边距、顶部内边距、字体行高和最大宽度。

二、CSS 的使用方式

CSS 并不局限于上面提到的将样式直接写在 HTML 页面中。在实践中,有三种主要的样式集成方法:

1. 内部样式表

这种方法可以让您将样式直接写在 HTML 页面的 head 部分内。只需要在 head 标签内使用一个 style 标签定义样式即可。

2. 外部样式表

这种方法可以让您将整个站点的样式保存在一个文件内,然后在 HTML 页面内引入该文件。同时,您可以将多个 HTML 页面引用同一个样式表文件。

3. 内联样式

这种方法允许您在特定的元素内写入行内样式,例如:

    
        <h1 style="color: red; font-size: 3em">Heading One</h1>
    

三、CSS 的基本语法

CSS 由两个主要的部分组成:

  • 属性和属性值的组合
  • 选择器

1. 属性和属性值的组合

CSS 中的属性和属性值定义了元素的样式。属性通常描述元素的特征,如字体大小、颜色、背景等。属性值定义了属性的取值范围。例如:

    
        color: red;
        font-size: 1.2em;
        background: #f4f4f4;
    

在上面的例子中,color 属性的属性值为 red,font-size 属性的属性值为 1.2em,background 属性的属性值为 #f4f4f4。

2. 选择器

选择器告诉浏览器哪个 HTML 元素需要应用样式。选择器与元素相匹配,并将样式添加到该元素。

例如,下面的 CSS 代码使用 "h1" 选择器对页面中的所有 h1 标签应用样式:

    
        h1 {
            color: red;
            font-size: 3em;
            margin: 0;
            padding: 0.5em 0;
            text-align: center;
        }
    

四、如何提高CSS的灵活性和可维护性

1. 注释

注释是可读性和可维护性的基石,尤其当你使用一个大型的样式表时更是如此。CSS 支持两种注释风格:单行注释和多行注释。

    
        /* 这是一个注释 */
    

单行注释用于在一行中添加注释,而多行注释用于在多行之间添加注释。用注释将代码分成段落也是个好主意。

2. 模块化和嵌套

当您面对一个拥有大量元素的站点时,您需要确定如何分组元素和关联的样式。为了使 CSS 更灵活和容易维护,您可以将其拆分为多个模块,并为每个模块定义一个明确的用途。

嵌套允许您快速编写易于阅读和修改的复杂 CSS 规则,例如:

    
        .class {
            color: red;
            font-size: 1.2em;
            .child-class {
                text-decoration: underline;
            }
        }
    

在上面的例子中,我们在 .class 的定义内部定义了一个 .child-class,这可避免了样式耦合,从而让 CSS 更灵活和可维护。

3. 继承与层叠

CSS 的继承和层叠使得声明重载和继承是可能的。这种方法让您的样式表更加简洁。

例如,下面的 CSS 代码应用了一个通用的样式表,用于所有元素继承:

    
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: Arial, sans-serif;
        }
    

在上面的代码中,星号选择器指定应用于所有 HTML 元素。这使得整个站点的布局和页面表现更加规范。

五、总结

在这篇文章中,我们简要介绍了 CSS 的基本概念,包括属性和属性值、选择器、注释、模块化和嵌套以及继承和层叠。CSS 能够让我们对网站的样式进行自由的控制,使其更好看、更具吸引力、更易于阅读。

如何在网站中使用CSS

2023-05-12
如何利用CSS创建响应式网站

2023-05-12
如何在网站中使用CSS改变文本样式

2023-05-12
如何使用HTML和CSS创建响应式网页设计

2023-05-12
如何利用Shadow CSS提升网站用户体验

2023-05-12
如何使用CSS创建响应式网站

2023-05-12
如何使用CSS边框类型来增强网站设计

2023-05-12
如何用CSS给网站增加活力

2023-05-12
如何使用CSS背景图像优化网站

2023-05-12
如何使用CSS中的margins优化网站排版

2023-05-12
CSS语言在网站排名中的应用

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)