您的位置:

CSS display属性全面解析

CSS display属性用于定义HTML元素如何展示在页面上,是CSS中最常用的属性之一。本篇文章将从多个方面对CSS display属性做详细的阐述,包括display的基本用法、常见属性值、对盒模型的影响、与浮动、定位的关系等。

一、基本用法

display属性可以用于所有元素上,并且需要指定属性值。

    /* 将元素的display属性设置为block */
    div {
        display: block;
    }

上述代码将将div元素的display属性设置为block,使其以块级元素的方式在页面上展示。

二、常见属性值

1. block

block属性值会使元素以块级元素的方式展示在页面上,即元素会从上至下独占一行,除非使用CSS进行样式覆盖。

    /* 将元素的display属性设置为block */
    div {
        display: block;
    }

2. inline

inline属性值会使元素以内联元素的方式展示在页面上,即元素不会独占一行,会和其他元素在同一行内展示。

    /* 将元素的display属性设置为inline */
    span {
        display: inline;
    }

3. inline-block

inline-block属性值会使元素以内联块级元素的方式展示在页面上,即元素在同一行内展示,但可以设置宽度、高度、上下边距和内边距等属性。

    /* 将元素的display属性设置为inline-block */
    button {
        display: inline-block;
        width: 120px;
        height: 40px;
        margin: 20px;
        padding: 10px;
        border-radius: 5px;
        background-color: #007aff;
        color: #fff;
        font-size: 14px;
        font-weight: bold;
    }

4. none

none属性值会使元素在页面上不显示,一般用于动态控制元素的显示和隐藏。

    /* 将元素的display属性设置为none */
    div.warning {
        display: none;
    }

三、对盒模型的影响

display属性对盒模型有一定的影响,这是因为不同的display属性会影响元素的尺寸计算方式。

在盒模型中,元素的尺寸由width、height、padding、border和margin这些属性共同决定。

下面以块级元素为例:

1. width

对于块级元素,设置width属性仅会影响元素的内容区域的宽度(不包括边框和内边距),而不会影响元素的外部尺寸。但是如果设置了box-sizing属性为border-box,则width属性会包括内边距和边框。

    /* 将元素的width属性设置为100px */
    div {
        display: block;
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #000;
        margin: 20px;
        box-sizing: border-box;
    }

2. height

对于块级元素,设置height属性会影响元素的内容区域的高度(不包括边框和内边距),并且会影响元素的外部尺寸。

    /* 将元素的height属性设置为100px */
    div {
        display: block;
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #000;
        margin: 20px;
    }

3. padding

对于块级元素,设置padding属性会影响元素的内容区域大小,会使内容区域缩小,从而影响元素的大小。

    /* 将元素的padding属性设置为10px */
    div {
        display: block;
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #000;
        margin: 20px;
    }

4. border

对于块级元素,设置border属性会影响元素的外部尺寸,从而影响元素的大小。如果元素本身没有设置宽度和高度,则边框会撑开元素的尺寸。

    /* 将元素的border属性设置为1px solid #000 */
    div {
        display: block;
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #000;
        margin: 20px;
    }

5. margin

对于块级元素,设置margin属性会影响元素与其他元素之间的距离。

    /* 将元素的margin属性设置为20px */
    div {
        display: block;
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #000;
        margin: 20px;
    }

四、与浮动、定位的关系

display属性与浮动和定位属性也有一定的关系。

1. 与浮动的关系

对于块级元素,如果设置了float属性为left或right,则会使元素以浮动的方式展示在页面上,从而影响后续元素的布局。在设置了float属性后,元素的display属性会自动变为block。

    /* 将元素的float属性设置为left */
    div {
        float: left;
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #000;
        margin: 20px;
    }

2. 与定位的关系

对于块级元素,如果设置了position属性为absolute,则会使元素以绝对定位的方式展示在页面上,从而脱离文档流并可以自由定位。在设置了position属性后,元素的display属性会自动变为block。

    /* 将元素的position属性设置为absolute */
    div {
        position: absolute;
        top: 100px;
        left: 100px;
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #000;
    }

五、总结

CSS display属性是CSS中最常用的属性之一,对HTML元素的展示方式产生了重要的影响。在使用display属性时,需要根据具体的需求选择合适的属性值,以达到最佳的展示效果。同时,display属性与盒模型、浮动、定位等属性之间也有一定的关系,需要在使用时注意它们之间的影响。

CSS display属性全面解析

2023-05-23
CSS display属性的用法详解

2023-05-12
CSS Flex 属性完全指南

2023-05-19
利用CSS的display属性提升网站排名

2023-05-12
如何优化CSS布局的display属性

2023-05-12
display属性的多方位应用

2023-05-21
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)